如何在 sympy 中求解这个涉及绝对项的方程式?

How to solve this equation involving an absolute term in sympy?

from sympy import *

x = symbols('x', real=True)

solve(Abs(2 + 36/(x - 2)) - 6)

我已经设置了real=True,但它仍然显示solving Abs(2 + 36/(x - 2)) when the argument is not real or imaginary.

不过,解决Abs(36/(x - 2)) - 6就可以了。

有什么问题?

有时,处理 Abs 会带来“惊喜”时刻,就像您所经历的那样。对于您的特定情况,使其起作用的一种可能方法是操纵表达式。特别是,使 abs(x / y) = abs(x) / abs(y):

from sympy import *
x = symbols('x', real=True)
expr = Abs(2 + 36/(x - 2)) - 6
expr = expr.simplify()

def repl_Abs(t):
    num, den = fraction(t)
    return Abs(num) / Abs(den)

solve(expr.replace(Abs, repl_Abs))
# out: [-5/2, 11]