scipy.interpolate.RectBivariateSpline.
ev#
- RectBivariateSpline.ev(xi, yi, dx=0, dy=0)[source]#
在點上評估 spline
傳回在
(xi[i], yi[i]), i=0,...,len(xi)-1
的內插值。- 參數:
- xi, yiarray_like
輸入座標。遵守標準 Numpy 廣播規則。軸的順序與
np.meshgrid(..., indexing="ij")
一致,且與預設順序np.meshgrid(..., indexing="xy")
不一致。- dxint, optional
x 導數的階數
在版本 0.14.0 中新增。
- dyint, optional
y 導數的階數
在版本 0.14.0 中新增。
範例
假設我們想要對二維空間中的指數衰減函數進行雙線性內插。
>>> import numpy as np >>> from scipy.interpolate import RectBivariateSpline >>> def f(x, y): ... return np.exp(-np.sqrt((x / 2) ** 2 + y**2))
我們在粗網格上對函數進行取樣,並設定內插器。請注意,meshgrid 的預設
indexing="xy"
會在內插後產生意外(轉置)的結果。>>> xarr = np.linspace(-3, 3, 21) >>> yarr = np.linspace(-3, 3, 21) >>> xgrid, ygrid = np.meshgrid(xarr, yarr, indexing="ij") >>> zdata = f(xgrid, ygrid) >>> rbs = RectBivariateSpline(xarr, yarr, zdata, kx=1, ky=1)
接下來,我們使用內插法,沿著穿過座標空間的對角切片,在更精細的網格上對函數進行取樣。
>>> xinterp = np.linspace(-3, 3, 201) >>> yinterp = np.linspace(3, -3, 201) >>> zinterp = rbs.ev(xinterp, yinterp)
並檢查內插是否作為沿切片到原點距離的函數,通過函數評估。
>>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> ax1 = fig.add_subplot(1, 1, 1) >>> ax1.plot(np.sqrt(xarr**2 + yarr**2), np.diag(zdata), "or") >>> ax1.plot(np.sqrt(xinterp**2 + yinterp**2), zinterp, "-b") >>> plt.show()