对于上下文:我在python 2.7中使用sympy。我的项目的一部分涉及简化数学表达式,但在使用sympy时我遇到了一个问题:
from sympy import *
x = symbols ("x")
(-x*exp(-x) + exp(-x)) == (1-x)*(exp(-x))
上面的代码返回我
False
我自己的数学和wolframalpha都不同意这一点 - 我输错了什么,或者这是一些我不知道的同情的缺点?
答案 0 :(得分:1)
从文档页面: http://docs.sympy.org/dev/gotchas.html
如果要测试符号相等性,一种方法是从另一个中减去一个表达式,并通过像expand(),simplify()和trigsimp()这样的函数运行它,看看等式是否减少到0。
答案 1 :(得分:0)
如果要创建符号相等,请使用Eq
:
In [1]: Eq((-x*exp(-x) + exp(-x)), (1-x)*(exp(-x)))
Out[1]:
-x -x -x
- x⋅ℯ + ℯ = (-x + 1)⋅ℯ
==
运算符必须立即返回一个布尔表达式,这是一个Python标准。因此==
运算符匹配表达式的粗糙结构而不执行任何数学转换(除了在表达式构造中发生的先前的小自动转换)。