Re: LevenbergMarquardt

*To*: mathgroup at smc.vnet.net*Subject*: [mg86598] Re: LevenbergMarquardt*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Fri, 14 Mar 2008 04:18:34 -0500 (EST)

On 3/13/08 at 4:33 AM, ausman at okstate.edu (Ausman, Kevin) wrote: >Here is what I am trying to do: >result=FindMinimum[Sum[residFunc[xptData,testInstFunc,0,t, >numRateConst, >rateConst/.{kauto=AEk1float,icauto=AEic1float},numInitConc,ic/.{ >kauto=AEk >1float,icauto=AEic1float},ec/.{kauto=AEk1float,icauto=AEic1float}, >rateEq, >finalTime][[i]]^2,{i,1,Length[xptY]}],{{k1float,6000},{ic1float,0. >003}},Method=AELevenbergMarquardt] >The problem is that without specifying LevenbergMarquardt as the >method I get an error that the gradient is effectively zero, but >when I do specify Levenberg Marquardt it says that my function isn't >of the appropriate form: <snip> >The parameters for residFunc are some experimental data and some >fitting paramters (typically in lists), and it returns a >one-dimensional list of numbers. This last comment suggest you want to do a least squares fit of data to a specified model. While it should be possible to do this with FindMinimum, why not use FindFit? FindFit is specifically designed to solve a least squares problem while FindMinimum is a more general tool. As a general rule of thumb, tools more specifically designed for a given problem in Mathematica will outperform more general tools for that problem. Like FindMinimum, the default method for FindFit is Automatic. However, I believe FindFit tries Levenberg-Marquardt first with this setting since that will generally produce better results for a non-linear least squares problem.

**Follow-Ups**:**RE: Re: LevenbergMarquardt***From:*"Ausman, Kevin" <ausman@okstate.edu>