首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SymPy中仅将doit()函数应用于表达式的外部部分

在SymPy中仅将doit()函数应用于表达式的外部部分
EN

Stack Overflow用户
提问于 2017-09-03 14:41:03
回答 1查看 1.4K关注 0票数 4

doit()函数在sympy中继续进行,并尽可能地计算表达式。例如:

代码语言:javascript
复制
from sympy import *
u = IndexedBase('u')
i = symbols('i')
test = Sum(u[i],(i,1,3))
test.doit()

会回来

另外:

代码语言:javascript
复制
from sympy import *
u,x = symbols('u, x')
test = Derivative(u,x)
test.doit()

创建符号微分,然后计算它。在这种情况下,评估结果为零:

但是如果我想要一个DerivativeSum里面呢?doit()函数走得太远了:

代码语言:javascript
复制
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())上工作?我做错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 15:56:18

我找到了一种方法。

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

评估默认情况下不求值的对象,如极限、积分、和。所有这类对象都将进行递归评估,除非某些物种通过“提示”被排除在外,或者除非“深层”提示被设置为“False”

就我而言,我很好奇如何利用这些“提示”。如果有人能对“提示”的工作提供更多的洞察力,那就太好了。谢谢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46024543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档