为什么我用 SymPy 的parse_expr得到这个结果



我写了以下代码:

simplification = parse_expr(str_expression, evaluate=True)
expression = parse_expr(str_expression, evaluate=False)
if expression == simplification:
msg = "Couldn't simplify!"
else:
msg = "Simplified:"

我认为,如果表达式无论是否经过评估都是一样的,那一定意味着它已经尽可能简化了。但出于某种原因,对于

str_expression = "s+5"

我知道这个表达式是错误的:

expression == simplification

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

提前谢谢。

尽管这两个表达式打印的内容相同,但它们的内部表示形式不同,因为存储参数的顺序不同。doit方法通常被认为可以消除evaluate=False:的影响

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

相关内容

  • 没有找到相关文章