【问题标题】:Make sure the first and second differential are continuous while using cubic spline interpolation在使用三次样条插值时确保一阶和二阶微分是连续的
【发布时间】:2013-04-02 10:17:46
【问题描述】:

我正在阅读这个paper。在第 286 页的这篇论文中,他们说他们使用三次样条插值来确保存在连续的一阶微分和二阶微分。

我目前正在尝试在 python 中执行此操作。从这句话我推断他们想要确保彼此相邻的样条的一阶和二阶导数相同。我现在的问题是,我怎么能用 scipy 做到这一点?我发现了这个:http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.splev.html

哪里有参数der(要计算的样条的导数阶数)。那么这个参数是2吗?


*关于这个的后续问题*n,他们稍后使用一阶微分点。我可以假设这些只是每个样条的一阶导数吗?怎么可能得到这些?

【问题讨论】:

    标签: python scipy interpolation


    【解决方案1】:

    scipy.interpolate 计算出的样条曲线为k 具有连续的1 ... k-1:th 导数。对于您的案例订单k=3 将具有连续的一阶和二阶导数。您可以通过样条曲线的数值微分自己检查这是否正确:

    将 numpy 导入为 np 从 scipy 导入插值 将 matplotlib.pyplot 导入为 plt x = np.linspace(0, 10, 100) y = np.sin(x) spl = interpolate.splrep(x, y, k=3) xx = np.linspace(0, 10, 100000) yy = interpolate.splev(xx, spl) d1 = np.diff(yy) / np.diff(xx) d2 = np.diff(d1) / np.diff(xx[1:]) d3 = np.diff(d2) / np.diff(xx[1:-1]) plt.subplot(311) plt.plot(xx[1:], d1) plt.title('一阶导数') plt.subplot(312) plt.plot(xx[1:-1], d2) plt.title('二阶导数') plt.subplot(313) plt.plot(xx[2:-1], d3) plt.title('三阶导数') plt.show()

    三阶导数是第一个显示不连续性的导数。

    二阶导数确实可以通过splev(..., der=2)直接完成。

    (不看论文,我无法评论你的第二个问题。)

    【讨论】:

    • 论文:www.ojtwist.be/ibi.pdf :),下半页第286页。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    相关资源
    最近更新 更多