一元四次方程高精度实数根(C语言)

介绍了一元四次方程的费拉里求解方法,通过算法步骤详细解析了如何将一元四次方程转化为一元三次方程和一元二次方程求解实数根的过程。

一、问题描述

  已知一元四次方程 a x 4 + b x 3 + c x 2 + d x + e = 0 ( a ≠ 0 ) ax^4 + bx^3 + cx^2+dx+e = 0(a\neq0) ax4+bx3+cx2+dx+e=0(a=0),求方程的实数根。笔者用C语言实现了费拉里法求解一元四次方程高精度的实数根。一元四次方程实数根求解过程会调用一元二次方程和一元三次方程高精度实数根的求解函数,参见另外一篇博文:一元二次方程高精度实数根(C语言)一元三次方程高精度实数根(C语言)

二、算法步骤

  将一元四次方程最高次项系数化为1,则:
x 4 + b x 3 + c x 2 + d x + e = 0 (1) x^4+bx^3+cx^2+dx+e=0 \tag 1 x4+bx3+cx2+dx+e=0(1)
  移项得到:
x 4 + b x 3 = − c x 2 − d x − e (2) x^4+bx^3=-cx^2-dx-e \tag 2 x4+bx3=cx2dxe(2)
  式(2)两边同时加上 ( 1 2 b x ) 2 (\dfrac{1}{2}bx)^2 (21bx)2,可将式(2)左边配成完全平方式:
( x 2 + 1 2 b x ) 2 = ( 1 4 b 2 − c ) x 2 − d x − e (3) (x^2+\dfrac{1}{2}bx)^2=(\dfrac{1}{4}b^2-c)x^2-dx-e \tag 3 (x2+21bx)2=(41b2c)x2dxe(3)
  式(3)两边同时加上 ( x 2 + 1 2 b x ) y + 1 4 y 2 (x^2+\dfrac{1}{2}bx)y+\dfrac{1}{4}y^2 (x2+21bx)y+41y2,可得:
[ ( x 2 + 1 2 b x ) + 1 2 y ] 2 = ( 1 4 b 2 − c + y ) x 2 + ( 1 2 b y − d ) x + 1 4 y 2 − e (4) [(x^2+\dfrac{1}{2}bx) + \dfrac{1}{2}y]^2=(\dfrac{1}{4}b^2-c+y)x^2+(\dfrac{1}{2}by-d)x+ \dfrac{1}{4}y^2-e\tag 4 [(x2+21bx)+21y]2=(41b2c+y)x2+(21byd)x+41y2e(4)
  式(4)中的y是一个参数。当式(4)中的x为原方程的根时,不论y取什么值,式(4)都应该成立。特别地,如果所取得y值使得式(4)右边关于x的二次多项式也能变成一个完全平方式,则对式(4)两边同时开方可以得到次数较低的方程。
  为了使式(4)右边关于x的二次多项式也能变成一个完全平方式,只需使它的判别式变成0,即:
( 1 2 b y − d ) 2 − 4 ( 1 4 b 2 − c + y ) ( 1 4 y 2 − e ) = 0 (5) (\dfrac{1}{2}by-d)^2-4(\dfrac{1}{4}b^2-c+y)(\dfrac{1}{4}y^2-e)=0 \tag 5 (21byd)24(41b2c+y)(41y2e)=0(5)
  化简得到:
y 3 − c y 2 + ( b d − 4 e ) y + ( 4 c − b 2 ) e − d 2 = 0 (6) y^3 -cy^2 + (bd - 4e)y + (4c - b^2)e - d^2=0 \tag 6 y3cy2+(bd4e)y+

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值