我是Python(v 3.7)的初学者,我试图用数字方式评估包含参数的符号函数的派生类,但是我无法成功地提供值。
我尝试了不同的组合,它们从阅读this question和here中学到灵感。
这是一个重复我的问题的最小例子:
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
但我仍然无法取得任何进展。谢谢!
答案 0 :(得分:1)
只需使用替换。尝试从数字表达式中获取数字时,请使用evalf。包含未评估的a
的您还不是数字,因此评估会拒绝它。
>>> fprime.subs({x: 1, y: 1})
2*a + 1