评估Python中符号函数的参数导数

时间:2019-05-05 22:11:44

标签: python parameters sympy derivative

我是Python(v 3.7)的初学者,我试图用数字方式评估包含参数的符号函数的派生类,但是我无法成功地提供值。

我尝试了不同的组合,它们从阅读this questionhere中学到灵感。

这是一个重复我的问题的最小例子:

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而我希望获得{{ 1}}。

如何修改代码?我还尝试过分别定义2*a+1并运行以下命令:

fprime

但我仍然无法取得任何进展。谢谢!

1 个答案:

答案 0 :(得分:1)

只需使用替换。尝试从数字表达式中获取数字时,请使用evalf。包含未评估的a的您还不是数字,因此评估会拒绝它。

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