如何改进 Levenberg-Marquardt 的多项式曲线拟合方法?
How to improve Levenberg-Marquardt's method for polynomial curve fitting?
几周前,我开始在 Matlab 中从头开始编写 Levenberg-Marquardt 算法。我对数据的多项式拟合很感兴趣,但我一直无法达到我想要的精度水平。在尝试其他多项式后,我使用了五阶多项式,这似乎是最佳选择。无论我尝试实现什么改进,该算法总是收敛到相同的函数最小化。到目前为止,我没有成功添加以下功能:
- 作为二阶校正的测地加速度项
- 更新阻尼参数的延迟满足
- 增益因子更接近高斯-牛顿方向或
取决于迭代的最速下降方向。
- 有限差分法的中心差分和正向差分
我没有非线性最小二乘方面的经验,所以我不知道是否有一种方法可以将残差最小化得更多,或者这种方法是否没有更多的改进空间。我在下面附上了最后一次迭代的多项式行为的图像。如果我 运行 更多迭代的代码,曲线最终不会从迭代到迭代发生变化。据观察,从 time = 0 到 time = 12 非常合适。但是我无法修复从 time = 12 到 time = 20 的函数行为。非常感谢任何帮助。
拟合多项式似乎不是最好的主意。您的数据集看起来像指数瞬态,具有水平渐近线。将多项式强制为该多项式将无法正常工作。
我宁愿尝试使用简单的模型,例如
A (1 - e^(-at)).
用肉眼,A ~ 15
。你应该看看 log(15 - y).
的值
几周前,我开始在 Matlab 中从头开始编写 Levenberg-Marquardt 算法。我对数据的多项式拟合很感兴趣,但我一直无法达到我想要的精度水平。在尝试其他多项式后,我使用了五阶多项式,这似乎是最佳选择。无论我尝试实现什么改进,该算法总是收敛到相同的函数最小化。到目前为止,我没有成功添加以下功能:
- 作为二阶校正的测地加速度项
- 更新阻尼参数的延迟满足
- 增益因子更接近高斯-牛顿方向或 取决于迭代的最速下降方向。
- 有限差分法的中心差分和正向差分
我没有非线性最小二乘方面的经验,所以我不知道是否有一种方法可以将残差最小化得更多,或者这种方法是否没有更多的改进空间。我在下面附上了最后一次迭代的多项式行为的图像。如果我 运行 更多迭代的代码,曲线最终不会从迭代到迭代发生变化。据观察,从 time = 0 到 time = 12 非常合适。但是我无法修复从 time = 12 到 time = 20 的函数行为。非常感谢任何帮助。
拟合多项式似乎不是最好的主意。您的数据集看起来像指数瞬态,具有水平渐近线。将多项式强制为该多项式将无法正常工作。
我宁愿尝试使用简单的模型,例如
A (1 - e^(-at)).
用肉眼,A ~ 15
。你应该看看 log(15 - y).