一元二次、一元三次、一元四次方程的求根公式
代码用python写的。
一元二次方程:
def Quadratic(args): a,b,c=args D = cmath.sqrt(b**2-4*a*c) x1 = (-b+D)/(2*a) x2 = (-b-D)/(2*a) roots = [x1,x2] return roots
一元三次方程:
def Cubic(args): a,b,c,d = args p = c/a-b**2/(3*a**2) q = d/a+2*b**3/(27*a**3)-b*c/(3*a**2) w = complex(-0.5,(3**0.5)/2) ww = complex(-0.5,-(3**0.5)/2) A = cmath.sqrt((q/2)**2+(p/3)**3) B = ThreeSquare(-q/2+A) C = ThreeSquare(-q/2-A) y1 = B+C y2 = w*B+ww*C y3 = ww*B+w*C D = b/(3*a) roots=[RoundAns(y1-D,6),RoundAns(y2-D,6),RoundAns(y3-D,6)] return roots
一元四次方程:
for k=0,1,2,计算m
如果三个m的值都为0,则
否则的话,取|m|最大的那个k,并计算
def Quartic(args):
a,b,c,d,e = args
P = (c**2+12*a*e-3*b*d)/9
Q = (27*a*d**2+2*c**3+27*b**2*e-72*a*c*e-9*b*c*d)/54
D = cmath.sqrt(Q**2-P**3)
u = ThreeSquare(Q+D) if abs(Q+D)>=abs(Q-D) else ThreeSquare(Q-D)
v = 0 if u==0 else P/u
w = complex(-0.5,3**0.5/2)
m = []
M = []
flag = 0
roots = []
for i in range(3):
x = cmath.sqrt(b**2-8*a*c/3+4*a*(w**i*u+w**(3-i)*v))
m.append(x)
M.append(abs(x))
if m == 0:
flag=flag+1
if flag == 3:
mm = 0
S = b**2-8*a*c/3
T = 0
else:
t = M.index(max(M))
mm = m[t]
S = 2*b**2-16*a*c/3-4*a*(w**t*u+w**(3-t)*v)
T = (8*a*b*c-16*a**2*d-2*b**3)/mm
x1=(-b-mm+cmath.sqrt(S-T))/(4*a)
x2=(-b-mm-cmath.sqrt(S-T))/(4*a)
x3=(-b+mm+cmath.sqrt(S+T))/(4*a)
x4=(-b+mm-cmath.sqrt(S+T))/(4*a)
roots.append(x1)
roots.append(x2)
roots.append(x3)
roots.append(x4)
</span><span style="color: #0000ff;">return</span> roots</pre>
完整代码见:
补充内容:
1.一元三次方程的求根公式的推导过程
标准的一元三次方程如式1所示
(1)
令,则可以将式1变换成如式2所示的缺项形式
(2)
其中,, 。式2具有两个自由度,因此猜测方程一个根的形式如式3所示
(3)
令,,,则将该根带入式2可得
(4)
进而转换为如下方程组
根据这个方程组求A,B的时候,会得到一个以或者为变量的一元二次方程,进而可以得到A,B的值如式5所示
(5)
因此,得到了式2的一个根,如式6所示
(6)
我们知道,式2也可以写成的形式,那么已经求出了,剩下两个根只需要解一个一元二次方程就可以了。求出了式2的三个根,再根据变换回去,就得到了一元三次方程标准形式的根。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧