SymPy简化不会尝试分解

问题描述 投票:0回答:1

是否有解决方法SymPy明显无法简化sqrt(x ** 2 + 2 * x + 1)?

from sympy import *
x = Symbol('x', real=True, positive=True)
simplify(sqrt(x**2))  # returns x
simplify(sqrt(x**2+2*x+1)) #fails to return x+1
sympy
1个回答
0
投票

SymPy不会尝试简化所有内容,如果有的话,会有太多问题(从性能开始)。请参阅SymPy wiki中的文章Automatic Simplification

如果你想要一个表达式,你应该告诉SymPy这样做。

factor(sqrt(x**2+2*x+1))   # returns x+1

公式sqrt(x**2)变成x,因为当基数为正且指数是实数时,(x**a)**b可以安全地组合到x**(a*b)。 (即便如此,“可以”并不总是意味着“应该”。在SymPy中存在一些自动简化,可能太多了。)

两者之间的关键区别在于,x**2明确是一种力量,而x**2 + 2*x + 1是一个总和。

© www.soinside.com 2019 - 2024. All rights reserved.