同情不忽略指数表达式中不重要的小数
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)
我有一个计算一些数学方程式的代码,当我想看到简化的结果时,它不能将 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)