sympy解三次方程得不到实数解是何原因,三次方程至少应有一个实数根的
代码如下:
import sympy
x=sympy.Symbol('x')
f=x3-6*x2+9*x+1
rr=sympy.solve(f)
print(rr)
下面是运行结果:
[2 - 3/((-1/2 - sqrt(3)I/2)(27sqrt(5)/2 + 81/2)**(1/3)) - (-1/2 - sqrt(3)I/2)(27sqrt(5)/2 + 81/2)(1/3)/3, 2 - (-1/2 + sqrt(3)I/2)(27sqrt(5)/2 + 81/2)**(1/3)/3 - 3/((-1/2 + sqrt(3)I/2)(27sqrt(5)/2 + 81/2)(1/3)), -(27sqrt(5)/2 + 81/2)**(1/3)/3 - 3/(27sqrt(5)/2 + 81/2)**(1/3) + 2]
第三个是实根吧。。。
经过几天摸索,可以用chop =True解决,具体在sympy帮助文档有介绍,表达式如下,
expr.evalf(chop =True) #小数表示,去掉 Round-off error