是否可以使用 sympy 库简化表达式,例如 sqrt (x^2) = abs (x)?

Is it possible to simplify expressions using the sympy library, for example sqrt (x^2) = abs (x)?

我查看了 sympy 文档,没有找到这样的东西。使用简化方法,sqrt(x**2) 不变。

我猜你希望 sqrt(x**2) 会简化为 x。问题是这不是一般有效的简化,例如:

In [23]: z = -1

In [24]: z**2
Out[24]: 1

In [25]: sqrt(z**2)
Out[25]: 1

In [26]: sqrt(z**2) == z
Out[26]: False

当声明一个交易品种时,您可以设置简化所需的假设:

In [27]: x = Symbol('x', real=True)

In [28]: y = Symbol('y', positive=True)

In [29]: sqrt(x**2)
Out[29]: │x│

In [30]: sqrt(y**2)
Out[30]: y