方程式のガロア群を解の置換群として求める方法を書いた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}\) の実際の値をべき根で求める」ことも含まれているのであれば、このアルゴリズムが必ずしも有利とは限らない、ということには注意しておきます。
コメントを残す