首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我使用SymPy的parse_expr会得到这样的结果

为什么我使用SymPy的parse_expr会得到这样的结果
EN

Stack Overflow用户
提问于 2021-03-27 21:32:52
回答 1查看 34关注 0票数 0

我写了以下代码:

代码语言:javascript
复制
simplification = parse_expr(str_expression, evaluate=True)
expression = parse_expr(str_expression, evaluate=False)

if expression == simplification:
   msg = "Couldn't simplify!"
else:
   msg = "Simplified:"

我认为,如果表达式无论是否经过计算都是相同的,这一定意味着它已经尽可能地简化了。但是出于某些原因,

代码语言:javascript
复制
str_expression = "s+5"

我知道这个表达式是假的:

代码语言:javascript
复制
expression == simplification

有人知道为什么吗?我该如何解决这个问题?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2021-03-27 22:23:23

尽管这两个表达式打印相同,但它们的内部表示形式不同,因为存储args的顺序不同。通常认为doit方法可以撤消evaluate=False的效果

代码语言:javascript
复制
In [10]: expression
Out[10]: s + 5

In [11]: simplification
Out[11]: s + 5

In [12]: expression.args
Out[12]: (s, 5)

In [13]: simplification.args
Out[13]: (5, s)

In [14]: expression.doit().args
Out[14]: (5, s)

In [15]: expression.doit() == simplification
Out[15]: True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66831903

复制
相关文章

相似问题

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