doit()
中的sympy
函数继续进行,并尽可能地计算表达式。例如:
from sympy import *
u = IndexedBase('u')
i = symbols('i')
test = Sum(u[i],(i,1,3))
test.doit()
将返回
此外:
from sympy import *
u,x = symbols('u, x')
test = Derivative(u,x)
test.doit()
创建符号差异,然后对其进行评估。在这种情况下,评估结果为零:
但如果我想在Derivative
内Sum
怎么办? doit()
功能走得太远了:
from sympy import *
u = IndexedBase('u')
x = IndexedBase('x')
i = symbols('i')
test = Sum(Derivative(u[i],x[i]),(i,1,3))
test.doit()
这将再次返回零。我想扩大总和,但实际上并没有评估衍生品。这应该导致表达式如下:
如何将此作为输出?是否有doit()
命令只能在外部函数(Sum()
)上工作,而不是内部函数(Derivative()
)?我做错了吗?
答案 0 :(得分:2)
我找到了一种方法。
仔细检查doit()
命令参数后,设置选项deep = False
似乎会阻止评估过深地进入表达式。此外,一些迹象表明可以更彻底地控制这一点。命令文档显示:
评估默认情况下未评估的对象,如限制, 积分,总和和产品。所有这类物品都将是 递归评估,除非通过提示排除某些物种。 或者除非“深邃”。提示设置为“错误”。
就我而言,我很好奇这些提示是什么?可以利用。如果有人可以提供有关如何提示'提示的更多信息。工作会很棒。感谢。