為一組點插值多項式。
多項式通過所有對(xi,yi)。可以在每個點xi處另外指定多個導數;這可以通過重複值xi并将導數指定為連續的yi值來完成。
允許評估多項式及其所有導數。出于數值穩定性的考慮,盡管可以通過評估所有導數來獲得多項式的系數,但該函數不會計算多項式的系數。
參數:
xi:array_like, length N已知的x-coordinates。必須按升序排序。
yi:array_like已知的y-coordinates。當xi連續出現兩次或兩次以上時,相應的yi表示導數值。
axis:int, 可選參數yi數組中的軸對應于x坐标值。
注意:
請注意,此處實作的算法不一定是已知的數值最穩定的算法。此外,即使在一個精确的計算世界中,除非非常仔細地選擇x坐标-切比雪夫零點(例如cos(i * pi /n))是一個不錯的選擇-多項式插值本身由于Runge現象是一個非常ill-conditioned的過程。一般而言,即使使用well-chosen x值,度數也超過約30會導緻此代碼中的數值不穩定問題。
參考文獻:
Krogh,“多項式插值和數值微分的有效算法”,1970年。
例子:
要生成在0和1處為零且在0處具有導數2的多項式,請調用
>>> from scipy.interpolate import KroghInterpolator
>>> KroghInterpolator([0,0,1],[0,2,0])
這構造了二次2 * X ** 2-2 * X。微分條件由xi數組中的重複零表示;相應的yi值為函數值0和2的導數。
再舉一個例子,給定每個點的xi,yi和一個導數ypi,可以将适當的數組構造為:
>>> xi = np.linspace(0, 1, 5)
>>> yi, ypi = np.random.rand(2, 5)
>>> xi_k, yi_k = np.repeat(xi, 2), np.ravel(np.dstack((yi,ypi)))
>>> KroghInterpolator(xi_k, yi_k)
要生成vector-valued多項式,請為yi提供一個高維數組:
>>> KroghInterpolator([0,1],[[2,3],[4,5]])
這構造了一個線性多項式,給定了(2,3)為0和(4,5)為1。
屬性
dtype:
方法:
__call__(self, x)
評估插值
derivative(self, x[, der])
評估點x處的多項式的一個導數
derivatives(self, x[, der])
評估點x處的多項式的許多導數