scipy.interpolate.LSQBivariateSpline.
ev#
- LSQBivariateSpline.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 中新增。
範例
假設我們想要在 2 維空間中雙線性內插一個指數衰減函數。
>>> 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()