你需要给gradient一个矩阵来描述你的(x,y)点的角频率值。e、 gdef f(x,y):
return np.sin((x + y))
x = y = np.arange(-5, 5, 0.05)
X, Y = np.meshgrid(x, y)
zs = np.array([f(x,y) for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)
gx,gy = np.gradient(Z,0.05,0.05)
可以看到,将Z绘制为曲面会提供:
下面是如何解释你的梯度:
gx是一个矩阵,它在所有点上都给出了变化dz/dx。e、 g.gx[0][0]是dz/dx在(x0,y0处。可视化gx有助于理解:
因为我的数据是从f(x,y) = sin(x+y)gy生成的,所以看起来是一样的。
这里有一个使用f(x,y) = sin(x)的更明显的例子。。。
f(x,y)