((gamma-(gamma**2-omega**2)**0.5)*(gamma+(gamma**2-omega**2)**0.5)).simplify()
Run Code Online (Sandbox Code Playgroud)
输出为:gamma^2 - (gamma^2 -omega^2)^{1.0} $
然而,我预计结果是 omega^2。我知道在 sympy 文档中,它警告要小心浮点数,但我的印象是整数和 2 的小数次幂(可以精确表示)都很好。
以下代码正确地再现了 omega^2:
((gamma-(gamma**2-omega**2)**sym.Rational(1,2))*(gamma+(gamma**2-omega**2)**sym.Rational(1,2))).simplify()
Run Code Online (Sandbox Code Playgroud)
为什么第一个代码没有产生预期的结果?