[英]Differentiate a 2d cubic spline in python
我正在使用 interpolate.interp2d() 在 function 上擬合二維樣條曲線。 如何獲得樣條曲線 w.r.t 的一階導數。 每個因變量? 到目前為止,這是我的代碼,Z 是我擁有的網格上的離散點
from scipy import interpolate
YY, XX = np.meshgrid(Y, X)
f = interpolate.interp2d(AA, XX, Z, kind='cubic')
所以,我需要 df/dx 和 df/dy。 另請注意,我的 Y 網格不是均勻分布的。 我想我可以對 Z 進行數值區分,然后擬合一個新的樣條曲線,但這似乎太麻煩了。 有沒有更簡單的方法?
您可以通過在插值器的tck
屬性上使用bisplev
interp2d
可選的dy
dx
和
如果您有一些已插值的網格數據:
X = np.arange(5.)
Y = np.arange(6., 11)
Y[0] = 4 # Demonstrate an irregular mesh
YY, XX = np.meshgrid(Y, X)
Z = np.sin(XX*2*np.pi/5 + YY*YY*2*np.pi/11)
f = sp.interpolate.interp2d(XX, YY, Z, kind='cubic')
xt = np.linspace(X.min(), X.max())
yt = np.linspace(Y.min(), Y.max())
然后您可以訪問f.tck
bisplev
f
相對於x
的偏導數可以評估為
Z_x = sp.interpolate.bisplev(xt, yt, f.tck, dx=1, dy=0)
編輯:從這個答案,看起來interp2d
的結果本身可以采用dx
和dy
的可選 arguments :
Z_x = f(xt, yt, dx=1, dy=0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.