2

我有一个包含n个二维点 (x 0 ,y 0 ),(x 1 ,y 1 ), ... (x n-1 ,y n-1 ) 的数据集,其中 x 0 < x 1 < .. . < x n-1 . 我想使用三次样条插值这个数据集,并在两个端点(x 0 ,y 0 ) 和 (x n-1 ,y n-1 ) 设置显式斜率值 S BEGIN和 S END。我的意思是,让产生的 n-1 个三次函数为 f 0 (x)=a 0 x 3 +b0 x 2 +c 0 x+d 0 , f 1 , ... , f n-2 , 然后 df 0 /dx(x 0 ) = S BEGIN , df n-2 /dx(x n-1 ) = S结束

我查看了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 ,a 1 ,...,d n-2应该全部建立在f.

4

1 回答 1

1

这是不可能的interp1d。您可以从中获得样条系数splrep

于 2015-06-29T22:01:17.487 回答