3次方程式を解く

 投稿者:山中和義  投稿日:2014年11月 1日(土)09時55分4秒
  3次方程式を解く - ラグランジュのリゾルベントと補助方程式(リゾルベントを解に持つ2次方程式)


2次方程式 x^2+ax+b=0 のとき、2つの解をα,βとすると、
L=(α-β)^2=(α+β)^2-4αβ=a^2-4b より、
連立方程式(行列による表現)
┌ 1  1 ┐┌ α ┐=┌ -a         ┐
└ 1 -1 ┘└ β ┘ └ √(a^2-4b) ┘
を解けばよい。
これより、解の公式を得る。
補足
リゾルベントと解の関係
 (α+β)+(α-β) = 2α
 (α+β)-(α-β) = 2β
または
α,β=((α+β)±(α-β))/2=((α+β)±√{(α-β)^2})/2=((α+β)±√{(α+β)^2-4αβ})/2=(-a±√{a^2-4b})/2


3次方程式 x^3+ax^2+bx+c=0 のとき、3つの解をα,β,γとすると、
L1
=(α+ωβ+ω^2γ)^3
=α^3+β^3+γ^3+6αβγ + 3ω(α^2β+β^2γ+γ^2α) + 3ω^2(αβ^2+βγ^2+γα^2)

L2
=(α+ω^2β+ωγ)^3
=α^3+β^3+γ^3+6αβγ + 3ω(αβ^2+βγ^2+γα^2) + 3ω^2(α^2β+β^2γ+γ^2α)
より、

L1+L2
=2(α+β+γ)^3 - 9(α+β+γ)(αβ+βγ+γα) + 27αβγ
=-2a^3+9ab-27c

L1L2
=((α+β+γ)^2 - 3(αβ+βγ+γα))^3
=(a^2-3b)^3

以上より、補助方程式 t^2 - (L1+L2)t + L1L2 = 0 ∴t^2 + (2a^3-9ab+27c)t + (a^2-3b)^3 = 0
この2次方程式の2つの解をt1,t2とすると、
連立方程式(行列による表現)
┌ 1  1     1    ┐┌ α ┐=┌ -a       ┐
│ 1  ω    ω^2 ││ β │ │ t1^(1/3) │
└ 1  ω^2  ω   ┘└ γ ┘ └ t2^(1/3) ┘
を解けばよい。
補足
リゾルベントと解の関係
 (α+β+γ)+    (α+ωβ+ω^2γ)+    (α+ω^2β+ωγ) = 3α
 (α+β+γ)+ω^2(α+ωβ+ω^2γ)+  ω(α+ω^2β+ωγ) = 3β
 (α+β+γ)+  ω(α+ωβ+ω^2γ)+ω^2(α+ω^2β+ωγ) = 3γ



OPTION ARITHMETIC COMPLEX !複素数

LET A=3 !x^3+Ax^2+Bx+C=0
LET B=0
LET C=-1

CALL Solve3EQU(A,B,C, x1,x2,x3)
PRINT x1 !解を表示する
PRINT x2
PRINT x3

DEF f(x)=x^3+A*x^2+B*x+C !検算
PRINT f(x1); f(x2); f(x3)


LET A=-8 !x^4+Ax^3+Bx^2+Cx+D
LET B=26
LET C=-44
LET D=40
CALL Solve4EQU(A,B,C,D, x1,x2,x3,x4)
PRINT x1
PRINT x2
PRINT x3
PRINT x4

DEF g(x)=x^4+A*x^3+B*x^2+C*x+D
PRINT g(x1); g(x2); g(x3); g(x4)

END


EXTERNAL FUNCTION pow(x,y) !べき乗 x^y
OPTION ARITHMETIC COMPLEX !複素数
LET pow=EXP(y*LOG(x)) !x^y
END FUNCTION


EXTERNAL SUB Solve2EQU(A,B, x1,x2) !2次方程式 x^2+Ax+B=0を解く
OPTION ARITHMETIC COMPLEX !複素数
LET L1=-A !α+β
LET L2=SQR(A^2-4*B) !α-β
LET x1=(L1+L2)/2
LET x2=(L1-L2)/2
END SUB


EXTERNAL SUB Solve3EQU(A,B,C, x1,x2,x3) !3次方程式 x^3+Ax^2+Bx+C=0を解く
OPTION ARITHMETIC COMPLEX !複素数
LET w=EXP(COMPLEX(0,1)*2*PI/3) !w ※1の原始3乗根
CALL Solve2EQU(2*A^3-9*A*B+27*C,(A^2-3*B)^3, t1,t2) !t^2+Pt+Q=0の2つの解
LET L1=-A !α+β+γ
LET L2=pow(t1,1/3) !α+ωβ+ω^2γ
LET L3=pow(t2,1/3) !α+ω^2β+ωγ
LET x1=(L1+    L2+    L3)/3
LET x2=(L1+w^2*L2+  w*L3)/3
LET x3=(L1+  w*L2+w^2*L3)/3
END SUB


EXTERNAL SUB Solve4EQU(A,B,C,D, x1,x2,x3,x4) !4次方程式 x^4+Ax^3+Bx^2+Cx+D=0を解く
OPTION ARITHMETIC COMPLEX !複素数
CALL Solve3EQU(-(3*A^2-8*B),3*A^4-16*A^2*B+16*B^2+16*A*C-64*D,-(A^3-4*A*B+8*C)^2, t1,t2,t3) !t^3+Pt^2+Qt+R=0の3つの解
LET L1=-A !α+β+γ+δ
FOR S1=-1 TO 1 STEP 2 !±を確定させる
   LET L2=S1*SQR(t1) !α+β-γ-δ
   FOR S2=-1 TO 1 STEP 2
      LET L3=S2*SQR(t2) !α-β+γ-δ
      FOR S3=-1 TO 1 STEP 2
         LET L4=S3*SQR(t3) !α-β-γ+δ

         LET x1=(L1+L2+L3+L4)/4
         LET x2=(L1+L2-L3-L4)/4
         LET x3=(L1-L2+L3-L4)/4
         LET x4=(L1-L2-L3+L4)/4
         IF ABS((((x1+A)*x1+B)*x1+C)*x1+D)<1E-13 THEN EXIT SUB !※調整が必要である
      NEXT S3
   NEXT S2
NEXT S1
PRINT "論理エラーです。"
STOP
END SUB



!--------------------------------------

EXTERNAL SUB Solve3EQU2(A,B,C, x1,x2,x3) !3次方程式 x^3+Ax^2+Bx+C=0を解く
OPTION ARITHMETIC COMPLEX !複素数
LET w=EXP(COMPLEX(0,1)*2*PI/3) !w ※1の原始3乗根

DIM M(3,3),x(3),n(3) !連立方程式 Mx=n
LET M(1,1)=1 !α+β+γ
LET M(1,2)=1
LET M(1,3)=1
LET M(2,1)=1 !α+ωβ+ω^2γ
LET M(2,2)=w
LET M(2,3)=w^2
LET M(3,1)=1 !α+ω^2β+ωγ
LET M(3,2)=w^2
LET M(3,3)=w

CALL Solve2EQU(2*A^3-9*A*B+27*C,(A^2-3*B)^3, t1,t2) !t^2+Pt+Q=0の2つの解
LET n(1)=-A
LET n(2)=pow(t1,1/3) !3乗根
LET n(3)=pow(t2,1/3)

DIM iM(3,3) !連立方程式を解く
MAT iM=INV(M)
MAT x=iM*n

LET x1=x(1)
LET x2=x(2)
LET x3=x(3)
END SUB


EXTERNAL SUB Solve4EQU2(A,B,C,D, x1,x2,x3,x4) !4次方程式 x^4+Ax^3+Bx^2+Cx+D=0を解く
OPTION ARITHMETIC COMPLEX !複素数

DIM M(4,4),x(4),n(4) !連立方程式 Mx=n
DATA 1, 1, 1, 1 !α+β+γ+δ
DATA 1, 1,-1,-1 !α+β-γ-δ
DATA 1,-1, 1,-1 !α-β+γ-δ
DATA 1,-1,-1, 1 !α-β-γ+δ
MAT READ M

CALL Solve3EQU2(-(3*A^2-8*B),3*A^4-16*A^2*B+16*B^2+16*A*C-64*D,-(A^3-4*A*B+8*C)^2, t1,t2,t3) !t^3+Pt^2+Qt+R=0の3つの解
LET n(1)=-A
FOR S1=-1 TO 1 STEP 2 !±を確定させる
   LET n(2)=S1*SQR(t1) !α+β-γ-δ
   FOR S2=-1 TO 1 STEP 2
      LET n(3)=S2*SQR(t2) !α-β+γ-δ
      FOR S3=-1 TO 1 STEP 2
         LET n(4)=S3*SQR(t3) !α-β-γ+δ

         DIM iM(4,4) !連立方程式を解く
         MAT iM=INV(M)
         MAT x=iM*n

         LET x1=x(1)
         LET x2=x(2)
         LET x3=x(3)
         LET x4=x(4)

         IF ABS((((x1+A)*x1+B)*x1+C)*x1+D)<1E-13 THEN EXIT SUB !※調整が必要である
      NEXT S3
   NEXT S2
NEXT S1
PRINT "論理エラーです。"
STOP
END SUB


 

Re: 3次方程式を解く

 投稿者:山中和義  投稿日:2014年11月10日(月)10時46分53秒
  > No.3541[元記事へ]

因数分解による


2次方程式 x^2+Ax+B=0

チルンハウス変換 x=X-A/2 すると、(X-A/2)^2+A(X-A/2)+B=X^2-(A^2-4B)/4
1次の項が消えて、X^2-P=(X+√P)(X-√P)の形となる。これより、X=±√P=±√(A^2-4B)/2
よって、x=±√(A^2-4B)/2 -A/2



同様に、x=X-A/3、x=X-A/4より、X^3+PX+Q=0、X^4+PX^2+QX+R=0 を考える。


3次方程式

X^3+(-3yz)X+(y^3+z^3)=(X+y+z)(X+ωy+ω^2z)(X+ω^2y+ωz)より、Xの3次方程式とみなすと、
x1=-(    y+    z)
x2=-(  ωy+ω^2z)
x3=-(ω^2y+  ωz)

X^3-PX+Q=0と係数を比較すると、P=3yz、Q=y^3+z^3
2つの解y^3,z^3をもつ2次方程式 t^2-Qt+P^3/27=0 を考える。

カルダノの方法に相当する。



4次方程式

X^4+y^4+z^4+w^4-2(X^2y^2+X^2z^2+X^2w^2+y^2z^2+y^2w^2+z^2w^2)+8Xyzw=(X+y+z+w)(X+y-z-w)(X-y+z-w)(X-y-z+w)より、
x1=-( y+z+w)
x2=-( y-z-w)
x3=-(-y+z-w)
x4=-(-y-z+w)

X^4+PX^2+QX+R=0と係数を比較すると、P=-2(y^2+z^2+w^2)、Q=8yzw、R=y^4+z^4+w^4-2(y^2z^2+y^2w^2+z^2w^2)
3つの解y^2,z^2,w^2をもつ3次方程式 t^3+(P/2)t^2+(P^2/16-R/4)t-Q^2/64=0 を考える。
ただし、8yzw=Qを満たすy,z,wを選ぶ。

オイラーの方法に相当する。




OPTION ARITHMETIC COMPLEX !複素数

LET A=3 !x^3+Ax^2+Bx+C=0
LET B=0
LET C=-1

CALL Solve3EQU(A,B,C, x1,x2,x3)
PRINT x1 !解を表示する
PRINT x2
PRINT x3

DEF f(x)=x^3+A*x^2+B*x+C !検算
PRINT f(x1); f(x2); f(x3)


LET A=-8 !x^4+Ax^3+Bx^2+Cx+D
LET B=26
LET C=-44
LET D=40
CALL Solve4EQU(A,B,C,D, x1,x2,x3,x4)
PRINT x1
PRINT x2
PRINT x3
PRINT x4

DEF g(x)=x^4+A*x^3+B*x^2+C*x+D
PRINT g(x1); g(x2); g(x3); g(x4)

END


EXTERNAL FUNCTION pow(x,y) !べき乗 x^y
OPTION ARITHMETIC COMPLEX !複素数
IF x=0 THEN LET pow=0 ELSE LET pow=EXP(y*LOG(x)) !x^y
END FUNCTION


EXTERNAL SUB Solve2EQU(A,B, x1,x2) !2次方程式 x^2+Ax+B=0 を解く
OPTION ARITHMETIC COMPLEX !複素数
LET x1=-SQR(A^2-4*B)/2 -A/2
LET x2= SQR(A^2-4*B)/2 -A/2
END SUB


EXTERNAL SUB Solve3EQU(A,B,C, x1,x2,x3) !3次方程式 x^3+Ax^2+Bx+C=0 を解く
OPTION ARITHMETIC COMPLEX !複素数
LET w=EXP(COMPLEX(0,1)*2*PI/3) !w ※1の原始3乗根
LET P=-A^2/3+B !チルンハウス変換 x=X-A/3
LET Q=2*A^3/27-A*B/3+C
CALL Solve2EQU(-Q,(-P)^3/27, t1,t2) !解の1つ
LET r1=pow(t1,1/3)
LET r2=(-P)/(3*r1) !(-P)=3yzより
LET x1=-(    r1+    r2) -A/3
LET x2=-(  w*r1+w^2*r2) -A/3
LET x3=-(w^2*r1+  w*r2) -A/3
END SUB


EXTERNAL SUB Solve4EQU(A,B,C,D, x1,x2,x3,x4) !4次方程式 x^4+Ax^3+Bx^2+Cx+D=0 を解く
OPTION ARITHMETIC COMPLEX !複素数
LET P=-3*A^2/8+B !チルンハウス変換 x=X-A/4
LET Q=A^3/8-A*B/2+C
LET R=-3*A^4/256+A^2*B/16-A*C/4+D
CALL Solve3EQU(P/2,P^2/16-R/4,-Q^2/64, t1,t2,t3) !3つの解
FOR S1=-1 TO 1 STEP 2 !±を確定させる
   LET r1=S1*SQR(t1)
   FOR S2=-1 TO 1 STEP 2
      LET r2=S2*SQR(t2)
      FOR S3=-1 TO 1 STEP 2
         LET r3=S3*SQR(t3)

         LET x1=-( r1+r2+r3) -A/4
         LET x2=-( r1-r2-r3) -A/4
         LET x3=-(-r1+r2-r3) -A/4
         LET x4=-(-r1-r2+r3) -A/4

         IF ABS(8*r1*r2*r3-Q)<1E-13 THEN EXIT SUB !※調整が必要である
      NEXT S3
   NEXT S2
NEXT S1
PRINT "論理エラーです。"
STOP
END SUB


 

戻る