matlab lsqcurvefit 参数估计之旅
计算科学
matlab
误差估计
曲线拟合
2021-12-02 09:48:59
1个回答
lsqcurvefit 如何在参数估计的每次迭代中估计误差?
它既检查移动了多远(即我不再移动太多了吗?然后停止),以及梯度的范数(最小值是梯度为零时)。我认为还有第三种容差,“功能容差”,我不太清楚。这一切都在文档中(搜索公差)。
为什么 lsqcurvefit 每次都找不到相同的解决方案?
Levenberg-Marquardt 是一种局部非线性最小二乘优化器,因此它取决于初始条件(因此称为局部)。原因是它使用了牛顿法(这显然是局部的:它下降到最接近的最小值)和梯度下降(它总是走下坡路,因此达到局部最小值)。结果是它找到了最接近您开始的地方的最小值,因此它具有初始条件依赖性。
应该采取哪些方法来选择解决方案?
你应该看看全局优化算法。MATLAB 的全局优化工具箱还可以,但我发现 Julia 的 JuMP 和 Optim.jl 提供的一连串方法更适合大多数问题。这些使您可以访问各种包,并且您可以使用相同的代码来调用所有不同的求解器。我倾向于使用 NLopt 的一些方法取得最大的成功,尽管 IPOPT 也可以做得很好。
其它你可能感兴趣的问题
