N88-BASICで3次方程式 (1回目)

2021/10/7(木)
N88-BASICで3次方程式 (1回目)
 
ax3 + bx2 + cx + d = 0を解く
 
変形
B = b/a, C = c/a, D = d/aと置くと
x3 + Bx2 + Cx + D = 0
(x + B/3)3 + (C - B2/3)x + D - (B/3)3 = 0
 
X = x + B/3と置くと、x = X - B/3
X3 + (C - B2/3)(X - B/3) + D - (B/3)3 = 0
X3 + (C - B2/3)X - CB/3 + B3/9 + D - (B/3)3 = 0
X3 + (C - B2/3)X + D - CB/3 + 2(B/3)3 = 0
よって
 
p = C - B2/3 = (3ac - b2)/(3a2)
q = D - CB/3 + 2(B/3)3 = (33a2d - 32abc + 2b3)/(3a)3 
x = X - B/3 = X - b/(3a)
と置くと
ax3 + bx2 + cx + d = 0は
X3 + pX + q = 0
と変形できるので
 
x3 + px + q = 0の形の3次方程式
カルダノの公式で解きます
 
x = u + vと置くと
(u + v)3 + p(u + v) + q = 0
u3 + v3 + 3uv(u + v) + p(u + v) + q = 0
u3 + v3 + q + (3uv + p)(u + v) = 0
u3 + v3 + q = 0かつ(3uv + p)(u + v) = 0
 
u + v = 0の時
u = -vをu3 + v3 + q = 0に代入すると
-v3 + v3 = -q = 0よりq = 0となる
q = 0の時u3 + v3 + q = 0は
u3 = -v3 となり、u = -vを含んでいます
つまりu + v = 0はu3 + v3 + q = 0に
含まれているので無視し
u3 + v3 + q = 0かつ3uv + p = 0
変形してu3 + v3 = -q , u3v3 = (-p/3)3 
となるu,vを考えます
 
t = u3 , v3 となる2次方程式は
(t - u3)(t - v3)
= t2 - (u3 + v3)t + u3v3 
= t2 + qt - (p/3)3 = 0より
t = {-q±√(q2 + 4(p/3)3}/2
 = -q/2±√{(q/2)2 + (p/3)3}
 
α= 3√[-q/2+√{(q/2)2 + (p/3)3}]
β= 3√[-q/2-√{(q/2)2 + (p/3)3}]
(α,βは実数同士または共役複素数)
と置くと
uとvは可換なのでどちらでもよく
u = α, αω, αω2 
v = β, βω, βω2 
 
x = u + vの組合わせは
3次方程式の解xの少なくとも1つは
実数なので、
和が実数となる共役複素数のペア
u + v = α+β,αω+βω,αω2+βω2 
のうち、代表でα+βを選んで
他は捨てるとします
α,β以外で共役とならないペアは
αω+βω2,αω2+βωとなります
(a+biとa-biを互いに共役複素数という)
 
3つの解を
x = α+β,αω+βω2,αω2+βω
a = α+β, b = αω+βω2, c = αω2+βω
と仮定すると、これが解となる方程式は
(x - a)(x - b)(x - c)
= (x - a)(x2 - (b+c)x + bc)
= x3 - (b+c)x2 + bcx - ax2 + (b+c)ax - abc
= x3 - (a+b+c)x2 + (ab + bc + ca)x - abc
 
ω={-1+√(3)i}/2, ω2={-1-√(3)i}/2, ω3=1
 
a+b+c = α+β+αω+βω2+αω2+βω
   = (α+β)(1+ω+ω2) = (α+β)(1-1) = 0
ab = (α+β)(αω+βω2)
  = α2ω+αβω2+αβω+β2ω2 
  = α2ω-αβ+β2ω2 
bc = (αω+βω2)(αω2+βω)
  = α2+αβω2+αβω+β2 
  = α2-αβ+β2 
ca = (αω2+βω)(α+β)
  = α2ω2+αβω2+αβω+β2ω
  = α2ω2-αβ+β2ω
ab + bc + ca = -3αβ
abc = (α+β)(αω+βω2)(αω2+βω)
  = (α+β)(α2-αβ+β2)
  = α32β+αβ22β-αβ23 
  = α33 
また
u3 + v3 = -q , uv = -p/3
でしたので
α33 = -q , αβ = -p/3
となるので
 
(x - a)(x - b)(x - c)
= x3 - (a+b+c)x2 + (ab + bc + ca)x - abc
= x3 - 3αβx - (α33)
= x3 +px + qとなります
 
x3 + px + q = 0を因数分解すると
{x - (α+β)}{x - (αω+βω2)}{ x - (αω2+βω)}=0
となるので解は
x = α+β, αω+βω2, αω2+βω
α= 3√[-q/2+√{(q/2)2 + (p/3)3}]
β= 3√[-q/2-√{(q/2)2 + (p/3)3}]
(α,βは実数同士または共役複素数)
となる
 
(q/2)2 + (p/3)3 < 0の時、三乗根の中身は虚数に
なるので、複素数の三乗根の求め方で
求める必要があります
詳しくは
https://ulprojectmail.blogspot.com/2021/10/n88-basicn-3.html
N88-BASICでn乗の解 (3回目)
を参照して下さい
 
xn = a+biの解は
x = |a+bi|1/n{cos((2πk+p)/n) + isin((2πk+p)/n)}
(p = Tan-1(b/a), k = 0~n-1の整数)
(ただし、Tan-1(正/0)=π/2,Tan-1(負/0)=-π/2とする)
n=3,a=1,b=0,k=0の時x = ω0 = 1
n=3,a=1,b=0,k=1の時x = ω  = {-1+√(3)i}/2
n=3,a=1,b=0,k=2の時x = ω2 = {-1-√(3)i}/2
です
 
uR = Re u, uI = Im u
vR = Re v, vI = Im v
2uω = (uR+uIi)(-1+√(3)i)
= -uR - uI√3) + ( uR√3 - uI)i
2vω2 = (vR+vIi)(-1-√(3)i)
= -vR + vI√3) + (-vR√3 - vI)i
 
2(uω+vω2)
= -  (uR+vR)    - (uI-vI)√3
 +{ (uR-vR)√3 - (uI+vI)   }i
2(uω2+vω)
= -  (uR+vR)    + (uI-vI)√3
 +{-(uR-vR)√3 - (uI+vI)   }i
 
R1 = (uR+vR)/2, R2 = {(uR-vR)√3}/2
I1 = (uI+vI)/2, I2 = {(uI-vI)√3}/2
u + v = (uR+vR) + (uI+vI)i
uω+vω2 = -R1-I2 + ( R2-I1)i
uω2+vω = -R1+I2 + (-R2-I1)i
 
以上で、解を計算することができそうです
(証明になっていないと思いますので不安は
残りますが、一応これでプログラムを作りました
不具合があるかもしれませんがご了承下さい)

3次方程式の例
x = -1.5, 1+i, 1-iを解に持つ3次方程式は
{x-(-1.5)}{x-(1+i)}{x-(1-i)} = 0
2(x+1.5)(x-1 - i)(x-1 + i) = 0 (両辺2倍)
(2x+3){(x-1)2-i2} = 0
(2x+3)(x2-2x+1 + 1) = 0
(2x+3)(x2-2x+2) = 0
2x3-4x2+4x + 3x2-6x+6 = 0
2x3-x2-2x+6 = 0











NL-BASICとblg~.zip(cubi001.bas)は
このブログ(以下のリンク)からダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい


このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)