doit() 中的 sympy 函数继续执行并尽可能评估表达式。例如:

from sympy import *
u = IndexedBase('u')
i = symbols('i')
test = Sum(u[i],(i,1,3))
test.doit()

将返回

python - 将 SymPy 中的 doit() 函数仅应用于表达式的外部-LMLPHP

还:
from sympy import *
u,x = symbols('u, x')
test = Derivative(u,x)
test.doit()

创建符号微分,然后对其求值。在这种情况下,评估结果为零:

python - 将 SymPy 中的 doit() 函数仅应用于表达式的外部-LMLPHP

python - 将 SymPy 中的 doit() 函数仅应用于表达式的外部-LMLPHP

但是如果我想要一个 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()

这将再次返回零。我想扩大总和但不实际评估导数。这应该导致如下表达式:

python - 将 SymPy 中的 doit() 函数仅应用于表达式的外部-LMLPHP

我怎样才能得到它作为我的输出?是否可以让 doit() 命令仅在外部函数( Sum() )而不是内部函数( Derivative() )上工作?我这样做错了吗?

最佳答案

我找到了一种方法来做到这一点。

仔细检查 doit() 命令参数后,似乎设置选项 deep = False 将防止计算深入表达式。此外,一些迹象表明可以更彻底地控制这种情况。命令文档显示:



就我而言,我很好奇如何利用“提示”。如果有人可以提供有关“提示”如何工作的更多见解,那就太好了。谢谢。

关于python - 将 SymPy 中的 doit() 函数仅应用于表达式的外部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46024543/

10-12 15:09