scipy.interpolate.PchipInterpolator

class scipy.interpolate.PchipInterpolator(x, y, axis=0, extrapolate=None)[源代码]

PCHIP一维单调三次插值。

xy 是用于逼近某个函数f的值的数组,其中 y = f(x) 。插值使用单调三次样条来寻找新点的值。(PCHIP代表分段三次Hermite插值多项式)。

参数
xndarray

由单调递增的实值组成的一维数组。 x 不能包含重复值(否则过度指定f)

yndarray

实值的一维数组。 y 沿插值轴的长度必须等于 x 。如果是N-D数组,则使用 axis 参数选择正确的轴。

axis整型,可选

y数组中与x坐标值对应的轴。

extrapolate布尔值,可选

是根据第一个和最后一个间隔外推到越界点,还是返回NAN。

参见

CubicHermiteSpline

分段三次插值器。

Akima1DInterpolator

Akima一维插值器。

CubicSpline

三次样条数据插值器。

PPoly

关于系数和断点的分段多项式。

注意事项

内插器在插值数据中保持单调性,如果数据不平滑,则不会超调。

一阶导数保证是连续的,但二阶导数可能在 \(x_k\)

确定点处的导数 \(x_k\)\(f'_k\) ,使用PCHIP算法 [1].

让我们 \(h_k = x_{{k+1}} - x_k\) ,以及 \(d_k = (y_{{k+1}} - y_k) / h_k\) 坡度是在内点吗? \(x_k\) 。如果有迹象表明 \(d_k\)\(d_{{k-1}}\) 是不同的,或者它们中的任何一个等于零,那么 \(f'_k = 0\) 。否则,它由加权调和平均值给出。

\[\frac{w_1+w_2}{f‘_k}=\frac{w_1}{d_{k-1}}+\frac{w_2}{d_k}\]

哪里 \(w_1 = 2 h_k + h_{{k-1}}\)\(w_2 = h_k + 2 h_{{k-1}}\)

末端坡度使用单边方案设置 [2].

参考文献

1

傅瑞奇和布特兰,一种构造局部单调分片三次插值的方法,SIAM J.科学。计算机,5(2),300-304(1984) DOI:10.1137/0905021

2

参见例如C.Moler的《用Matlab进行数值计算》,2004年。 DOI:10.1137/1.9780898717952

属性
axis
c
extrapolate
x

方法:

__call__ \(X[, nu, extrapolate] )

计算分段多项式或其导数。

derivative \([nu] )

构造一个新的分段多项式来表示导数。

antiderivative \([nu] )

构造一个新的分段多项式来表示该反导数。

roots \([discontinuity, extrapolate] )

求分段多项式的实根。