Я новичок в Python (v 3.7) и пытаюсь численно оценить производную символической функции, которая содержит параметры, но я не могу правильно передать значения.
Я пробовал разные комбинации, получая вдохновение от чтения этого вопроса и чего-то еще от здесь .
Вот минимальный пример, который повторяет мою проблему:
import sympy as sym
from sympy import*
x, y, a = sym.var('x, y, a')
def f(x,y):
return a*x**2 + x*y**2
fprime = sym.diff(f(x,y),x)
print(f(1,1))
print(fprime.evalf(subs={x: 1, y: 1}))
Как и ожидалось, выход первого отпечатка равен a+1
, но проблема возникает со вторым отпечатком, потому что вывод, который я получаю, равен 2.0*a*x + y**2
, тогда как я хочу получить 2*a+1
.
Как мне изменить мой код? Я также попытался определить fprime
отдельно и выполнить следующее:
def fprime(x,y):
return sym.diff(f(x,y),x)
print(fprime(x,1))
но все равно я не могу добиться прогресса. Спасибо!