如何在scipy.interpolate中设置三次样条插值的第一个和最后一个斜率?

How to set first and last slope of cubic spline interpolation in scipy.interpolate?

我有一个包含n个二维点的数据集(x0,y0),(x1,y1), ... (xn-1 ,yn-1) 其中 x0 < x1 < ... < xn-1。我想使用三次样条 对这个数据集进行插值,在两个端点设置明确的斜率值 SBEGIN 和 SEND (x0,y0) 和 (xn-1,yn-1)。我的意思是,让生成的 n-1 三次函数为 f0(x)=a0x3+b0x2+c0x+d0, f1, ..., fn-2, 然后 df0 /dx(x0) = SBEGIN, dfn-2/dx(xn-1) = SEND.

我查看了 scipy.interpolate 但无法找到如何将 SBEGIN 和 SEND 设置为当前实例.

import numpy
import scipy

xi = numpy.array([1, 2, 3, 4, ... , 100])
yi = numpy.array([3, 5, 18, 9, ... , 42])
s_begin = 2
s_end = -1

# How can I set s_begin and s_end?
f = scipy.interpolate.interp1d(xi,yi,type='cubic')

另外,我想知道如何得到4(n-1)个系数a0,b0,c 0,d0,a1,...,dn-每个三次样条的 2 应该全部构建在 f.

interp1d 无法做到这一点。不过,您可以从 splrep 获得样条系数。