在自然三次样条插值背后的假设之一是,在插值区间的端点处,样条多项式的二阶导数被设置为等于0。我尝试通过在示例中使用from scipy.interpolate import CubicSplines
来展示使用自然三次样条插值的方法(下面是代码)。
from scipy.interpolate import CubicSpline
from numpy import linspace
import matplotlib.pyplot as plt
runge_f = lambda x: 1 / (1 + 25*x**2)
x = linspace(-2, 2, 11)
y = runge_f(x)
cs = CubicSpline(x, y, bc_type = "natural")
t = linspace(-5, 5, 1000)
plt.plot(x, y, "p", color="red")
plt.plot(t, runge_f(t), color="black")
plt.plot(t, cs(t), color="lightblue")
plt.show()
在这个例子中,外推点的曲率不等于零 - 难道在自然三次样条外推之外的区间内不应该是线性的吗?