2025年03月19日更新

 Mathematica で, 5次方程式の厳密解を求める

-Magma,SageMathについてもちょっとー

[1] ガロア理論をより理解したいと考えて,Mathematica で 可解5次の方程式を解いてやろうと思いたちました.結果は思ったよりずーと楽に解けました.数学的な予備知識もほとんど必要ありません.エレガントな解法ではないです.基本に忠実な解法です.したがってGalois理論の初歩しかご存じない方でも容易に理解できると思います.

[2]最初に原始元とGalois群を求めてから解いています.Galois群を求めるには何通りも方法があると思うのですが,数学の本に載っている方法と試行錯誤して見つけたGroebner基底を使う方法の二つを解説してあります.

[3] 以上をモジュール化して「Galois群を求めるプログラム(GaloisGroupProgram.nb)」&「可解な5次方程式を累乗根を使って 解くプログラム(solveQuinticProgram.nb)」も作りました.(下のリンク) どちらも実行にはMathematicaが必要です.5次方程式の場合,Galois群を求めるのに最大で30秒程,方程式を解くには更に5秒ほど掛かります.なお4次以下のGalois群なら0.1秒で求まります.残念ながら6次以上はうまく行きませんでした.(ちなみに私のPCは12年前に買って Windows11へのアップグレード条件も満たしていないPCです.)

[4]上のプログラムは有料のMathematicaが必要ですが,無料の Wolfram Player さえインストールすれば実行できる 簡易版のアプリ「solveQuinticApp.nb」 も作りました.(下のリンク) Wolfram Player は, Windows/Mac/Linux/iOS に対応しているので,iPhoneや iPAD で実行することもできるはずです.(ただし厳密解は長くなるので,iPhone はお勧めできません.) Windowsでの実行例はこちらにあります.

[5]今回,実際に方程式を解いてみて思ったのは,体の拡大の理論と実際に方程式を解くことがかなり違うということでした.理論的には,Q係数の代数方程式を解くということは「基礎体Qから順に体を拡張していく事」と言われています.しかし実際に解くときは,入口ではなく,ゴールの方から攻めないとうまく行きませんでした.例えば ガロア群がF20やD5のときは,最初はQからの2次拡大な訳ですが,まず2次の分解式を作ろうと思っても無数の作り方が有りうまく行きません.逆にゴールの方に注目して,5次のLagrange分解式の5乗からスタートすることにより成功しました.

[6]例えばGalois群がF20の5次方程式の場合,Qから最小分解体までの拡大は「 2次拡大→2次拡大→5次拡大」となります.5次のLagrange分解式を r0~r4, その5乗をR0~R4 とすると,(R1+R2+R3+R4) はF20の固定体に入るので「単純計算」で求まります.次に(R1+R4)と(R2+R3)が2次方程式を解いて求まります.さらにもう一回2次方程式を解けば R1, R2, R3, R4が求まります.さらに5乗根を取れば r1, r2, r3 ,r4が求まり,後は代入計算で X1~X5 が求まります.Gaussの17次円分方程式の周期4の解に当たるのが(R1+R2+R3+R4)となってます.

[7]これは(私にとっては) 「予想」ですが,素数n 次可解方程式の解法は

〈1st〉n 次のLagrange分解式のn 乗: R1,R2,…Rn を作る.そのときT=R1+R2+…+Rn がガロア群の固定体に入る(ということは, ガロア群はCn を含むはずです). 故に「単純計算」でTの値が求まる. 〈2nd〉最初の拡大は2次だろうから,まず,TがT1とT2に半分に分かれ,2次方程式を解けばT1,T2が分かる.〈3rd〉次の拡大が2次ならT1,T2も半分ずつに分かれて2次方程式を解けば求まる.次の拡大が3次なら,T1がT11,T12,T13 の3つに別れてLagrangeの3次の分解体を考えることにより,T11,T12,T13が求まる.(以下同様) …… 〈Last minus 1〉このようにしてTの長さは短くなり,長さが1となった時 R1,R2…が求まる.〈Last〉 R1,R2…の n 乗根を取り r1,r2…が求まる.それを代入して X1,X2…が求まる.

この様になっていくのではないでしょうか?Gaussの円分方程式の解き方と非常に似ています. こういう事はどこかに書いてあるはずですが,私は見た記憶がありません.したがって確信もありません.次は7次方程式を解くつもりなので,その時はもっと分かると思います.

[8]主な原稿は全て Mathematica13.3 で書きました.Mathematica をお持ちの方なら,notebookをダウンロードしてそのまま「ノートブックを評価」すれば良いのですが,5次方程式のガロア群を求めるのに30秒も掛かるので,「ノートブックの評価」に最大1分掛ることもあります.しかし「コードの評価」だけなら1秒もかからないと思います.

[9]Mathematica をお持ちでない方は pdf の方をご覧ください.説明は多めに書いたので,ストーリーは分かると思います.ただしMathematicaの仕様(バグ?)で,PDFではコード(初期化セル)の右端が表示されません.コード全体をご覧になりたい方は,無料でnotebookを読める「Wolfram Player」([4]参照) をご使用下さい.

[10] Mathematica には Galois群を求めるコマンドはないですが,世の中にはフリーで Galois群を求められるソフトも幾つかあります.おそらく代表的なのは Magma と SageMath でしょう.今回 MagmaとSageを使って 多くの5次方程式のGalois群をまとめて求めてみました. Magmaでは 320個の,SageMathでは9万個を超える方程式のGalois群を求めました.前者は10秒,後者は2分の実行時間でした.詳しくは下の Magma.shtml と SageMath.shtmlを御覧ください. MagmaもSageMathもWeb上にCalculator があるので試すのは簡単です.なおSage の方は ver9 ならインストールも簡単です.(この後,モニックで係数の絶対値が10以下の方程式-約200万個-のGalois群をSageMathで求めました.時間は約30分でした.)

[11]今回SageMath/Magmaを使って Galois群を求めなかった理由は,やはり「Shift+Enter」1回で解を求めるプログラムを作りたかったからです.それが,Galois群を求めるプログラムも,自分で一から組み立てた理由の1つです.ただしSageMath/MagmaのGalois群を求めるコマンドに比べると, 5次の場合は時間が200倍掛かります.(SageMath/Magmaは,5, 6次方程式でも0.1秒の世界です.) 私のプログラムでは5次で30秒もかかるので,6次以上の方程式を解くときは SageMath/ Magma を使うしか無いと思っています.Mathematica で「秒速で,簡単に」Galois群を求める方法をご存じの方がいらしたら,是非教えて下さい.(Galois群を速く求める方法が書いてある英語の論文なら幾つかあります.例えばGeissler&Kluners「Galois Group Computation for Rational Polynomials」では 12次方程式のGalois群が 1秒で,15次の場合でも5秒程度で求まっています.これが実装できればよいのですが,かなり数学的に難解で手が出ません.この他にも幾つか論文はありますが,何れにせよ,これ以上のスピードアップには,かなり高度な数学が必要みたいです. ちなみに先の論文のReferenceに日本人らしい名前の方が載っていました.自然に嬉しいです.)

[12]細かいことですが,私は最初 Lagrange分解式(resolvent)を s0,s1,s2,s3,s4 としていました.その後,分解式は r が使われていることが多いのに気が付いて,r0,r1,r2,r3,r4 を使うことにしました.できるだけ直したつもりですが,直しきれてないかもしれません.ご注意ください.

[13]それではお楽しみください.これで Mathematica , GeoGebra, Magma, SageMath など数学ソフトの愛好者が一人でも増えれば良いと思っています.久々に集中して作りました.(1ヶ月も朝から晩までやっていました.その後もバグ退治で2週間ほど忙しかったです.一応終了として前に進みます.なおこのページを公開したのは 2025年3月3日ですが,3月11日より前のバージョンはバグが潜んでいます(*_*;).3月11日以降のバージョンをダウンロードしてください.) 皆様の ご意見,ご感想などをお待ちしています.(2025年3月11日)


【参考文献&サイト】次のサイトや文献を参考にさせて頂きました.(3月14日追加あり)

サイト/PDF

  1. 可解な5次方程式について(大迎 規宏氏)
  2. Solving solvable quintics (D.S.DUMMIT氏)
  3. 方程式のガロア群(松田修氏)
  4. 可解な5次方程式の代数的解法(PeriodMathmatics氏)
  5. ガロア理論を使って方程式を解いたことがありますか(scruta氏)
  6. ペンギンは空を飛ぶ- 5次方程式の解を巡る旅 (peng225氏)

書籍

  1. ガロアの群論(中村亨氏)
  2. ガロワ理論最短コース(梶原 健氏)
  3. ガロア理論の頂きを踏む(石井俊全氏)
  4. ガロア理論「超」入門(小林吹代氏)

全てのサイト&文献は,私を色々な意味で啓発してくれました.誠にありがとうございます(^_^).5次方程式について一番詳しいのは [1]&[2]ですが,かなり難しいです.説明が分かりにくい場合は[3],[4]が助けになります.ただこれらは「代数的解法」であり「解を係数の式で表そうとする試み」です.私のは「コンピュータ代数(CAS)的解法」で「計算で答えを求める試み」です.「目的」が全く違います.(このケースでは「手段」は結構重なっています.) 従って[1],[2]を理解する必要は全くありません.実際,私が[1]をしっかりと読んだのは,厳密解を求めるプログラムを書いた後です.ここにあるノートブックを理解するにはガロア理論の初歩のみ(書籍7~10)で十分です. なお私は専門家ではないので,色々間違いがあるかもしれません.その際はお知らせ下さると有り難いです.(下にメールのリンクも張ってあります)


 Mathematica で Galois群を求める

内容 PDF Notebook
基本的な解説&プログラム GaloisGroupProgram.pdf GaloisGroupProgram.nb

 Mathematica で 5次方程式を解く「 具体例」
方程式 Galois群 PDF Notebook
1. x5-10x3+5x2+10x+1 C5 C5_solutions.pdf C5_solutions.nb
2. x5-5x+12 D5 D5_solutions.pdf D5_solutions.nb
3. x5+15x+12 F20 F20_solutions.pdf F20_solutions.nb
4. x5+15x+12
(文献[1]を参考にした解法)
F20 Another_F20.pdf Another_F20.nb

 Mathematica で 5次方程式を解く「プログラム」&「アプリ」
内容 PDF Notebook
可解な5次方程式を解くプログラム solveQuinticProgram.pdf solveQuinticProgram.nb
可解な5次方程式を解くアプリ solveQuinticApp.nb

 Magma で Galois群を沢山求める
magma.shtml

SageMath で Galois群をもっと沢山求める
sagemath.shtml

可解な5次方程式のリスト(係数の絶対値≦10 など)
solvableEquations.txt

Top pageへ   mail
生越 茂樹 (Ogose Shigeki)  All rights reserved