几周前,我开始在 Matlab 中从头开始编写 Levenberg-Marquardt 算法。我对数据的多项式拟合很感兴趣,但我无法达到我想要的准确度。在我尝试了其他多项式之后,我使用了五阶多项式,这似乎是最好的选择。无论我尝试实施何种改进,该算法总是收敛到相同的函数最小化。到目前为止,我没有成功添加以下功能:
- 测地线加速度项作为二阶校正
- 更新阻尼参数的延迟满足
- 增益因子更接近高斯-牛顿方向或最陡下降方向,具体取决于迭代。
- 有限差分法的中心差分和前向差分
我没有非线性最小二乘的经验,所以我不知道是否有办法进一步最小化残差,或者这种方法是否没有更多的改进空间。我在下面附上最后一次迭代的多项式行为的图像。如果我运行代码进行更多迭代,曲线最终不会在迭代之间发生变化。据观察,从时间 = 0 到时间 = 12 非常适合。但我无法修复从时间 = 12 到时间 = 20 的函数行为。任何帮助将不胜感激。