在Python中计算符号函数的参数导数

在Python中计算符号函数的参数导数,python,parameters,sympy,derivative,Python,Parameters,Sympy,Derivative,我是Python(V3.7)的初学者,我试图用数值计算一个包含参数的符号函数的导数,但我无法成功地输入值 我尝试过不同的组合,从阅读中获得灵感,也从其他方面获得灵感 下面是一个复制我的问题的简单示例: 将sympy作为sym导入 从sympy进口* x、 y,a=sym.var('x,y,a') 定义f(x,y): 返回a*x**2+x*y**2 fprime=sym.diff(f(x,y),x) 印刷品(f(1,1)) 打印(fprime.evalf(subs={x:1,y:1})) 正如预

我是Python(V3.7)的初学者,我试图用数值计算一个包含参数的符号函数的导数,但我无法成功地输入值

我尝试过不同的组合,从阅读中获得灵感,也从其他方面获得灵感

下面是一个复制我的问题的简单示例:

将sympy作为sym导入
从sympy进口*
x、 y,a=sym.var('x,y,a')
定义f(x,y):
返回a*x**2+x*y**2
fprime=sym.diff(f(x,y),x)
印刷品(f(1,1))
打印(fprime.evalf(subs={x:1,y:1}))
正如预期的那样,第一次打印的输出是
a+1
,但问题与第二次打印一起出现,因为我希望获得
2*a*x+y**2
时,我得到的输出是
2*a+1

我该如何修改我的代码?我还尝试分别定义
fprime
,并运行以下操作:

def fprime(x,y):
返回符号差(f(x,y),x)
打印(fprime(x,1))

但我仍然没有取得任何进展。谢谢

只需使用替换即可。当您试图从数字表达式中获取数字时,请使用evalf。您的,包含未计算的
a
还不是一个数字,因此计算将拒绝它

>>> fprime.subs({x: 1, y: 1})
2*a + 1