scipy.interpolate.
barycentric_interpolate#
- scipy.interpolate.barycentric_interpolate(xi, yi, x, axis=0, *, der=0, rng=None)[source]#
用於多項式插值的便利函數。
建構一個通過給定點集合的多項式,然後評估該多項式。基於數值穩定性的考量,此函數不計算多項式的係數。
此函數使用「重心插值」方法,將問題視為有理函數插值的特例。此演算法在數值上相當穩定,但即使在精確計算的世界中,除非 x 坐標經過非常仔細的選擇 - 切比雪夫零點(例如,cos(i*pi/n))是一個不錯的選擇 - 否則由於龍格現象,多項式插值本身是一個病態過程。
- 參數:
- xiarray_like
多項式應通過的點的 x 坐標的 1 維陣列
- yiarray_like
多項式應通過的點的 y 坐標。
- xscalar 或 array_like
評估插值器的點或點集合。
- axisint, optional
yi 陣列中對應於 x 坐標值的軸。
- derint 或 list 或 None, optional
要評估多少階導數,或 None 表示所有可能的非零導數(即,一個等於點數的數字),或要評估的導數列表。這個數字包含函數值作為「第 0 階」導數。
- rng
numpy.random.Generator
, optional 偽隨機數生成器狀態。
當 rng 為 None 時,會使用來自作業系統的熵建立新的numpy.random.Generator
。
除了numpy.random.Generator
之外的類型會傳遞給numpy.random.default_rng
以實例化Generator
。
- 返回:
- yscalar 或 array_like
插值。形狀通過將原始陣列中的插值軸替換為 x 的形狀來確定。
另請參閱
註解
插值權重的建構是一個相對緩慢的過程。如果您想使用相同的 xi(但 yi 或 x 可能不同)多次調用此函數,則應使用類別
BarycentricInterpolator
。這是此函數在內部使用的。範例
我們可以使用重心插值法來插值 2D 觀測數據
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy.interpolate import barycentric_interpolate >>> x_observed = np.linspace(0.0, 10.0, 11) >>> y_observed = np.sin(x_observed) >>> x = np.linspace(min(x_observed), max(x_observed), num=100) >>> y = barycentric_interpolate(x_observed, y_observed, x) >>> plt.plot(x_observed, y_observed, "o", label="observation") >>> plt.plot(x, y, label="barycentric interpolation") >>> plt.legend() >>> plt.show()