同情不忽略指数表达式中不重要的小数

sympy not ignoring unimportant decimals in exponential expression

我有一个计算一些数学方程式的代码,当我想看到简化的结果时,它不能将 2.0 等同于 2 inside power,这是合乎逻辑的,因为一个是 float 并且另一个是整数。但是决定是 sympys 把这两个值放在哪里,而不是我的。

这是我的结果中 sympy 没有简化的表达式

from sympy import *

x = symbols('x')

y = -exp(2.0*x) + exp(2*x)
print(simplify(y)) # output is -exp(2.0*x) + exp(2*x)

y = -exp(2*x) + exp(2*x)
print(simplify(y)) # output is 0

y = -2.0*x + 2*x
print(simplify(y)) # output is 0

y = -x**2.0 + x**2
print(simplify(y)) # output is -x**2.0 + x**2

有什么办法可以解决这个问题吗?我正在寻找一种方法让 sympy 假设除符号以外的所有内容都是浮点数,并阻止它决定哪个是浮点数或整数。

Gerardo Suarez 之前曾问过这个问题,但没有得到令人满意的答案。

您可以使用另一个名为 nsimplify 的 sympy 函数。当我 运行 你的例子时,它们都是 return 零:

from sympy import *

x = symbols("x")

y = -exp(2.0 * x) + exp(2 * x)
print(nsimplify(y))  # output is 0

y = -exp(2 * x) + exp(2 * x)
print(nsimplify(y))  # output is 0

y = -2.0 * x + 2 * x
print(nsimplify(y))  # output is 0

y = -(x ** 2.0) + x ** 2
print(nsimplify(y))  # output is 0

更新 正如@Shoaib Mirzaei 提到的,您还可以在 simplify() 函数中使用 rational 参数,如下所示:

simplify(y,rational=True)