我在Sympy上具有符号功能,并且涉及到它很长的表达。例如:
from sympy.abc import x
from sympy import Function
F = Function('F')(x)
exp = diff(F,x,x).subs(F, x**3+x) + F**2
现在,我想用特定的表达式代替函数F
,并对其求值,例如:
exp.subs(F,x*4)
>>>x**8 + Derivative(x**4, (x, 2))
但是,我希望它返回x**8+12*x**2
,因为这是两次区分x**4
时得到的结果。我该怎么办?
谢谢, 爱德华多
答案 0 :(得分:2)
当替换后需要执行某些操作时,您只需“执行”即可:
>>> F = Function('F')(x)
>>> exp = diff(F,x,x).subs(F, x**3+x) + F**2
>>> exp.subs(F,x*4)
16*x**2 + Derivative(x**3 + x, (x, 2))
>>> _.doit()
16*x**2 + 6*x
(如果可以完成,那么就可以完成;但是有时-像积分一样-由于没有在SymPy中编程任何解决方案,它们将保持撤消状态。)