【math】利用Cardano方法对一元三次方程求解及python实现

【参考】

  • 用Cardano方法求解三次多项式介绍
  • cardano求解
  • 下载cardano方法包
  • x^3+1=0求解问题、三次方程反函数问题
  • Micorsoft-Math-solver 微软数学工具
  • WolframAlpha: inverse of a function/反函数

求解一元三次方程:
a x 3 + b x 2 + c x + d = 0 ax^3+bx^2+cx+d=0 ax3+bx2+cx+d=0

求解有多种方法,其中Cardano方法得到的解为:
【math】利用Cardano方法对一元三次方程求解及python实现_第1张图片

一元三次多项式: 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+dy=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])
    

    【math】利用Cardano方法对一元三次方程求解及python实现_第2张图片
    但实际上, 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=2123 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

你可能感兴趣的:(python,math,python,math)