curve_fit在颠簸的数据点上表现不佳

问题描述

我有以下data set,其中有几个颠簸和低谷。但是,当我尝试使用来自curve_fit scipy模块的Python optimize拟合曲线时,它并不能很好地再现凹凸。我尝试了7-8年级的多项式和正弦运算,但是找不到合适的东西。

我假设使用7-8年级的多项式,我应该能够再现这些颠簸(对于7年级的poly,我将具有3个颠簸和3个谷,这足够了),但是,我只能得到2碰到配件。

是否有比curve_fit更好的在Python中拟合函数方法,或者在拟合时我做错了什么?

在此先感谢您提供的解决方案。

解决方法

正如我在学校中学到的那样,多项式通常很难适应曲线(精确拟合,10个测量点可得出9年级的多项式)。当然,该曲线在最内层的4或5个点有意义,但在其前后均不接近“真实”值。四年级或五年级之前的所有内容都可以使用,之后我建议您研究花键。我认为curve_fit不能完全符合您的测量点的多项式,因此此“可能”有效。问题是,您的混乱点没有描述多项式,而我并不打算这样做。
由于基函数是2次多项式s(t) = at^2 + v0t + s0,因此可以很好地(应该是)使用落下的岩石或破碎的汽车(随时间变化的距离)的测量点拟合2次多项式。

TL; DR除非基函数为多项式,否则多项式拟合是错误的,在此使用样条拟合。

,

使用高阶多项式,您可以得到对我来说不错的拟合。该图显示了度21多边形(绿色)和度41多边形(蓝色)与原始(红色)的拟合度。 虽然多项式确实有其局限性,但它们通常确实合理。 fits by least squares using orthogonal polynomials