关于scipy.interpolate.interp1d的样条类型及边界约束的技术问询
scipy.interpolate.interp1d 样条类型与边界约束说明
1. kind='cubic' 对应的三次样条实现
使用 interp1d 并设置 kind='cubic' 时,默认采用的是三次B样条插值,边界约束为非节点(not-a-knot)条件。这种约束的核心是强制插值区间的第一个内部节点处三阶导数连续,最后一个内部节点处三阶导数也连续,让首尾两个相邻区间的三次多项式完全重合,避免端点处引入额外的人为约束。
2. kind='quadratic' 对应的边界约束
当设置 kind='quadratic' 时,采用的是二次B样条插值,边界约束同样为非节点(not-a-knot)条件。对于二次样条,该约束会强制第一个内部节点处二阶导数连续,最后一个内部节点处二阶导数也连续,确保首尾相邻区间的二次多项式保持一致,维持插值曲线的平滑性。
示例代码
import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import interp1d def f(x): return np.exp(np.sin(-x)) a=np.linspace(-6,3,100) b=f(a) x = np.linspace(-6, 3, 5) y = f(x) splineFunc= interp1d(x=x, y=y, kind='cubic') plt.plot(a,b) plt.plot(a, splineFunc(a)) plt.show()
内容的提问来源于stack exchange,提问作者Golden Fish
相关产品推荐
相关产品推荐

