【参考】
求解一元三次方程:
a x 3 + b x 2 + c x + d = 0 ax^3+bx^2+cx+d=0 ax3+bx2+cx+d=0
一元三次多项式: y = f ( x ) = a x 3 + b x 2 + c x + d y=f(x)=ax^3+bx^2+cx+d y=f(x)=ax3+bx2+cx+d => a x 3 + b x 2 + c x + d − y = 0 ax^3+bx^2+cx+d-y=0 ax3+bx2+cx+d−y=0
可以根据对应解写出方程的解。。。【略】
可以使用python包:安装cardano_method
【参考这里】
pip install cardano_method
该包的使用:CubicEquation
函数对应第一个参数列表是:[a, b, c, d]
,即求解方程的各系数。
from cardano_method.cubic import CubicEquation
a = CubicEquation([1, 3, 4, 4])
print(a.answers) # j表示虚部后缀
# [(-2+0j), (-0.5+1.322875j), (-0.5-1.322875j)]
print(a.answers[0].real) # 获取第一个解的实部
print(a.answers[0].imag) # 获取第一个解的虚部
但是发现一个问题:解方程 x 3 + 1 = 0 x^3+1=0 x3+1=0时,居然报错分母是0:ZeroDivisionError
。
a = CubicEquation([1, 0, 0, 1])
但实际上, x 3 + 1 = 0 x^3+1=0 x3+1=0的解是对应: x 1 = − 1 x_1=-1 x1=−1, x 2 = 1 2 + 3 2 i x_2=\frac{1}{2}+\frac{\sqrt{3}}{2}i x2=21+23 i, x 3 = 1 2 − 3 2 i x_3=\frac{1}{2}-\frac{\sqrt{3}}{2}i x3=21−23 i。需要详细看下包中bug如何解决?
未完待续。。。
附: python 获取复数的实部和虚部。使用j
后缀表示虚数,比如a+bj
中,a
是实部,b
是虚部,python中用complex(a,b)
生成一个复数。
x = 2+1.5j
print(x.real) # 打印实部:2
print(x.imag) # 打印虚部:2
x1 = complex(2,1.5) # 使用`complex`生成复数 2+1.5j