[Index for tmp_for_tar/deriv_min.doc]
[Return to Master Index]
compare_conjgrad_dfp
(tmp_for_tar/deriv_min.doc/compare_conjgrad_dfp.m)
Function Synopsis
dt = mytic() # Returns the cputime since last 'mytic'
Help text
Compare conjgrad_min and dfp_min with either a quadratic function or a
"grating" function (see defs below).
Last modified: October 2000
Listing of function file tmp_for_tar/deriv_min.doc/compare_conjgrad_dfp.m
##
## Compare conjgrad_min and dfp_min with either a quadratic function or a
## "grating" function (see defs below).
##
## Author: Etienne Grossmann <etienne@isr.ist.utl.pt>
## Last modified: October 2000
1 ;
clear dff
clear ff
function dt = mytic() # Returns the cputime since last 'mytic'
static last_mytic = 0 ;
[t,u,s] = cputime() ;
dt = t - last_mytic ;
last_mytic = t ;
endfunction
for cnt = 0:1,
if cnt = 0, # Quadratic function
printf ("\n Comparing with quadratic function\n");
## N = 150+floor(100*rand(1)) ;
N = 15+floor(10*rand(1)) ;
global truemin ;
truemin = randn(N,1) ;
global offset ;
offset = 100*randn(1) ;
global metric ;
metric = randn(2*N,N) ;
metric = metric'*metric ;
if N>1,
[u,d,v] = svd(metric);
d = (0.1+[0:(1/(N-1)):1]).^2 ;
metric = u*diag(d)*u' ;
end
eval (["function v = ff(x)\n",\
" global offset ;\n",\
" global truemin ;\n",\
" global metric ;\n",\
" v = sum((x-truemin)'*metric*(x-truemin))+offset ;\n",\
"endfunction"]);
eval (["function df = dff(x)\n",\
" global truemin ;\n",\
" global metric ;\n",\
" df = 2*(x-truemin)'*metric ;\n",\
"endfunction"]);
xinit = 10*randn(N,1) ;
else # Grating function
printf ("\n Comparing with Grating function\n");
N = 2; # Nparams
truemin = [0;0] ;
xinit = 10*randn(N,1) ;
offset = 0;
eval (["function v = ff (x)\n",\
" v = x(1)^2 * (1+sin(x(2)*3*pi)^2) + x(2)^2;\n",\
"endfunction;\n"]);
eval (["function dv = dff (x)\n",\
" u = x(1); v = x(2);\n",\
" w = u^2 * (1+sin(v*3*pi)^2) + v^2;\n",\
" dv = [2*u * (1+sin(v*3*pi)^2), u^2 * sin(v*2*3*pi) + 2*v ];\n",\
"endfunction"]);
end
gtol = 3*eps;
printf("gonna do : dfp_min\n");
mytic() ;
[xdfp,vdfp,ndfp] = dfp_min("ff","dff",xinit,"gtol",3*eps) ;
tdfp = mytic() ;
printf("gonna do : conjgrad_min\n");
mytic() ;
[xcg,vcg,ncg] = conjgrad_min("ff","dff",xinit,"gtol",3*eps) ;
tcg = mytic() ;
printf("CG : niter=%4d N=%4d time=%8.3g errx=%8.3g errv=%8.3g\n",...
ncg,N,tcg,max(abs( xcg-truemin )),vcg-offset);
printf("DFP : niter=%4d N=%4d time=%8.3g errx=%8.3g errv=%8.3g\n",...
ndfp,N,tdfp,max(abs( xdfp-truemin )),vdfp-offset);
end
Produced by oct2html on Tue Oct 17 10:08:37 2000
Cross-Directory links are: ON