我的数据总是在二次多项式(二次函数)上。我要尽可能精确地找到插值函数的峰值。在
到目前为止,我一直在使用interp1d
,然后使用linspace
和一个简单的for
循环提取峰值。虽然您可以在linspace
中使用大量新生成的样本,但是使用拟合多项式的导数仍然可以更精确。
我还没有找到使用interp1d
来实现这一点的方法。在
现在我发现的唯一一个返回拟合多项式系数的函数是polyfit
,但是这个拟合函数非常不准确(大多数时候函数甚至不经过数据点)。在
我尝试过使用UnivariateSpline
,拟合函数似乎非常精确,而且得到导数样条及其根非常简单。在
其他多项式拟合函数(BarycentricInterpolator
,KroghInterpolator
,…)表示,出于数值稳定性的原因,它们不计算多项式系数。在
UnivariateSpline
及其导数有多精确,或者还有更好的选择吗?在
最后我选择了
polyfit
。虽然拟合函数没有完全通过数据点,但最终结果仍然很好。从返回的系数中,我得到了所需的峰值的x和y坐标。在如果您只需要找到二次多项式的最小值/最大值,为什么不这样做:
相关问题 更多 >
编程相关推荐