[Index for tmp_for_tar/deriv_min.doc] [Return to Master Index]

test_conjgrad_min

(tmp_for_tar/deriv_min.doc/test_conjgrad_min.m)


Function Synopsis

df = dtestf(x)

Help text


 Test conjgrad_min

 Last modified: October 2000



Listing of function file tmp_for_tar/deriv_min.doc/test_conjgrad_min.m



##
## Test conjgrad_min


## Author:        Etienne Grossmann  <etienne@isr.ist.utl.pt>
## Last modified: October 2000

1 ;

N = 1+floor(30*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
function v = testfunc(x)
  global offset ;
  global truemin ;
  global metric ;
  v = sum((x-truemin)'*metric*(x-truemin))+offset ;
end

function df = dtestf(x)
  global truemin ;
  global metric ;
  df = 2*(x-truemin)'*metric ;
end

xinit = 10*randn(N,1) ;

[x,v,niter] = conjgrad_min("testfunc","dtestf",xinit) ;
printf("test_conjgrad_min\n");

if any(abs( x-truemin ) > 100*sqrt(eps) ) ,
  printf("NOT OK 1\n");
else
  printf("OK 1\n");
end

if  v-offset  > 1e-8 ,
  printf("NOT OK 2\n");
else
  printf("OK 2\n");
end

printf("niter=%d  N=%d  errx=%8.3g   errv=%8.3g\n",...
       niter,N,max(abs( x-truemin )),v-offset);


Produced by oct2html on Tue Oct 17 10:08:37 2000
Cross-Directory links are: ON