當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy interpolate.KroghInterpolator用法及代碼示例


本文簡要介紹 python 語言中 scipy.interpolate.KroghInterpolator 的用法。

用法:

class  scipy.interpolate.KroghInterpolator(xi, yi, axis=0)#

對一組點進行插值多項式。

多項式通過所有對(xi, yi)。可以另外指定每一點的導數數量xi;這是通過重複該值來完成的xi並將導數指定為連續的值。

允許對多項式及其所有導數進行評估。出於數值穩定性的原因,此函數不計算多項式的係數,盡管它們可以通過評估所有導數來獲得。

參數

xi 類似數組,形狀 (npoints, )

已知的 x 坐標。必須按升序排列。

yi 數組,形狀(...,npoints,...)

已知 y 坐標。當 xi 連續出現兩次或多次時,相應的 yi 表示導數值。 yi 沿插補軸的長度必須等於 xi 的長度。使用軸參數選擇正確的軸。

axis 整數,可選

軸在對應於 x 坐標值的數組。默認為axis=0.

注意

請注意,此處實現的算法不一定是已知的數值最穩定的算法。此外,即使在精確計算的世界中,除非非常仔細地選擇 x 坐標——切比雪夫零點(例如 cos(i*pi/n))是一個不錯的選擇——多項式插值本身就是一個非常ill-conditioned 的過程,因為龍格現象。通常,即使使用well-chosen x 值,高於大約 30 的度數也會導致此代碼中出現數值不穩定的問題。

基於[1]。

參考

[1]

Krogh,“多項式插值和數值微分的有效算法”,1970 年。

例子

要生成在 0 和 1 處為零且在 0 處導數為 2 的多項式,請調用

>>> from scipy.interpolate import KroghInterpolator
>>> KroghInterpolator([0,0,1],[0,2,0])

這構造了二次方程\(2x^2-2x\) 。導數條件由重複的零表示xi大批;對應的 yi 值為 0(函數值)和 2(導數值)。

再舉一個例子,給定 xi、yi 和每個點的導數 ypi,適當的數組可以構造為:

>>> import numpy as np
>>> rng = np.random.default_rng()
>>> xi = np.linspace(0, 1, 5)
>>> yi, ypi = rng.random((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]])

這構造了一個線性多項式,在 0 處給出 (2,3),在 1 處給出 (4,5)。

屬性

dtype

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.KroghInterpolator。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。