Как найти частичную производную от f (x, y) по x и y: del ^ 2 f(x,y) /[del(x)][del (y)] в python

#python #calculus

#python #исчисление

Вопрос:

У меня есть двумерная функция f (x, y), определенная в сетчатой системе (xx, yy). Я хочу численно получить его частичную производную, как показано ниже. Обратите внимание, что 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()
  

Ответ №1:

Вам нужно вызвать 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()

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()
  

Вывод:

Результат