如何解决在给定的极值点上强制拟合样条曲线
我有一组点,当用直线连接时,如下图所示:
从线性拟合中可以看出,曲线所拟合的点是曲线中的极值,即局部最大值和最小值。
我想通过这些点拟合样条曲线或平滑曲线,以使这些点仍保持局部最大值/最小值。 我使用的是python,但是任何以任何语言甚至普通数学完成上述工作的算法都值得赞赏。
我尝试使用InterpolatedUnivariateSpline
中的scipy.interpolate
,等级2和3的结果显示如下:
第2阶曲线接近预期的结果,但是我有办法施加这些点仍为极值的条件吗?
解决方法
对于所示数据,PchpInterpolator可能会做。
原因是,如果左侧和右侧的线性斜率具有不同的符号,则算法会在数据点处强制零斜率。
演示:
>>> from scipy.interpolate import pchip
>>> xx = np.arange(9)
>>> yy = np.cos(xx*2*np.pi/8) + 0.4*(-1)**(xx)
>>> pch = pchip(xx,yy)
>>> pch(xx,nu=1) # derivative at data points
array([-1.68578644,0.,1.68578644])
,
鉴于您的约束,您将需要进行函数拟合,而不是曲线拟合。
所以您需要一个具有约束条件的多项式
P(xi) = yi
P'(xi) = 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。