如何解决“复杂域中的绝对值不能反转”的错误

时间:2018-01-05 20:15:13

标签: python sympy

我有以下等式:

Eq(5*Abs(4*x+2)+6,56). 

我要做的是为数学问题x = -3求解5 |4x+2|+6=56,但我一直在

  

“绝对值不能在复杂域中反转”

同情中的错误。

有解决方法吗?

1 个答案:

答案 0 :(得分:3)

您必须指定x是实值变量。您可以在定义变量时执行以下操作。

import sympy as sp
x = sp.symbols('x', real = True)
eq = sp.Eq(5*sp.Abs(4*x+2)+6,56)
sol = sp.solve(eq, x)
print(sol)
  

[-3, 2]

编辑:可以使用sympy.solveset函数代替sympy.solve。在这种情况下,您需要明确声明您正在解决实数域。通过这样做,您不必将变量定义为真实。

import sympy as sp
x = sp.symbols('x') # implies that x is complex
eq = sp.Eq(5*sp.Abs(4*x+2)+6,56)
sol = sp.solveset(eq, x, domain=sp.S.Reals)
print(sol)
  

{-3, 2}