天天看點

python interpolate函數_python scipy interpolate.KroghInterpolator用法及代碼示例

為一組點插值多項式。

多項式通過所有對(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處的多項式的許多導數