Revision 1205 trunk/src/linad99/newfmin.cpp
newfmin.cpp (revision 1205)  

184  184 
QuasiNewton function minimizer. 
185  185 
\param _f Value of function to be minimized. 
186  186 
\param _x Vector of independent variables. 
187 
\param _g Vector containing the partial derivatives of _f with respect to


187 
\param _g Vector containin the partial derivatives of _f with respect to 

188  188 
each independent variable. The gradient vector returned by \ref gradcalc. 
189  189 
*/ 
190  190 
void fmm::fmin(const double& _f, const dvector &_x, const dvector& _g) 
...  ...  
312  312 
ib=iv+n; 
313  313 
iexit=0; 
314  314 
tracing_message(traceflag,"A12"); 
315 
// Initialize hessian to diagonal=1 and the rest=0 

315  316 
h.elem(1,1) = 1; 
316  317 
for (i=2; i<=n; i++) 
317  318 
{ 
...  ...  
437  438 
{ 
438  439 
fmmdisp(x, g, n, this>scroll_flag,noprintx); 
439  440 
} 
440 
label21 : 

441 
label21 : // Compute


441  442 
itn=itn+1; 
442  443 
for (i=1; i<=n; i++) 
443  444 
x.elem(i)=xx.elem(i); 
...  ...  
632  633 
if(fabs(gys/gso)<=.95 && ic > 4) 
633  634 
goto label50; 
634  635 
if(gys>0.0) 
635 
goto label40;


636 
goto label40; 

636  637 
tot+=alpha; 
637  638 
z=10.0; 
638  639 
if(gs<gys) 
...  ...  
723  724 
for (i=1;i<=n;i++) 
724  725 
g.elem(i)=w.elem(i); 
725  726 
goto label20; 
726 
label70: 

727 
label70: // Hessian update


727  728 
w.elem(iv+1)=w.elem(iu+1); 
728  729 
pfmintime>get_elapsed_time_and_reset(); 
729  730 
for (i=2;i<=n;i++) 
Also available in: Unified diff