费拉里法求解一元四次方程(一元四次方程 如何用费拉里方法解 2x^4-x^2-6=0)
本文目录
一元四次方程 如何用费拉里方法解 2x^4-x^2-6=0
一元三次方程共有三个根,其中一个根导致M=0,就试试其它两个根。如果三个根算出来的M均为零。那就说明一元四次方程有两对重根,求解2*x^2+b/a*x+y=0即可。
一元四次方程的计算程序代码
#include 《math.h》#include 《float.h》#include 《complex》/******************************************************************************\对一个复数 x 开 n 次方\******************************************************************************/std::complex《double》 sqrtn(c***t std::complex《double》&x,double n){double r = _hypot(x.real(),x.imag()); //模if(r 》 0.0){double a = atan2(x.imag(),x.real()); //辐角n = 1.0 / n;r = pow(r,n);a *= n;return std::complex《double》(r * cos(a),r * sin(a));}return std::complex《double》();}/******************************************************************************\使用费拉里法求解一元四次方程 a*x^4 + b*x^3 + c*x^2 + d*x + e = 0\******************************************************************************/void Ferrari(std::complex《double》 x,std::complex《double》 a,std::complex《double》 b,std::complex《double》 c,std::complex《double》 d,std::complex《double》 e){a = 1.0 / a;b *= a;c *= a;d *= a;e *= a;std::complex《double》 P = (c * c + 12.0 * e - 3.0 * b * d) / 9.0;std::complex《double》 Q = (27.0 * d * d + 2.0 * c * c * c + 27.0 * b * b * e - 72.0 * c * e - 9.0 * b * c * d) / 54.0;std::complex《double》 D = sqrtn(Q * Q - P * P * P,2.0);std::complex《double》 u = Q + D;std::complex《double》 v = Q - D;if(v.real() * v.real() + v.imag() * v.imag() 》 u.real() * u.real() + u.imag() * u.imag()){u = sqrtn(v,3.0);}else{u = sqrtn(u,3.0);}std::complex《double》 y;if(u.real() * u.real() + u.imag() * u.imag() 》 0.0){v = P / u;std::complex《double》 o1(-0.5,+0.86602540378443864676372317075294);std::complex《double》 o2(-0.5,-0.86602540378443864676372317075294);std::complex《double》&yMax = x;double m2 = 0.0;double m2Max = 0.0;int iMax = -1;for(int i = 0;i 《 3;++i){y = u + v + c / 3.0;u *= o1;v *= o2;a = b * b + 4.0 * (y - c);m2 = a.real() * a.real() + a.imag() * a.imag();if(0 == i || m2Max 《 m2){m2Max = m2;yMax = y;iMax = i;}}y = yMax;}else{//一元三次方程,三重根y = c / 3.0;}std::complex《double》 m = sqrtn(b * b + 4.0 * (y - c),2.0);if(m.real() * m.real() + m.imag() * m.imag() 》= DBL_MIN){std::complex《double》 n = (b * y - 2.0 * d) / m;a = sqrtn((b + m) * (b + m) - 8.0 * (y + n),2.0);x = (-(b + m) + a) / 4.0;x = (-(b + m) - a) / 4.0;a = sqrtn((b - m) * (b - m) - 8.0 * (y - n),2.0);x = (-(b - m) + a) / 4.0;x = (-(b - m) - a) / 4.0;}else{a = sqrtn(b * b - 8.0 * y,2.0);x =x = (-b + a) / 4.0;x =x = (-b - a) / 4.0;}} void Test_QuarticEquation(){std::complex《double》 x;std::complex《double》 x1(2.0,0.0); //随便填std::complex《double》 x2(2.0,0.0); //随便填std::complex《double》 x3(2.0,0.0); //随便填std::complex《double》 x4(2.0,0.0); //随便填std::complex《double》 a ( 1.0,0.0); //随便填(不为零即可)std::complex《double》 b = a * (-x1-x2-x3-x4);std::complex《double》 c = a * (x1 * x2 + x1 * x3 + x1 * x4 + x2 * x3 + x2 * x4 + x3 * x4);std::complex《double》 d = a * (-x2 * x3 * x4 - x1 * x3 * x4 - x1 * x2 * x4 - x1 * x2 * x3);std::complex《double》 e = a * (x1 * x2 * x3 * x4);Ferrari(x,a,b,c,d,e); //验证费拉里法}
1元4次方程怎样解
一元四次方程的解法大家都已经知道一元二次方程和一元三次方程公式解的求法了,那么一元四次方程呢?介绍一下卡当的学生--费拉利的方法。和一元三次方程的技巧,我们都要把方程降次来解。下面就是费拉里降次的方法:将一般四次方程ax4+bx3+cx2+dx+e=0每项除以a,得到:x4+(b/a)x3+(c/a)x2+(d/a)x+(e/a)=0移项,得到:x4+(b/a)x3=-(c/a)x2-(d/a)x-(e/a)在等式两端同时加上(bx/2a)2,进行配方。再在该式加上上式右端是一个关于x的二次三项式。适当选择y,使这个二次三项式也能写成完全平方式。这是不难的,只要y能满足等式右边关于y的一元二次方程的根的判别式为0,即下面的等式:就可以,这是一个关于y的三次方程。这样,费拉里把解四次方程的问题归为解一个三次方程和两个二次方程的问题。利用二次方程和三次方程的求根公式,四次方程的根可以直接用方程的系数表示出来。奈何这样的求根公式很复杂,所以人们没有把它写出。
数学计算
一元三次方程的一般形式是 y³+sy²+ty+u=0 如果令y=x-s/3,那么我们就可以把方程的二次项消 去。所以我们只要考虑形如 x3=px+q 的三次方程。 假设方程的解x可以写成x=a-b的形式,这里a和b是待定的参数。 代入方程,我们就有 a3-3a2b+3ab2-b3=p(a-b)+q 整理得到 a3-b3 =(a-b)(p+3ab)+q 由二次方程理论可知,一定可以适当选取a和b,使得在x=a-b的同时, 3ab+p=0。这样上式就成为 a3-b3=q 两边各乘以27a3,就得到 27a6-27a3b3=27qa3 由p=-3ab可知 27a6 + p = 27qa3 这是一个关于a3的二次方程,所以可以解得a。进而可解出b和根x。 费拉里发现的一元四次方程的解法 和三次方程中的做法一样,可以用一个坐标平移来消去四次方程 一般形式中的三次项。所以只要考虑下面形式的一元四次方程: x4=px2+qx+r 关键在于要利用参数把等式的两边配成完全平方形式。考虑一个参数 a,我们有 (x2+a)2 = (p+2a)x2+qx+r+a2 等式右边是完全平方式当且仅当它的判别式为0,即 q2 = 4(p+2a)(r+a2) 这是一个关于a的三次方程,利用上面一元三次方程的解法,我们可以 解出参数a。这样原方程两边都是完全平方式,开方后就是一个关于x 的一元二次方程,于是就可以解出原方程的根x。
更多文章:
郭艾伦图片大全(辽篮600万顶薪不要,翼龙开出天价合同又不要,郭艾伦究竟图啥)
2026年3月4日 07:10
浙江男排队员名单(求中国男排队员1号、6号的名字及详细资料)
2026年3月4日 06:40







