PchipInterpolator#
- class scipy.interpolate.PchipInterpolator(x, y, axis=0, extrapolate=None)[source]#
PCHIP 1-D 單調三次內插。
x
和y
是用於逼近某函數 f 的值陣列,其中y = f(x)
。內插器使用單調三次樣條來尋找新點的值。(PCHIP 代表 Piecewise Cubic Hermite Interpolating Polynomial,分段三次 Hermite 內插多項式)。- 參數:
- xndarray,形狀 (npoints, )
單調遞增實數值的一維陣列。
x
不能包含重複值(否則 f 將被過度指定)- yndarray,形狀 (…, npoints, …)
實數值的 N 維陣列。
y
沿內插軸的長度必須等於x
的長度。使用axis
參數來選擇內插軸。- axisint,可選
y
陣列中對應於 x 座標值的軸。預設為axis=0
。- extrapolatebool,可選
是否基於第一個和最後一個區間外插到超出範圍的點,或返回 NaN。
另請參閱
CubicHermiteSpline
分段三次內插器。
Akima1DInterpolator
Akima 1D 內插器。
CubicSpline
三次樣條資料內插器。
PPoly
以係數和斷點表示的分段多項式。
Notes
內插器保留內插資料的單調性,如果資料不平滑,則不會過衝。
一階導數保證是連續的,但二階導數可能在 \(x_k\) 處跳躍。
通過使用 PCHIP 演算法 [1] 確定點 \(x_k\) 處的導數 \(f'_k\)。
令 \(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]F. N. Fritsch 和 J. Butland,用於建構局部單調分段三次內插器的方法,SIAM J. Sci. Comput., 5(2), 300-304 (1984)。 DOI:10.1137/0905021。
[2]參見,例如,C. Moler, Numerical Computing with Matlab, 2004。 DOI:10.1137/1.9780898717952
- 屬性:
- axis
- c
- extrapolate
- x
方法
__call__
(x[, nu, extrapolate])評估分段多項式或其導數。
derivative
([nu])建構一個新的分段多項式,表示導數。
antiderivative
([nu])建構一個新的分段多項式,表示反導數。
roots
([discontinuity, extrapolate])尋找分段多項式的實根。