• 検索結果がありません。

‚SŽŸ•û’öŽ®‚̑㐔“I‰ð–@‚ɂ‚¢‚Ä

N/A
N/A
Protected

Academic year: 2021

シェア "‚SŽŸ•û’öŽ®‚̑㐔“I‰ð–@‚ɂ‚¢‚Ä"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

4次方程式の代数的解法について

北里大学 理学部物理 十河 清 第1章 基本対称式と対称多項式 第2章 3次方程式の代数的解法 第3章 4次方程式の代数的解法 第4章 数値計算プログラム

1

基本対称式と対称多項式

4つの変数x1, x2, x3, x4 の置換に関して対称な s1 = x1+ x2+ x3+ x4, s2 = x1x2+ x1x3+ x1x4+ x2x3+ x2x4+ x3x4, s3 = x1x2x3+ x1x2x4+ x1x3x4+ x2x3x4, s4 = x1x2x3x4 は4変数の「基本対称式」とよばれる。このとき、両辺の項別比較により確かめられる恒 等式 (x− x1)(x− x2)(x− x3)(x− x4) = x4− s1x3+ s2x2− s3x + s4 (1.1) に注意すれば、上の定義式は4次方程式の根 x1,· · · , x4 と係数(符号に注意)s1,· · · , s4 の関係に他ならないことがわかる。 よって「4次方程式を解く」とは、係数s1,· · · , s4 が与えられたとき、これらを用いて 解x1,· · · , x4 を求める問題となる。4次(以下)の方程式の場合には、根の置換に関する 対称性を利用して、これを「代数的に」(4則演算とベキ根を用いて)解くことができる。 これがいわゆる「根の公式」である。 この章では、その準備として定理 任意の対称多項式は、基本対称式によって表わされる を具体例を挙げて示す。得られた表式は後の章の本質的なところで利用される。 まず対称多項式に関する記号法について、具体例で説明しよう。以下の実例で大略は理 解されると思うが、より詳しく知りたい場合は「対称群・ヤング図形」等について勉強す ると良い。

(2)

まず始めに、変数の置換に関して対称な1次の多項式は m(1) = x1+ x2+ x3+ x4= s1 (1.2) のみで、これを左辺のように表わす。つぎに2次の対称多項式は m(2)= x21+ x22+ x32+ x24 = s21− 2s2, (1.3) m(12)= x1x2+ x1x3+ x1x4+ x2x3+ x2x4+ x3x4= s2 (1.4) の2種類があるが、これらも右辺のように基本対称式で書かれる。左辺の記号 (2), (12) はベキ乗パターンを表わしているのである。同様に、3次では m(3)= ∑ x31, m(2,1) = ∑ x21x2, m(13)= ∑ x1x2x3 (1.5) の3種類がある。ここで「和」は添字の置換によって得られる全ての項を集めるものとす る。これらを基本対称式で表わすには、展開(問題:これらを確かめよ) s31 = m(3)+ 3m(2,1)+ 6m(13), (1.6) s2s1 = m(2,1)+ 3m(13), (1.7) s3 = m(13) (1.8) を逆に解けば良い。かくして m(3) = s31− 3s2s1+ 3s3, (1.9) m(2,1)= s2s1− 3s3, (1.10) m(13)= s3 (1.11) を得る。 注:4次以上になると、展開を手計算で実行するのは大変である。そんな場合Mathematica や Maximaなどの「数式処理ソフト」を使うと便利である。 同様にして、4次の対称多項式は m(4)=∑x41 = s41− 4s21s2+ 2s22+ 4s1s3− 4s4, (1.12) m(3,1)=∑x31x2 = s21s2− 2s22− s1s3+ 4s4, (1.13) m(22)= ∑ x21x22 = s22− 2s1s3+ 2s4, (1.14) m(2,12)= ∑ x21x2x3 = s1s3− 4s4, (1.15) m(14)= x1x2x3x4 = s4 (1.16) の5種類からなる。これらの右辺も展開 s41 = m(4)+ 4m(3,1)+ 6m(22)+ 12m(2,12)+ 24m(14), (1.17) s21s2 = m(3,1)+ 2m(22)+ 5m(2,12)+ 12m(14), (1.18) s22 = m(22)+ 2m(2,12)+ 6m(14), (1.19) s1s3 = m(2,12)+ 4m(14), (1.20) s4 = m(14) (1.21)

(3)

を逆に解くことで導かれる。 同様にして5次の場合も計算できるが、以下では使わないので省略する。最後に、以下 の章でも用いる6次の対称多項式の場合の結果を掲げて、この章を終わろう。 m(6)= s61− 6s41s2+ 9s21s22− 2s32+ 6s31s3− 12s1s2s3+ 3s23− 6s21s4+ 6s2s4, (1.22) m(5,1)= s41s2− 4s21s22+ 2s32− 3s23+ 7s1s2s3+ s21s4− s31s3− 6s2s4, (1.23) m(4,2)= s21s22− 2s32− 3s23+ 4s1s2s3+ 2s21s4− 2s13s3+ 2s2s4, (1.24) m(4,12)= s31s3− 3s1s2s3+ 3s23− s21s4+ 2s2s4, (1.25) m(32)= s32− 3s1s2s3+ 3s23+ 3s21s4− 3s2s4, (1.26) m(3,2,1)= s1s2s3− 3s23− 3s21s4+ 4s2s4, (1.27) m(3,13)= s21s4− 2s2s4, (1.28) m(23)= s23− 2s2s4, (1.29) m(22,12)= s2s4 (1.30) なお、これらは4変数の場合の結果で、例えば6変数の場合にはs5, s6 まで登場し、対 称多項式の種類もさらに増えることになる。以上の結果は、I.G. Macdonald による「無 限変数の対称多項式」の理論の特別の場合(j ≥ 5のときsj ≡ 0)とみることができる。 問題: n次の対称多項式は何種類あるか。ただし、変数は無限個あるとする。 解答: つぎの母関数(分割関数という)で定義される正の整数 p(n)種類ある。 1 (1− x)(1 − x2)(1− x3)· · · = 1 + n=1 p(n)xn すなわち p(1) = 1, p(2) = 2, p(3) = 3, p(4) = 5, p(5) = 7, p(6) = 11 など。p(n)n を「正の整数の和」で表わす場合の数(分割数という)である。証明には、左辺をベキ級 数に展開して xn の係数の意味を考えればわかる。分割数p(n)n 次のヤング図形の総 数でもある。対称多項式とヤング図形は1対1に対応しており、記号(6), (5, 1)等はヤン グ図形の表記法にもなっている。

2

3次方程式の代数的解法

この章では、3次方程式の代数的解法について議論しよう。4次方程式を解く際にも、 「3次の分解方程式」という3次方程式を補助的に解く必要があるので、まんざら無駄に はならないのである。 この場合の基本対称式や対称多項式は、形式的には前章の諸式でx4 = 0と置く特殊化 によって得られるが、4次方程式の場合との混同を避けるために t1= x1+ x2+ x3, (2.1) t2= x1x2+ x2x3+ x3x1, (2.2) t3= x1x2x3 (2.3)

(4)

と書こう。 さて、1の3乗根を ω = −1 + −3 2 , ω 2 = −1 − −3 2 , ω 3 = 1 (2.4) として、つぎのような2つの変数を考える。 z1= x1+ ωx2+ ω2x3, z2 = x1+ ω2x2+ ωx3 (2.5) すると、変数 x1, x2, x3 の置換によって、z1, z2 は z1, ωz1, ω2z1, z2, ωz2, ω2z2 (2.6) の6つのうちのどれかに変換されることがわかる。したがって、2つの組み合わせ z31+ z23, z13· z32 (2.7) は置換によって不変な式、すなわち対称式となる。実際 z31+ z23 = 2m(3)− 3m(2,1)+ 12m(13), (2.8) z1z2 = m(2)− m(12), (2.9) z13· z23 =(m(2)− m(12) )3 (2.10) = m(6)− 3m(5,1)+ 6m(4,2)+ 3m(4,12)− 7m(32)− 3m(3,2,1)+ 9m(23) のように明らかに対称多項式となり、これらは基本対称式で表わすことができる。 実際、前章の結果をs4 = 0, s3 = t3, s2= t2, s1 = t1 と読み替えて用いれば p1≡ z13+ z32 = 2t31− 9t1t2+ 27t3 (2.11) p2≡ z13· z23 = (t21− 3t2)3 (2.12) を得る。問題:これらを確かめよ。 方程式が与えられたとき、すなわち係数t1, t2, t3 が既知のとき、上式によってz13, z23 は2次方程式 z2− p1z + p2= 0 (2.13) の解となるから、2次方程式の根の公式により z31 = 1 2 ( p1+ √ p21− 4p2 ) , z32 = 1 2 ( p1p21− 4p2 ) (2.14) と求められる(選び方は本質的でない)。なお、このときの2次方程式の判別式は D≡ p21− 4p2 =−27(x1− x2)2(x2− x3)2(x3− x1)2 ≡ −27 · ∆ (2.15) のように、3次方程式の判別式 ∆と(定数倍を除いて)本質的に同じものである。判別 式 ∆を基本対称式 t1, t2, t3 を用いて具体的に書くと ∆ = t21t22− 4t32− 4t31t3+ 18t1t2t3− 27t23 (2.16)

(5)

となる。文献には t1 = 0, t2 = 3p, t3 =−q とした場合の ∆ =−27(q2+ 4p3) という表 式がよく書かれている。 3次方程式の3つの根がすべて実数のとき、すなわち ∆ > 0のとき、2次方程式の根 としてのz13, z32 は虚数となる(D < 0)ことに注意しよう。逆に3つの根のうち2つが互 いに共役な複素数のときは ∆ < 0となり、したがって D > 0ゆえ z13, z32 は実数となる のである。 そこで、3次方程式を解く手続きは以下のようになる。まず、z1, z2 を z31, z23 の3乗 根として求める。ただしこのとき、 積z1z2 = t21− 3t2 となるように、3乗根の分枝を選ぶ 必要がある。実際上は z1 として z13 の3乗根のひとつを選び、それを用いてz2 = (t21 3t2)/z1 とすればよい。しかるのちに、連立方程式 x1+ x2+ x3= t1, x1+ ωx2+ ω2x3 = z1, x1+ ω2x2+ ωx3 = z2 (2.17) を逆に解いて x1 = 1 3(t1+ z1+ z2) , x2 = 1 3 ( t1+ ω2z1+ ωz2 ) , x3 = 1 3 ( t1+ ωz1+ ω2z2 ) (2.18) とすれば、求める3次方程式の根が得られる。 問題:これを確かめよ(ヒント:等式 ω3 = 1, 1 + ω + ω2 = 0を用いる)。

3

4次方程式の代数的解法

前章の3次方程式の解法は、3つの根で表わされた補助変数 z1= x1+ ωx2+ ω2x3, z2 = x1+ ω2x2+ ωx3 の導入が本質的であった。 4次方程式の場合に同様な役割をになう補助変数として y1 = (x1+ x2)− (x3+ x4), y2 = (x1+ x3)− (x2+ x4), (3.1) y3 = (x1+ x4)− (x2+ x3) を採用しよう。これらは、4つの根の置換によって

y1, y2, y3, −y1, −y2, −y3 (3.2) の6つのどれかに変換される。したがって

t1 ≡ y12+ y22+ y32, (3.3)

t2 ≡ y12· y22+ y22· y23+ y23· y12, (3.4)

(6)

は対称多項式となり、基本対称式 s1, s2, s3, s4 で表わされる。実際、これらは t1 =3m(2)− 2m(12) =3s21− 8s2, (3.6) t2 =3m(4)− 4m(3,1)+ 2m(22)+ 4m(2,12)− 24m(14) =3s41− 16s21s2+ 16s22+ 16s1s3− 64s4, (3.7) t3 =m(6)− 2m(5,1)− m(4,2)+ 6m(4,12)+ 4m(32) − 4m(3,2,1)− 8m(3,13)+ 10m(23)+ 4m(22,12) =s61− 8s41s2+ 16s21s22+ 16s31s3− 64s1s2s3+ 64s23 =(s31− 4s1s2+ 8s3 )2 (3.8) で与えられる(問題:これらを確かめよ)。よって、つぎの3次方程式(分解方程式) y3− t1y2+ t2y− t3 = 0 (3.9) を前章の方法で解き、その解の平方根からy1, y2, y3 を求めれば良い。ただし、3乗根の ときと同様に、平方根の取り方にも注意して、 y1y2y3 = s31− 4s1s2+ 8s3 となるように、平方根の分枝を選ぶ 必要がある。具体的には、y1, y2 を決めた後、y3 を上式に従って決めれば良い。しからば、 式 (3.1)とs1= x1+ x2+ x3+ x4 とを組み合わせて、4次方程式の根が x1 = 1 4(s1+ y1+ y2+ y3) (3.10) x2 = 1 4(s1+ y1− y2− y3) (3.11) x3 = 1 4(s1− y1+ y2− y3) (3.12) x4 = 1 4(s1− y1− y2+ y3) (3.13) のように求まる(問題:これを確かめよ)。 以上は歴史的に「フェラーリの方法」とよばれる解法と本質的に同じである。

4

数値計算プログラム

方程式の解を数値的に求めるには、「2分法」や「ニュートン法」のような逐次的求解 法のほうが一般的で、ここで議論してきたような「根の公式」を使うのはむしろ特殊であ る。なにしろ4次以下の方程式にしか存在しないのだから(!)。しかしながら、せっか く計算法がわかったので、これを実行するプログラムを作成してみよう。計算には複素数 が多用されるので、それらの間の加減乗除とベキ乗根の処理を標準で装備した言語が望ま しい。最近の拡張されたC言語「C99」やPythonは、その条件を満たしているので、こ こでは求めるプログラムを PythonとCで書いたものを紹介しよう。

(7)

4.1 Python 編

Pythonで複素数を扱うにはcmathをインポートする。3次方程式の解は、判別式の正 負を調べて、場合分けして解くのが良いであろう。

# poly4.py = solve the 4th order algebraic equation import sys, math, cmath

# preparation I=cmath.sqrt(-1) omega1=(-1+cmath.sqrt(-3))/2 omega2=(-1-cmath.sqrt(-3))/2 pi=4*math.atan(1.0) # Input

print "Input coefficients of ax^4+bx^3+cx^2+dx+e=0" print "a=" a=float(sys.stdin.readline()) print "b=" b=float(sys.stdin.readline()) print "c=" c=float(sys.stdin.readline()) print "d=" d=float(sys.stdin.readline()) print "e=" e=float(sys.stdin.readline())

s1, s2, s3, s4=-b/a, c/a, -d/a, e/a # 3rd order resolvent t1=3*s1*s1-8*s2 t2=3*pow(s1,4)-16*pow(s1,2)*s2+16*pow(s2,2)+16*s1*s3-64*s4 t3=pow(s1*s1*s1-4*s1*s2+8*s3,2) p1=2*t1*t1*t1-9*t1*t2+27*t3 z1z2=t1*t1-3*t2 p2=pow(z1z2,3) dd=p1*p1-4*p2 # discriminant

if (dd>0): # 1 real & 2 complex roots

z13, z23=(p1+math.sqrt(dd))/2, (p1-math.sqrt(dd))/2 z1=math.pow(z13, 1.0/3.0)

z2=z1z2/z1

y12, y22, y32=(t1+z1+z2)/3, (t1+omega2*z1+omega1*z2)/3, (t1+omega1*z1+omega2*z2)/3 y1, y2=cmath.sqrt(y12), cmath.sqrt(y22)

(8)

y3=(s1*s1*s1-4*s1*s2+8*s3)/(y1*y2) else: # 3 real roots

r=math.sqrt(p2) theta=math.acos(p1/(2*r)) r=math.pow(r, 1.0/3.0) y12=(t1+2*r*math.cos(theta/3))/3 y22=(t1+2*r*math.cos((theta+2*pi)/3))/3 y32=(t1+2*r*math.cos((theta-2*pi)/3))/3 y1, y2=cmath.sqrt(y12), cmath.sqrt(y22) y3=(s1*s1*s1-4*s1*s2+8*s3)/(y1*y2) # 4th order solution x1=(s1+y1+y2+y3)/4 x2=(s1+y1-y2-y3)/4 x3=(s1-y1+y2-y3)/4 x4=(s1-y1-y2+y3)/4 # output print x1, x2, x3, x4

# results of a=1, b=-3, c=6, d=-12, e=8:

# (2+0j) (1+0j) (8.32667268469e-17-2j) (1.11022302463e-16+2j) 上の例は解が2, 1, -2i, 2iになる場合であるが、数値誤差のため必ずしも正確に実部が ゼロとはならず 10−16のオーダーの極めて小さい値となっている。このような場合に結果 をゼロとみなして良いかどうかは、判別式を調べて人間が判断するしかないであろう。 4.2 C 言語編 C 言語で複素数を扱うには complex.h をインクルードする。複素数での平方根やベキ 乗には csqrtやcpowが用意されている。他にもいろいろな数学関数が複素化されている ので、マニュアルを見てほしい。便利になったものだ。

/* poly4.c = solve the 4th order algebraic equation */ #include <stdio.h> #include <math.h> #include <complex.h> int main(void){ double a, b, c, d, e, s1, s2, s3, s4; double t1, t2, t3; double p1, p2, dd, r, theta, z1z2, z13, z23;

(9)

double complex omega1, omega2, pi, z1, z2; double complex y12, y22, y32, y1, y2, y3; double complex x1, x2, x3, x4; /* preparation */ omega1=(-1+cpow(-3, 0.5))/2; omega2=(-1-cpow(-3, 0.5))/2; pi=4*atan(1.0); /* input */

printf("Input coefficients of ax^4+bx^3+cx^2+dx+e=0 with\n"); printf("numbers separated by space key.\n");

scanf("%lf%lf%lf%lf%lf", &a, &b, &c, &d, &e); s1=-b/a; s2=c/a; s3=-d/a; s4=e/a;

/* 3rd order resolvent */ t1=3*s1*s1-8*s2; t2=3*pow(s1,4)-16*pow(s1,2)*s2+16*pow(s2,2)+16*s1*s3-64*s4; t3=pow(s1*s1*s1-4*s1*s2+8*s3,2); p1=2*t1*t1*t1-9*t1*t2+27*t3; z1z2=t1*t1-3*t2; p2=pow(z1z2,3); dd=p1*p1-4*p2; // discriminant

if(dd>0){ // 1 real & 2 complex roots z13=(p1+sqrt(dd))/2; z23=(p1-sqrt(dd))/2; z1=pow(z13, 1.0/3.0); z2=z1z2/z1; y12=(t1+z1+z2)/3; y22=(t1+omega2*z1+omega1*z2)/3; y32=(t1+omega1*z1+omega2*z2)/3;

y1=csqrt(y12); y2=csqrt(y22); y3=(s1*s1*s1-4*s1*s2+8*s3)/(y1*y2); }else{ r=sqrt(p2); theta=acos(p1/(2*r)); r=pow(r, 1.0/3.0); y12=(t1+2*r*cos(theta/3))/3; y22=(t1+2*r*cos((theta+2*pi)/3))/3; y32=(t1+2*r*cos((theta-2*pi)/3))/3;

y1=csqrt(y12); y2=csqrt(y22); y3=(s1*s1*s1-4*s1*s2+8*s3)/(y1*y2); }

/* 4th order solution */ x1=(s1+y1+y2+y3)/4; x2=(s1+y1-y2-y3)/4;

(10)

x3=(s1-y1+y2-y3)/4; x4=(s1-y1-y2+y3)/4; /* output */

printf("x1=%lf + %lf I\n", creal(x1), cimag(x1)); printf("x2=%lf + %lf I\n", creal(x2), cimag(x2)); printf("x3=%lf + %lf I\n", creal(x3), cimag(x3)); printf("x4=%lf + %lf I\n", creal(x4), cimag(x4)); return 0;

/* results of a=1, b=-3, c=6, d=-12, e=8: x1=2.000000 + 0.000000 I x2=1.000000 + 0.000000 I x3=-0.000000 + -2.000000 I x4=0.000000 + 2.000000 I */ } 計算例は Pythonと同じで、解が 2, 1, -2i, 2i になる場合であるが、ごらんのように見か け上は(書式付き出力のため)正確な結果を与えるので、出力だけを見るとC のほうが 優秀であるように見える。一方でPythonの簡便さも捨てがたい(じつはPythonを先に 書き、それをコピペして Cに直したのである)。さしあたっては、適材適所で使い分けた り、両者を融合するというのが正解のようである。 参考文献 第1章 1. 岩堀長慶:『対称群と一般線形群の表現論』(岩波講座基礎数学)

2. I.G. Macdonald: Symmetric Functions and Hall Polynomials (Oxford Univ. Press)

3. K. Sogo: J. Math. Phys. 35 (1994) 2282 (1次元量子多体系と対称多項式 の理論) 第2・3章 1. 高木貞治:『代数学講義』(共立出版) 2. I. スチュワート:『明解ガロア理論』(講談社) 第4章 1. A. マーテリ:『PYTHON クイックレファレンス』(オライリー・ジャパン) 2. 戸川隼人:『ザ・C 99 −複素数型も使える新しい C の文法と例題集』(サイエ ンス社)

参照

関連したドキュメント

Such Sobolev estimate will be used in the construction of discrete spectrum of the branching law in Section 9. Section 4 contains some general results on discrete

本制度は、住宅リフォーム事業者の業務の適正な運営の確保及び消費者への情報提供

[r]

Possibly new results derived from these formulas are a limit from Koornwinder to Macdonald polynomials, an explicit formula for Koornwinder polynomials in two variables, and

[r]

議 長 委 員

③ 新産業ビジョン岸和田本編の 24 ページ、25 ページについて、説明文の最終段落に経営 者の年齢別に分析した説明があり、本件が今回の新ビジョンの中で謳うデジタル化の

S., Oxford Advanced Learner's Dictionary of Current English, Oxford University Press, Oxford