我正在使用interpolate.interp2d()将2D样条拟合到函数上。我如何获得花键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进行数值微分,然后拟合新的样条曲线,但这似乎太麻烦了。有更容易的方法吗?
您可以通过对插值器的interp2d
属性使用函数bisplev
和可选参数bisplev
和tck
来区分dx
的输出。
如果您已插入一些网格数据:
dy
然后您可以将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())
yyt, xxt = np.meshgrid(yt, xt)
的适当结构作为bisplev
访问:f.tck
相对于f
的偏导数可以评估为
x