2012-05-13 15 views
-2

任何人都知道我在哪里找到一个.m(matlab)文件,用Levenberg-Marquardt修改牛顿方法来优化函数?Levenberg-Marquardt优化

感谢

+2

您是否在[Matlab文件交换](http://www.mathworks.com/matlabcentral/fileexchange/)上搜索? –

回答

3

我总是在file exchange搜索开始。发现一个LMF nonlinear solution。在optimization toolbox中似乎也有一个lsqnonlin函数。当然,这是一笔不小的开支,并且限制了代码的可移植性(这些天我使用Python的很多原因之一)。

+0

谢谢;),这是我的问题。下一个点是x'= x + d,位移d从方程的线性集合中求解Hd = -gradf – Monique

+0

谢谢;),这是我的问题。下一个点是x'= x + d,位移d由方程Hd = -gradf(H是Hessian)的线性集合求解,但是存在一个问题,如果Hessian <0,点x'不能工作,因为f(x')> f(x)和我正在试图最小化函数intead最大化。因此我认为我应该使用Levenberg-Marquardt方法来稳定常规。我想我应该计算Hessian的特征值(例如E = eig(H))并求解(H + a diag(E))d = -grad f,或许我应该用单位矩阵替换diag(E)?,这是我的代码 – Monique

2

如果符合您的要求,您可以尝试使用CMPFITMATLAB MEX version

+0

^this,或者在Windows上使用Matlab中的interop,并调用CSMPFIT:https://csmpfit.codeplex.com/ –