猿问

如何在 python 中找到 f(x,y) 沿 x 和 y 的偏导数

我在 (xx,yy) 网格中定义了一个二维函数 f(x,y)。我想在数值上获得它的偏导数,如下所示。请注意, np.gradient 没有完成这项工作,因为它沿每个轴返回一个向量场。

我怎样才能做到这一点?这是我的代码:


import numpy as np

import matplotlib.pyplot as plt


x = np.arange(-5, 5, 0.1)

y = np.arange(-4, 4, 0.1)

xx, yy = np.meshgrid(x, y, sparse=True)

f = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)

h = plt.contourf(x,y,f)

plt.show()


df=np.gradient(f,y,x) #Doesn't do my job

df=np.array(df)

print(df.shape)


# h = plt.contourf(x,y,df)   #This is what I want to plot.

# plt.show()


三国纷争
浏览 623回答 1
1回答

杨魅力

您需要调用np.gradient两次:import numpy as npimport matplotlib.pyplot as pltx = np.arange(-5, 5, 0.1)y = np.arange(-4, 4, 0.1)xx, yy = np.meshgrid(x, y, sparse=True)f = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)h = plt.contourf(x,y,f)plt.show()dfy = np.gradient(f, y, axis=0)dfxy = np.gradient(dfy, x, axis=1)print(dfxy.shape)# (80, 100)h = plt.contourf(x, y, dfxy)plt.show()输出:
随时随地看视频慕课网APP

相关分类

Python
我要回答