def lm_fit_step (   self,
  trace = 0 
)

Take an L-M fit step, and adjust the L-M parameter based on the behavior of chi^2.

Parameters:
trace If True (or non-zero), print out diagnostics on each step.

Definition at line 638 of file fitting_toolkit.py.

00638                                   : 
00639         "take one Levenberg-Marquardt step and adjust lambda based on chi^2"
00640         n=self.pointcount
00641         if self.firstpass: #do an initial measurement of chi2 first time through
00642             self.lm_lambda_recipe()
00643             self.funcvals=self.compute_funcvals()
00644             self.set_weights()
00645             self.compute_chi2()
00646             self.firstpass=0 #we've done all the first-pass stuff now
00647             
00648         save_chi2=self.chi2
00649         save_params=self.funcparams
00650         save_vals=self.funcvals
00651         self.hessian_compute_fit(self.lm_lambda)
00652         self.lm_lambda_recipe(save_chi2, self.chi2)
00653         if save_chi2 < self.chi2: #ouch, bad step, back up
00654             if trace:
00655                 print "rejected step: old chi2=%.3e, new chi2=%.3e, lambda=%.3e" % (save_chi2, self.chi2, self.lm_lambda)
00656                 print "params =", self.funcparams
00657             self.funcparams=save_params
00658             self.funcvals=save_vals
00659             self.chi2=save_chi2
00660             return 1 #flag rejected step
00661         else:
00662             if trace:
00663                 print "accepted step: old chi2=%.3e, new chi2=%.3e, lambda=%.3e" % (save_chi2, self.chi2, self.lm_lambda)
00664                 print "params =", self.funcparams
00665             return 0 #flag accepted step
00666 


Generated on Wed Nov 21 10:18:32 2007 for analysis by  doxygen 1.5.4