四次方程程式輸入法

操作原理

方程 Ax4 + Bx3 + Cx2 + Dx + E = 0,可寫成 x4 + ax3 + bx2 + cx + d = 0 (其中 a = B /Ab = C /Ac = D /Ad = E /A)。

一般解
例子
x4 + ax3+ bx2 + cx + d = 0 x44x318x219x14=0
x = y ,得y4 + py2 + qy+ r = 0...(*) x = y + 1,得 y424y263y54=0...(*)
分析  
   
1. (*)的系數皆是實數,故複數根只會以conjudate pair出現。因此,(*)有以下三個情形:
  (I) 四個實數根 y1, y2, y3, y4
  (II) 二個實數根 y1, y2,二個複數根y3, y4
  (III) 四個複數根y1, y2, y3, y4
  (這裡可設 y1, y2互為conjugate,y3, y4互為conjugate)。
     
2. 由根與系數之關係可知︰ y1+ y2+ y3+ y4 = 0,即y1+ y2 = ( y3+ y4)。
  k = y1+ y2 = ( y3+ y4)。由(1)可知在(I),(II),(III)任一情形下,k 必為實數。
  又設m = y1y2n=y3y4 。同理,mn 必為實數。
   
3. 方程y2 ky + m = 0的根為y1y2 ;方程y2 +ky + n = 0的根為y3y4
  因此y4 + py2 + qy+ r = (y2 ky + m )(y2 +ky + n)
   
y4 + py2 + qy+ r = (y2 ky + m )(y2 +ky + n)...(**)
y424y263y54= (y2 ky + m )(y2 +ky + n)...(**)
比較(**)兩端各項的系數,得
n + m k2 = p ...(i)
k ( m n) = q ...(ii)
n m = r ...(iii)
比較(**)兩端各項的系數,得
n + m k2 = 24...(i)
k ( m n) = 63...(ii)
n m = 54...(iii)
若q≠0,
由(i)和(ii),得
代入(iii),得 k6 + 2pk4+ (p2 - 4r)k2q2 = 0...(***)
由(i)和(ii),得
代入(iii),得 k648k4+ 792k23969= 0...(***)
 
分析  
   
只要找到 (k, m, n) 的任何一個解 (ko, mo, no) ,y1, y2, y3, y4便能從(**)而解出。該分 q=0 和 q≠0 兩種情形考慮。若q=0,y1, y2, y3, y4可從(*)直接解出,若 q≠0,則可從(***),用解三次方程的方法找到k的一個根ko,從而得到mn的對應值mono。但怎能叫3900Pv分情形計算?又 ko2 找出來是負數怎辦?(我覺得寫這個程式最難解決是這兩點。)
 
4. 不論是否q=0,把(***)視為 k2 的三次方程,它應有三個根。
  不但如此,由分析(2)可知,(***)至少有一個實數的非負根。問題是當我們用解三次方程的方法找到的第一個實根是否就是這個非負根?若是肯定的話,開方便能找到ko了。至於如何在不理會是否q=0下,求到mono,則容後再談。
 
5. 不論是否q=0,根據分析(1),把(***)作為 k2 的三次方程:
  (I) y1, y2, y3, y4四個都是實數時,
  k2有三個非負實根(分別是 k2 = (y1+y2)2,(y1+y3)2,(y1+y4)2);
  (II)
y1, y2, y3, y4二個是實數、二個是複數時,k2有兩種情形:
(A) k2有一個非負實根、二個是複數根;
(B) k2有一個非負實根、二個負實根;
 
 
  (III)
y1, y2, y3, y4四個都是複數根時,k2有兩種情形:
(A) k2有一個非負實根、二個是複數根;
(B) k2有一個非負實根、二個負實根;
 
 
     
6. 情形5(I)、5(IIA)和5(III)都不成問題。
  若是在5(I)、5(IIA),用解三次方程的方法找到的第一個實根 ko2 必然是非負;若是在5(III),不論 ko2 是否正數,總會導致3900Pv產生 Error。值得考慮的是5(IIB)這個情形。
   
7. 讀者可自證,在5(IIB)這個情形下,那二個負實根必是重根。
  因此把(***)視為 k2 的三次方程,其判別式(解三次方程文中的 r )為零。根據這點,讀者可自證,解到的第一個實根 ko2 不會是這個重根,換言之,那必然是那個非負實根。
   
總言之,在5(I)和5(II)兩個情形下,我們總能找到ko(ko > 0) ;在5(III)下,3900Pv會產生 Error。現在討論如何在不理會是否q=0下,得到mn的對應值mono,使(i), (ii) 和 (iii) 式同時滿足。
 
8. 考慮這條二次方程︰λ2(p+ko2)λ+r = 0 。
 
解得λ=λ12
q > 0,命mo = max{λ12}、no= min{λ12};
q < 0,命mo = min{λ12}、no= max{λ12}。
(是有方法使3900Pv如此分情形計算的)
 
 
 
  明顯mo , no滿足(i)和(iii)。問題是它們是否滿足(ii)。這點是肯定的。
   
9.
ko2(mo - no)2 = ko2[(mo + no)2 - 4mono]
  = ko2[(p + ko2)2 - 4 r]
  = ko2[ko4+ 2pko2 + p2 - 4r]
  = q2 (據(***))
 
 
 
  所以mo , no滿足(ii)。
   
不必理會是否q=0,用解三次方程的方法解(***)找到k的一個根ko
解λ2(p+ko2)λ+r = 0得λ=λ12
q > 0,mo = max{λ12}、no= min{λ12};
q < 0,mo = min{λ12}、no= max{λ12}。
k648k4+ 792k23969= 0...(***)
解三次方程的方法找到k的一個根ko= 3
解λ2+15λ54= 0得λ=18 , 3。
mo = 18 、no= 3。
 
y2koy+mo = 0和y2+koy+no= 0得y的四個根。代入x = y x
y23y18=0得y = 6,3。
代入x = y+1x=7,2。
y2 +3y+3= 0得y =
代入x = y+1x=。(引導3900Pv Error)

注意事項

如何做到分析8的要求︰

設λ1>λ2

設ε= RND[]。於是,若q > 0,則ε=1;若q < 0,則ε=0。

mo =ελ1+ (1-ε)λ2no =(1-ε)λ1+ ελ2