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()
)上工作?我这样做错了吗? 最佳答案
我找到了一种方法来做到这一点。
仔细检查 doit()
命令参数后,似乎设置选项 deep = False
将防止计算深入表达式。此外,一些迹象表明可以更彻底地控制这种情况。命令文档显示:
就我而言,我很好奇如何利用“提示”。如果有人可以提供有关“提示”如何工作的更多见解,那就太好了。谢谢。
关于python - 将 SymPy 中的 doit() 函数仅应用于表达式的外部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46024543/