python - scipy.interpolate.make_interp_spline如何检索所有系数?

标签 python scipy interpolation coefficients cubic-spline

我有以下程序:

nknots = 4
x_i = [0, 1, 2, 3]
y_i = [1, np.exp(1), np.exp(2), np.exp(3)]
coeff = interpolate.make_interp_spline(x_i, y_i, bc_type="natural")

我想使用坐标由 x_i 和 y_i 数组给出的结构造三次样条。但是,我很难获得所有系数。三次样条函数具有以下形式:

y_i(x) = a + b*(x - x_i) + c*(x - x_i)^2 + d*(x - x_i)^3

当我这样做的时候

print(coeff(x_i))

我只得到a值的数组:

[ 1.          2.71828183  7.3890561  20.08553692]

但是,我缺少 bcd 系数的数组。我如何提取这些?或者我缺少什么步骤?我阅读了 make_interp_spline 上的 scipy 文档,但我不明白如何获取 bcd 系数。

最佳答案

我建议查看interpolate.CubicSpline 。如果你想要的是多项式系数,那就方便多了。使用您的变量:

spl = interpolate.CubicSpline( x_i, y_i )
spl.c

array([[-1.57973952e-01,  2.93118310e-01, -1.35144359e-01],
       [ 1.11022302e-16, -4.73921855e-01,  4.05433076e-01],
       [-3.01723742e-01, -7.75645598e-01, -8.44134377e-01],
       [ 1.00000000e+00,  5.40302306e-01, -4.16146837e-01]])

参见 PPoly有关如何存储分段多项式系数的文档。

附录: 可以make_interp_spline的输出中提取系数,但是这并不简单它需要@ev-br描述的额外步骤,因为“B样条的“系数”(重点是 B)与多项式系数不同。

关于python - scipy.interpolate.make_interp_spline如何检索所有系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63679091/

相关文章:

python - SKlearn KFold 生成 NaN 值

Python 最小二乘自然样条

python - 如何解决TiffFile错误: Not a Tiff File and Byte Problem with KeyError: b'\x89P'

python - 通过使用 NumPy/SciPy 检测向量的局部最大值来提取直方图模式

python - pandas resample interpolate 正在生成 NaN

python - 生成带条件列表的产品

python - 向数据框中添加几列,计算与其他 3 列相对应的中位数

python - 防止变量关键字参数中的拼写错误

python - 使用 np.interp 插值缺失值

javascript - 如何使用 Javascript 输出带有变量插值的多行 HTML?