如何在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
获得样条系数。
我有一个包含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
获得样条系数。