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

时间:2015-06-29 21:56:48

标签: python numpy scipy interpolation cubic-spline

我有一个包含 n 二维点的数据集(x 0 ,y 0 ),(x 1 < / sub>,y 1 ),...(x n-1 ,y n-1 )其中x 0 < / sub>&lt; x 1 &lt; ......&lt; X <子> N-1 。我想使用三次样条插值此数据集,并在两个端点设置显式斜率值S BEGIN 和S END (x 0 ,y 0 )和(x n-1 ,y n-1 )。我的意思是,让生成的n-1立方函数为f 0 (x)= a 0 x 3 + b 0 < / sub> x 2 + c 0 x + d 0 ,f 1 ,...,f < sub> n-2 ,然后df 0 / dx(x 0 )= S BEGIN ,df n- 2 / dx(x n-1 )= S END

我查看scipy.interpolate但无法找到如何将S BEGIN 和S END 设置为当前实例。

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)个系数a 0 ,b 0 ,c 0 ,d 0 ,每个三次样条的 1 ,...,d n-2 ,它们都应该在{{1}中构建}。

1 个答案:

答案 0 :(得分:1)

interp1d无法做到这一点。您可以从splrep获取样条系数。