カテゴリー
ガロア理論 数学

続・方程式のガロア群の求め方

方程式のガロア群を解の置換群として求める方法を書いた2年前のこの記事を元に、数式処理ソフトで具体的にガロア群を計算する手順を組み立てて下さった方がいました。こちらの記事で公開されています。
-数学- ガロア群の計算、初めに Maxima で綴る数学の旅

コメント欄では、数値計算を利用して(正面から立ち向かう計算では数式処理ソフトでも手に余るような)5 次方程式に対しても現実的な時間内で \(F(x)\) の既約分解を求める手順も紹介されて、大変ありがたいです。

(ちょっと意外でしたが、一度 \(120\) 次式 \(F(x)\) が整数係数の多項式として求まってしまえば、それを既約分解することは正面から立ち向かっても数式処理ソフトなら手に負える範囲の計算なのですね。真に大変なのはその手前の、\(120\) 次の対称式として得られる \(F(x)\) の係数を基本対称式に帰着してその具体的な値を求める、という計算の部分のようです。それらに難易度的な差があるかどうかということは考えもしていなかったので「おお、そうなのか!」という驚きがありました)

ここから、以前の別記事の手順に従って、可解なガロア群を持つ \(5\) 次方程式の解を実際に求める、ということに、時間のあるときにじっくり取り組んでみようと思います。

以下、補足的な事柄についていくつか触れてみます。

上述の、数値計算を利用した \(5\) 次方程式のガロア群の計算法ですが、何をやっているかというと、\(V_{k}\) すべてを根に持つ多項式 \(F(x)\) を求める際、係数を解 \(\alpha_{1}, \alpha_{2}, \dots, \alpha_{5}\) の対称式として求めるのではなく、数値計算で \(\alpha_{1}, \alpha_{2}, \dots, \alpha_{5}\) の値を十分精度よく求めておいて、\(F(x)=(x-V_{1})(x-V_{2}) \dots (x-V_{120})\) (の係数)をまずは数値的に求めています。\(\alpha_{1}, \alpha_{2}, \dots, \alpha_{5}\) の基本対称式が整数であることから、\(F(x)\) の真の係数はすべて整数になるとわかっています。なので、数値的に得た係数を小数点以下四捨五入することによって真の値が求まるはず…!という考えに基づき \(F(x)\) を求めているわけです。

敢えて問題点を挙げれば、数値計算の精度が十分でなかった場合、四捨五入で得た整数の係数が真の値と違ってしまう可能性があるため、得られた既約分解が本当に正しいかどうか確かめるのが難しい、という点でしょうが、実用的には十分な手法だと思います。また、気になる場合は数値計算の精度を上げて行ったときに求まった \(F(x)\) に違いが発生するかどうかを観察すれば、より信頼度の高い結果が得られると期待していいのでしょう。

他に、一般の \(5\) 次方程式に対する手法として見た場合に問題となりうる部分として思いつくのは次の点でしょう。

  • \(V\) を \(\alpha_{1}, \alpha_{2}, \dots, \alpha_{5}\) の1次結合として表すときの係数が \(1,2,3,4,5\) に固定されているため、運悪く \(120\) 通りの\(V_{k}\) の値の中にたまたま重複が発生するような \(5\) 次方程式だった場合に破綻する(\(F(x)\) の既約分解自身は問題なく実行できるが、重複因子が出るためそこから先「各根 \(\alpha_{i}\) を \(V\) のみの多項式(有理式)で表す」計算で行き詰まる。私の記事のように Lagrange 補間を使おうとすると分母が \(0\) になってしまうし、先方の記事のように互除法を使うと得られる最大公約式が \(\alpha_{i}\) について \(2\) 次以上になってしまって、\(=0\) とおいても単純に \(\alpha_{i}\) について解けない)。
  • 方程式を整数係数にしたときに、最高次の係数が \(1\) にならない(できない)場合、解の基本対称式の値が整数にならないので、\(F(x)=(x-V_{1})(x-V_{2}) \dots (x-V_{120})\) の真の係数が整数にならない。このため、「小数点以下を四捨五入する」やり方では \(F(x)\) の真の係数が得られない。

後者は簡単に解決できます。何次方程式でも同じなので \(3\) 次方程式で説明しますが、例えば
\begin{align*}
3x^{3}-2x^{2}+1 &= 0 \\
\therefore x^{3} – \frac{2}{3}x^{2} + \frac{1}{3} &= 0
\end{align*}
という方程式の場合、\(x=y/3\) とおいて未知数を \(x\) から \(y\) に取り替えれば
\begin{gather*}
\frac{y^{3}}{3^{3}} – \frac{2}{3} \cdot \frac{y^{2}}{3^{2}} + \frac{1}{3}
= 0 \\
\therefore y^{3} – 2y^{2} + 9=0
\end{gather*}
のように、最高次の係数が \(1\) の整数係数方程式に書き換えられます。\(x=y/3\) の変換では、置換群としてのガロア群に変化はありませんから、こうしてからガロア群を求めれば OK です。同様にして、最高次の係数が \(1\) でない整数係数方程式は、\(x=y/a\) の変換で \(a\) を適切な整数に選べば、必ずガロア群を保ったまま最高次の係数が \(1\) の整数係数方程式に書き換えられます。なので、結局この話では整数係数方程式の最高次の係数は \(1\) だと仮定しても一般性は失いません。

前者については、英語の文献 Algebraic Number Theoryの 8 章、p.144 に
「the hard way」として挙げられている類似のアルゴリズムなら、問題を回避できます。準備として、基本対称式はすべて整数だとしておきます。上で注意したように、こうしても一般性は失いません。

\(V\) を定めるときの \(\alpha_{1}, \dots, \alpha_{5}\) の1次結合の係数を(\(1, 2, 3, 4, 5\) のような)整数の具体値ではなく、文字(不定元)\(A_{1}, A_{2}, \dots, A_{5}\) にしましょう。すると今度は \(V_{1}, \dots, V_{120}\) がすべて異なる(不定元 \(A_{1}, \dots, A_{5}\) の多項式として)ことが保証されます(これは、\(\alpha_{1}, \dots, \alpha_{5}\) の値によらない)。これまでの手順と同様にして \(F(x)=(x-V_{1}) \dots (x-V_{120})\) を作ると、その係数が具体的に求められます。ただし、今度はそれは「\(A_{1}, \dots, A_{5}\) の整数係数の多項式として」具体的に求まるわけです。求め方は、\(\alpha_{1}, \dots, \alpha_{5}\) の対称式として表してから基本対称式の値に帰着する、という律儀なやり方でも理論上はいいですし、やはり数値計算と四捨五入を組み合わせた求め方でも構いません。

そうやって求まった \(F(x)\) は、\(x, A_{1}, \dots, A_{5}\) の \(6\) 変数整数係数多項式です。これは \(1\) 変数の場合と同様に確実に既約分解可能なアルゴリズムがある(少なくとも理論上は)ので、がんばって既約分解を実行します。そうやって得られた任意の既約因子を \(1\) つ固定すると、それを不変に保つような \(A_{1}\)〜\(A_{5}\) の置換からなる置換群が定まりますが、それこそが求めるガロア群です。(そうなる理由は、リンク先の文献では「〜を見よ」で済まされていますが、本記事をここまで読んできた読者の方ならよくお解りになることと思います)

このアルゴリズムだと、\(V_{k}\) に重複が発生する懸念がない代わりに、整数係数とは言え(\(120\) 次の)\(6\) 変数多項式の既約分解が必要となるため、ここで必要な計算量が一気に跳ね上がるんではないかと思います。\(1\) 変数の場合と違って、ここは数式処理ソフトでも一般の \(5\) 次方程式は現実的な時間内には処理不能かもしれません。

また、\(F(x)\) の既約因子に \(A_{1}, \dots, A_{5}\) が「生で」含まれているため、ここから「各解 \(\alpha_{i}\) を \(V\) で表す式」を求める計算はかなりハードなものになります。結果はもちろん、\(V\) だけではなく不定元 \(A_{1}, \dots, A_{5}\) も含む有理式になります(※ もちろんこんな重い計算は実際に実行してみたわけではないのですが、とにかく理論上はそれが可能です)。上で述べた通り、このアルゴリズムでは \(\alpha_{i}\) を \(V\) で表す式まで求めなくても置換群としてのガロア群は求まるので、「置換群としてのガロア群を求める」ことだけが目的なら \(\alpha_{i}\) を \(V\) で表す式まで求める必要はありません。しかし、求まったガロア群が可解群だった場合に、解 \(\alpha_{i}\) の実際の値をべき根で求めようとすると、\(\alpha_{i}\) を \(V\) で表す式がそういう「\(A_{1}, \dots, A_{5}\) が入った形」になっているとやはり計算の手間が跳ね上がるのは見てとれます。ですので、目的に「置換群としてのガロア群を求める」ことだけでなく「可解な方程式だと解った場合に解 \(\alpha_{i}\) の実際の値をべき根で求める」ことも含まれているのであれば、このアルゴリズムが必ずしも有利とは限らない、ということには注意しておきます。

「続・方程式のガロア群の求め方」への4件の返信

こちらでご紹介頂き、ありがとうございます。
ブログのコメントでも書いたのですが、数値計算による方法では精度が重要です。5次方程式では有効精度100桁で計算すれば四捨五入で係数が正しく求まるのですが、6次方程式では有効精度1000桁必要でした。

ご指摘のようにその後の因数分解は今までの計算ではボトルネックにはなっていません。6次方程式では720(=6!)次方程式の因数分解を実行しましたが、そこは問題なく実行できています。

コメント頂き、ありがとうございます。数式処理ソフトの因数分解のアルゴリズムはおそらく様々な工夫が凝らされていて、「どんな場合でも何とかなる(けれど非効率)」ような万能の最終手段に訴える前に「こういう場合はこうすると早い」というノウハウが何通りもあって、それを順次試しているんだと思いますが、大したものですね。使う側からするとありがたい話です。

可解であることが判った方程式を実際に解く方法に関して,本ブログの方法を数式処理ソフトで計算してみました。唐突で恐縮ですが,計算結果をお知らせしたく,PDFファイル(2.5MB)を送信してもよろしいでしょうか。計算結果を自分のブログで公開できればよいのですが,私にはそのような技量がありません。このままにしておくのはもったいないと思い,貴殿に送信することを思い立ちました。有用な内容であると確信していますが,貴殿がそのように思われなければ,そのまま廃棄されても構いません。計算結果を送信してもよいか,ご返答をお願い致します。

計算例を1つだけ示します。可解な5次方程式x^5+2x^3+4x^2-x+4=0の1根は,3つのべき根α1,α2,α3と1の原始5乗根ζ5を使って次式で表されます。
x=(1/5)α3(7-ζ5+6ζ5^2+3ζ5^3)
+(1/156156)α3^2(
-50820(11-7ζ5+11ζ5^2)
-490α1(5-3ζ5+5ζ5^2)
+66α2(659+403ζ5+147ζ5^2+806ζ5^3)
+α1α2(632+393ζ5+154ζ5^2+786ζ5^3)
)
+(1/2030028)α3^3(
235620(13-21ζ5+21ζ5^2-13ζ5^3)
+4326α1(29-47ζ5+47ζ5^2-29ζ5^3)
+660α2(4501+1724ζ5+1724ζ5^2+4501ζ5^3)
+25α1α2(1953+745ζ5+745ζ5^2+1953ζ5^3)
)
+(5/26390364)α3^4(
11942700(55ζ5-34ζ5^2+55ζ5^3)
+11200α1(123ζ5-76ζ5^2+123ζ5^3)
-66α2(255348+48787ζ5+127674ζ5^2+206561ζ5^3)
+α1α2(330046+63027ζ5+165023ζ5^2+267019ζ5^3)
)
ここで
α1=8712^(1/2)
α2=(-440-(2/3)α1)^(1/2)
α3=(
-(13/5)(233+466ζ5+377ζ5^2+89ζ5^3)
-(2/165)α1(521+1042ζ5+843ζ5^2+199ζ5^3)
+(1/1750)α2(35067-56741ζ5^2-56741ζ5^3)
+(1/23100)α1α2(4924-7967ζ5^2-7967ζ5^3)
)^(1/5)

おお、これは面白そうですね。結局自分ではまだ着手していなかったのですが、見せていただければ幸いです。電子メールアドレス ikumikeita@jcom.home.ne.jp.NOSPAM. (最後の .NOSPAM. は取り除いて、「~.jp」で終わるようにしてください)までお送りください。

退職後は素人数学者 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください