Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-数学- SympyとGAPで可移部分群の条件から5次方程式のガロア群を高速に求める(1)

f:id:jurupapa:20210519003158j:plain

Sympyを使ってみて、群論のサポートがMaximaよりも手厚く、そこは非常に良い点と思いました。Pythonという言語に親しむことも出来ました。そんな作業をしながら、目についた論文やネット記事を読んでいると、方程式が与えられたときに、そのガロア群を求める別のやり方が理解出来ました。今回はその方法をSympyで実装したので、それを記事にします。

アルゴリズムやプログラムについては次回の記事にするとして、今回は実行の様子を見せます。実行時間は従来のものと比べると圧倒的にはやいです。一番時間がかかる、ガロア群が\(S_5\)の場合で40秒くらい、\(A_5\)で10秒くらい、\(F_20\)以下の場合は2秒程度で求まります。可解の場合にガロア群を求めるプログラム、ということにすれば、2秒でOKということです。

今回の実装のポイントを一言で述べると、既約方程式のガロア群は必ず対称群の可移部分群(transitive subgroup)になる、ということです。ですから、5次方程式なら5次対称群の可移部分群を全て列挙して、それらがガロア群になるかどうか確認すれば良いのです。この確認には時間のかかる因数分解グレブナー基底計算は不要です。

 

ネットで検索すると出てくる、可解な5次方程式を扱った論文・記事で例として挙げられている5次方程式のガロア群を求めてみました。ちなみに5次対称群の可移部分群は位数が120なら5次対称群\(S_5\)、60なら5次交代群\(A_5\)、20ならフロベニウス群\(F_{20}\)、10なら5次2面体群\(D_5\)、5なら巡回群\(C_5\)と決まります。

 

兵庫教育大学大学院 平成15年度学位論文 可解な5次方程式について 大迎規宏

フロベニウス群をガロア群としてもつ\(x^5+15\,x+12\)が登場します。

displayG(*GaloisGroupMinumalPolynomial(poly(x**5+15*x+12)))

$$\displaystyle V^{20} + 39630 V^{16} - 48384 V^{15} - 343800 V^{14} + 57488400 V^{13} + 721949625 V^{12} - 3954752640 V^{11} + 76243456296 V^{10} - 622118588400 V^{9} + 12931285084200 V^{8} - 159448145220000 V^{7} + 1962679911992640 V^{6} - 11093283574282944 V^{5} + 85687821298717200 V^{4} - 1132988328222537600 V^{3} + 8430761452710096000 V^{2} - 19150391079861050880 V + 13252560748142950656$$
$$\displaystyle PermutationGroup\left(\left( 1\; 2\right)\left( 3\; 4\right), \left( 0\; 3\; 2\; 1\right)\left( 4\right)\right)$$

order=20
CPU times: user 4.92 s, sys: 176 ms, total: 5.09 s
Wall time: 5.11 s

 

 

同じ論文で、2面体群をガロア群としてもつ\(x^5-5\,x+12\)も登場します。 
displayG(*GaloisGroupMinumalPolynomial(poly(x**5-5*x+12)))

$$\displaystyle V^{10} + 70 V^{8} - 1560 V^{7} + 12925 V^{6} - 103152 V^{5} + 1501900 V^{4} - 19405320 V^{3} + 52390060 V^{2} + 227650800 V + 2310668176$$
$$\displaystyle PermutationGroup\left(\left( 0\; 2\right)\left( 1\; 3\right)\left( 4\right), \left( 0\; 1\; 4\; 3\; 2\right)\right)$$

order=10
CPU times: user 1.53 s, sys: 9.68 ms, total: 1.54 s
Wall time: 1.56 s 

 

 

5次方程式の可解性の高速判定法 元吉文男 数理解析研究所講究録 第 848 巻 1993 年

この論文には巡回群\(C_5\)をガロア群としてもつ\(x^5-11\,x^3-11\,x^2+11\,x+11\)が登場します。
displayG(*GaloisGroupMinumalPolynomial(poly(x**5-11*x**3-11*x**2+11*x+11)))

$$\displaystyle V^{5} - 319 V^{3} + 220 V^{2} + 13508 V - 17413$$
$$\displaystyle PermutationGroup\left(\left( 0\; 2\; 4\; 1\; 3\right)\right)$$

order=5
CPU times: user 118 ms, sys: 3.46 ms, total: 122 ms
Wall time: 124 ms 

 

 

Families of quintics in ℚ[𝑥] with Galois group 𝐴5, mathoverflow.net

このmathoverflow.netの記事ではガロア群が交代群になる\(x^5-x^4-11\,x^3+x^2+12\,x-4\)が登場します。

mp,gg=GaloisGroupMinumalPolynomial(poly(x**5 - x**4 - 11*x**3 + x**2 + 12*x - 4))
display(gg,gg.order())

$$\displaystyle PermutationGroup\left(\left( 0\; 3\right)\left( 1\; 2\right)\left( 4\right), \left( 1\; 4\; 3\right)\right)$$

order=60
CPU times: user 8.51 s, sys: 31.9 ms, total: 8.54 s
Wall time: 8.58 s 

 

 

次の方程式\(x^5+x^2+1\)は私が適当に作ったもので、そのガロア群は5次対称群となります。

mp,gg=GaloisGroupMinumalPolynomial(poly(x**5 + x**2 + 1))
display(gg,gg.order())

$$\displaystyle PermutationGroup\left(\left( 3\; 4\right), \left( 0\; 1\; 3\; 2\right)\left( 4\right)\right)$$

order=120
CPU times: user 40.1 s, sys: 120 ms, total: 40.2 s
Wall time: 40.4 s

 

次回は今回実装した手法の数学的背景、実装方法などを記す予定です。