网上查到所谓的通用公式解法有“费拉里”法。
基本想法是将一元四次方程的表达式配成两个完全平方表达式的等式,为了实现这个目的,需要在此之前解一个一元三次方程,得到配方的系数。解法如下:
一般一元四次方程为:
x^4+c1x^3+c2x^2+c3x+c4=0
移项后:
x^4+c1x^3=-c2x^2-c3x-c4
两边同时加上(c1x/2)^2:
x^4+c1x^3+(c1x/2)^2 = -c2x^2-c3x-c4+(c1x/2)^2
整理为:
(x^2 + c1x/2)^2 = (c1^2/4-c2)x^2-c3x-c4
两边再同时加上 (x^2+c1x/2)y + (y/2)^2
(x^2 + c1x/2)^2 + (x^2+c1/2)y + (y/2)^2 = (c1^2/4-c2)x^2-c3x-c4 + (x^2+c1x/2)y + (y/2)^2
再整理:
((x^2+c1x/2)+ y/2)^2 = (c1^2/4-c2+y)x^2 + (c1y/2-c3)x +(y/2)^2-c4.....(1)
左边为一个完全平方式,右边为一个x的二次多项式(系数中含有y),
为了使右边也成为一个完全平方式,必须使其判别式为零,即:
DAT = [(c1y/2-c3)]^2 - 4 * [(c1^2/4-c2+y)] * [(y/2)^2-c4] = 0
于是,得到一个关于y的一元三次方程。
-y^3 + c2y^2 + (4c4-c1c3)y+c3^2+c4c1^2-4c4c2=0
只要解这个一元三次方程得到一个解y0,代入(1)右边,并令右边=0解出配方常量x0;
便可得到两边都为完全平方的方程,原一元四次方程被降为一元二次方程。可轻松求解。
((x^2+c1x/2)+ y0/2)^2 =(x-x0)^2
即:
(x^2+c1x/2)+ y0/2 = x-x0
(x^2+c1x/2)+ y0/2 = -x+x0
整理为:
x^2+(c1/2-1)x + y0/2 + x0 = 0
x^2 +(c1/2+1)x + y0/2 - x0 = 0
解这两个一元二次方程的解,即为一元四次方程的解。
以上是我使用费拉里法的过程,其中红色一行隐藏一个较难发现的错误。
右边原来是:
(c1^2/4-c2+y)x^2 + (c1y/2-c3)x +(y/2)^2-c4
当解出y=y0后代入,变为:
(c1^2/4-c2+y0)x^2 + (c1y0/2-c3)x +(y0/2)^2-c4
令其为零,解出x=x0后,完全平方的表达式,不能约简平方项的系数,变为(x-x0)^2,应保留原有系数。
令k=sqrt(c1^2/4-c2+y0)
完全平方式应写作:(kx-kx0)^2
这样,才能维持原1式表达式的左右相等。
该行及之下应更正为:
((x^2+c1x/2)+ y0/2)^2 =(kx-kx0)^2
即:
(x^2+c1x/2)+ y0/2 = kx-kx0
(x^2+c1x/2)+ y0/2 = -kx+kx0
整理为:
x^2+(c1/2-k)x + y0/2 + kx0 = 0
x^2 +(c1/2+k)x + y0/2 - kx0 = 0
解这两个一元二次方程的解,即为一元四次方程的解。
用修改后的程序进行测试解方程:
(x-1)*(x-2)*(x-3)*(x-4)= 0
即:
x^4-10x^3+35x^2-50x+24 =0
得到:
4+0i
3+0i
2+0i
1+0i
测试通过!
终于解决了一元四次方程的求解程序的问题,爽!
https://blog.sciencenet.cn/blog-33982-578116.html
上一篇:
手工验算盛金公式下一篇:
彻底解决张学文时间胎精确模型的几何造型