2025年02月21日更新
[1] ガロア理論をより理解したいと考えて,Mathematica13.3 で 5次以上の方程式を解いてやろうと思いたちました.結果は思ったよりずーと楽に解けました.数学的な予備知識もほとんど必要ありません.(エレガントな解法ではないです.基本に忠実に解いたやや泥臭い解法です.)
[2]もちろん,5次以上の方程式は一般には解けないので,Galois 群が可解の場合だけです.
[3]最初に原始元とGalois群を求めてから解いています.Galois群を求めるには何通りも方法があると思うのですが,数学の本に載っている方法と試行錯誤して見つけたGrobner基底を使う方法の二つを解説してあります.(基礎編参照)
[4]実際,方程式を解いてみて思ったのは,数学の本にあるように基礎体から順に体を拡張していくわけですが,実際に解くときは最終時の拡大に注目してLagrangeの分解式を作らないといけないということでした.F20のときもD5のときも最初はQからの2次拡大な訳ですが,そこで2次の分解式を作ってもダメで,ゴールの方に注目して,5次の分解式からスタートしないとうまくいかないということに気づきました.さらに通常の本では何故「5次方程式について全く触れられないか」も見当が付きました.私の様に泥臭くかつMathematicaを使って解けば難しくないですが,数学ソフトなしで解こうと思うと,計算量が非常に多く不可能に近いです.エレガントな解き方もあるようですが,こちらは非常にレベルが高いです.
[5]残念なことに,高次の方程式の解き方は,日本語の文献がほとんど見つかりませんでした.しかしMathematicaでは小数点以下20位でも近似解(虚数解でも)を求められます.またMagmaやSageMathでは
Galois群を一瞬で求められます.ですからGalois群を素早く求めるアルゴリズムは必ず存在しています.高次方程式の厳密解を求めるアルゴリズムの方も多分あると思っています.しかしそのような情報にアクセスできないのは
それが企業秘密だからなのか,それともあまり人気のないエリアで英語でしか読めない文献なのかだと思います.しかしそのような文献が見つけられないことと,そのうえ見つけられてもかなりエレガントで難しいやり方の可能性が高いことと,何よりも
Mathematica ファンの方のために,今回の 泥臭い解法を公開するのも意味ある事と思って公開いたします.
[6]原稿は Mathematica13.3 で書きました.Mathematica をお持ちの方なら,notebookをダウンロードしてそのまま「ノートブックを評価」すれば,厳密解とそこに至るプロセスの両方が良く分かると思います.ただ計算が複雑すぎるからなのか,プログラムミスなのか分かりませんが,最終的な累乗根の計算でバグが出ることが多いです(超長い式が出力される).その場合は「問題のセルのみ評価」すればうまく行きます.問題のセル以降は
自動的に正しい式に更新されます.また実質一回だけ「Shift+Enter」をすれば
Galois群が求まるようなプログラムも作成しています(FindGaloisGroup.nb) .少し脱線しますが,今回,英語の論文もいくつかサーチしました.その一つに,Galois群を求めるには
6通りのアルゴリズムがあると書いてありました.ただその論文にはそのアルゴリズムは載っていなかったので
苛立たしいだけでしたが... そのようなアルゴリズムに比べると時間が10倍,いや100倍も掛かるかもしれませんが,とりあえず
Galois群,原始元,分解方程式は 一回の「Shift+Enter」で求まります.一方,方程式の方はまだまだ自動化できていません.人間の手が途中で入る必要があります.
[7]Mathematica をお持ちでない方は pdfの方をご覧ください.説明は多めに書いたのでアルゴリズム自体は分かると思います.また無料でnotebookを読める「Wolfram Playrer 」というのも有りますが,今回は Manipulate は使っていないので,わざわざインストールする必要はないと思います.
[8] Mathematica では Galois群を求めるコマンドはないですが,世の中にはフリーで Galois群を求められるソフトもあります.おそらく代表的なのは
MagmaとSageMathだと思います.今回 Magmaを使って 多くの5次方程式(320個)のGalois群をまとめて求めてみました(下にリンクしている
magma.shtml にアクセスして下さい). コピー&ペーストすれば,ご自分で簡単に
Galois群を500個ぐらい一度に求めることもできます.なんと10秒もかかりません.
[9]同じく無料のソフトであるSageMathはもっと沢山のGalois群を求めることが出来ます.今回は f(x)=x5+ax3+bx2+cx+d (a,b,c,dは絶対値が10以下の整数で d≠0)のガロア群を求めることが簡単にできました.SageMathはその他にもガロア群を調べるときに本当に役立ちます.(同型チェック,正規部分群の発見,ガロア流のガロア群の書き直しなど)
[10]最後に細かい点ですが, Lagrange分解式は resolvent の頭文字で r1,r2,
等としている文献が多いのかも知れませんが,私は, 活字体の「r」を読みづらく感じるので,
s1,s2... としています.公開する時,「検索」から一度に修正しようとしたのですが,何故かうまく行きませんでした.(Mathematica で 上付き,下付き文字を扱うのはけっこう大変です) ご了承下さい.
[11]それではお楽しみください.これで Mathematica , GeoGebra, Magma, SageMath など数学ソフトの愛好者が一人でも増えれば良いと思っています.
(2025年 2月 思いの外寒い東京にて)
Mathematica で Galois群を求める
基礎編
方程式 | Galois群 | Notebook | |
x4-10x2+1 | Kleinの4元群 | FindGaloisGroup.pdf | FindGaloisGroup.nb |
実践編
方程式 | Galois群 | Notebook | ||
1. | x5-10x3+5x2+10x+1 | C5 | GaloisGroup_C5.pdf | GaloisGroup_C5.nb |
2. | x5-5x+12 | D5 | GaloisGroup_D5.pdf | GaloisGroup_D5.nb |
3. | x5+15x+12 | F20 | GaloisGroup_F20.pdf | GaloisGroup_F20.nb |
方程式 | Galois群 | Notebook | ||
1. | x5-10x3+5x2+10x+1 | C5 | C5_solution.pdf | C5_solution.nb |
2. | x5-5x+12 | D5 | D5_solution.pdf | D5_solution.nb |
3. | x5+15x+12 | F20 | F20_solution.pdf | F20_solution.nb |
magma.shtml |
sagemath.shtml |
![]() |