scipy.interpolate.PchipInterpolator¶
- class scipy.interpolate.PchipInterpolator(x, y, axis=0, extrapolate=None)[源代码]¶
PCHIP一维单调三次插值。
x
和y
是用于逼近某个函数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] )求分段多项式的实根。