如何改进 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).

的值