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

方程式のガロア群の求め方・さらなる補足

\(\newcommand{\zyunretu}[2]{{}_{#1}\text{P}_{#2}}\)
前回の記事で触れた通り、「退職後は素人数学者」さんから頂いた文書「可解な代数方程式のガロア理論に基づいた解法」の中では、「\(V_{k}\) の値が互いに異なるような係数の値の具体値の求め方」に関して、以前私が書いたものより遥かに優れたやり方が述べられています。間抜けなことに、そこで必要となる考え方は上の私の記事の中に事実上すべて述べられていたものでした。

本記事では、自戒を込めて、「退職後は素人数学者」さんによるアルゴリズムを解説します(と言っても、「可解な代数方程式のガロア理論に基づいた解法」の現物に当たって頂ければ、ほとんど説明の必要もないくらい明快な話ではありますが…)。

話としては、以前の記事通り、こういうものです。整数係数で、重解がない \(n\) 次方程式が具体的に1つ与えられたとして、その解を \(\alpha_{1}, \alpha_{2}, \dots, \alpha_{n}\) とします。このとき、整数 \(A_{1}, \dots, A_{n}\) の値を適切に取っておけば、異なる順列
\begin{equation}
\label{eq:galois-primitive-element-1}
(a,b,c, \dotsc) \ne (a’,b’,c’, \dotsc)
\end{equation}
に対して必ず
\begin{equation}
\label{eq:galois-primitive-element-2}
A_{1}\alpha_{a} + A_{2}\alpha_{b} + \dotsb \ne A_{1} \alpha_{a’} + A_{2}
\alpha_{b’} + \dotsb
\end{equation}
となるようにできますが、そのような整数 \(A_{1}, A_{2}, \dots, A_{n}\) の具体値はどうやれば求められるのか、ということがテーマです。

以前の記事では、\(A_{1}\), \(A_{2}\) については、\(A_{1} \ne A_{2}\) であるような任意の整数を選べばよい、ということを説明した後、\(A_{3}\) 以降の値の求め方を述べましたが、それは原理的には可能であっても気の遠くなる程手間のかかるものになってしまっていました。ここが実はもっと遥かに簡単に済むのが「退職後は素人数学者」さんによるアルゴリズムの優れた点です。\(A_{3}\) の値をひとつ適当に決めたとき、それが適する値かどうかを \(A_{4}\)〜\(A_{n}\) の値を(仮にでも)決めることなく判定することができるので、試行錯誤はいるものの \(A_{3}, A_{4}, \dots, A_{n}\) と順次決定していけるのです。

では、\(A_{3}\) の値をひとつ適当に決めたとき、それが適する値かどうかの調べ方を説明します。まず、\(A_{3}\) がみたすべき条件は、「\eqref{eq:galois-primitive-element-2}の条件式のうち、\(A_{1}\)〜\(A_{3}\) のみを含むものが成立すること」でした。すなわち、\eqref{eq:galois-primitive-element-1}の順列のうち
\[ (a,b,c) \ne (a’,b’,c’) \text{ かつ } (d,e,\dotsc) = (d’,e’, \dotsc) \]
をみたすものに対して
\[ A_{1}\alpha_{a} + A_{2}\alpha_{b} + A_{3}\alpha_{c} \ne A_{1} \alpha_{a’} + A_{2} \alpha_{b’} + A_{3}\alpha_{c’} \]
となればいいわけです。そこで、\(1\)〜\(n\) を並べ替えた順列 \((a,b,c,\dots)\) から、先頭の3つ \((a,b,c)\) を重複がないようにリストアップします。例えば \(n=3\) だったら \(3!=6\) 通りの順列すべてですし、\(n=5\) だったら以下のような \(\zyunretu{5}{3}=60\) 通りの順列になります。
\[
\begin{array}{cccccc}
(1,2,3)&(1,2,4)&(1,2,5)&(1,3,2)&(1,3,4)&(1,3,5) \\
(1,4,2)&(1,4,3)&(1,4,5)&(1,5,2)&(1,5,3)&(1,5,4) \\
&&\vdots&&& \\
(5,3,1)&(5,3,2)&(5,3,4)&(5,4,1)&(5,4,2)&(5,4,3)
\end{array}
\]
これら \(N=\zyunretu{n}{3}\) 通りの順列 \((a,b,c)\) に対して作った
\[ A_{1}\alpha_{a} + A_{2}\alpha_{b} + A_{3}\alpha_{c} \]
の値を \(v_{1}, v_{2}, \dots, v_{N}\) とします。すると、\(v_{1}, \dots, v_{N}\) の値がすべて異なることは
\[ \tilde{F}(x) = \prod_{k=1}^{N} (x-v_{k}) = (x-v_{1}) \dotsm (x-v_{N}) \]
が重根を持たないことと同値です。ここで、\((a,b,c)\) の作り方から、この \(\tilde{F}(x)\) (の係数)は \(\alpha_{1}, \dots, \alpha_{n}\) の対称式になることがポイントです。このため、解と係数の関係によって、\(\tilde{F}(x)\) は有理数係数の多項式として具体的に求められます。

したがって、そうやって \(\tilde{F}(x)\) を求めてから微分し、\(\tilde{F}(x)\) と \(\tilde{F}'(x)\) の間で互除法を実行して互いに素かどうかを確かめれば、\(A_{3}\) の値が不適だったかどうかがわかるわけです。

今述べた手順は、\(n!\) 通りの \(V_{k}\) の値がすべて異なっているかどうかのチェック法と事実上同じことをやっている、ということは、一連の記事を読んで頂いた方には明らかでしょう。

\(A_{4}\) (以降)についてもまったく同様です。\(A_{1}\) から \(A_{3}\) までが適する値として選ばれていれば、ひとつ適当に選んだ \(A_{4}\) の値が不適かどうかは上と同様にしてチェックできます。したがって、\(A_{1}\)〜\(A_{3}\) のいずれとも異なる値を順に試していけば、適する \(A_{4}\) の値がいずれは必ず見つかります。あとはその繰り返しです。

「退職後は素人数学者」さんに改めて感謝を捧げます。

「方程式のガロア群の求め方・さらなる補足」への1件の返信

「可解な代数方程式のガロア理論に基づいた解法」
https://ikumi.que.jp/blog/wp-content/uploads/2018/09/galois-solution.pdf に関して,誤りが2つ見つかりました。井汲さんとは何回かメールを交換していますが,今回だけは他の読者にもお知らせしたほうがよいと思い,この場で報告させていただきます。
 
≪第1の誤り≫
ガロア群の組成列が正しく求められない場合があります。例えば,(x^2-2)(x^2-3)(x^2-5)=0の場合,根をx1,x2=±√2,x3,x4=±√3,x5,x6=±√5とすると,ガロア群は以下の8個の置換となります。
{σ1,σ2,σ3,σ4,σ5,σ6,σ7,σ8}
={1,(12),(34),(56),(12)(34),(12)(56),(34)(56),(12)(34)(56)}
正しい組成列(何通りかあるうちの1つ)は以下となります。
{σ1,σ2,σ3,σ4,σ5,σ6,σ7,σ8}⊃{σ1,σ2,σ3,σ5}⊃{σ1,σ2}⊃{σ1}
私の方法では,各σi(i=1,2,…,8)について,それを含む最小の正規部分群を求め,その8個の中で最大の正規部分群を次段の組成列として採用するので,{σ1,σ2,σ3,σ5}を見落とし,{σ1,σ2}を採用してしまいます。
 
≪第2の誤り≫
jurupapaさんの記事http://maxima.hatenablog.jp/entry/2018/12/02/103713によると,x^3-2=0,
x^5-3=0,x^5-4=0は解けなかったそうです。私のプログラムでも確認してみましたが,解けませんでした。「可解な代数方程式のガロア理論に基づいた解法」の39頁8-11行では,以下のように書いています。
> このとき,θ_0(x)と{θ_i(x)}^{p_k}の各係数はまだvの多項式であるが,上記(2),
> (3)によると,これらは体F_{k-1}の元である。よって,これらの各係数について
> g_{k-1}(v)による剰余を取ると,vの次数は0となり,定数項(v^0の項)は体F_{k-1}
> の元になる。
しかし,上記の方程式の場合,剰余を取った後もvが残ってしまいました。
 
≪追記≫
Mathematicaでの計算時間を調べたので,この機会を借りてお知らせします。以下に示した4組の計算時間のうち,第1は最小多項式g(x),第2は根のv多項式表現,第3はガロア群と組成列,第4は根のべき根表現に要する計算時間です。第1,2,3は「可解な代数方程式のガロア理論に基づいた解法」の第10節で示したプログラムによります。第4は同じく第14節で示したプログラムによります。計算に使ったのはごく普通のノートパソコン(CPU 2.40GHz,RAM 3.86GB)です。
(例1) f(x)=x^3+a2*x^2+a1*x+a0 (1秒,0秒,0秒,1秒)
(例2) f(x)=x^4+a2*x^2+a0 (28秒,11秒,3秒,0秒)
(例3) f(x)=x^4+a2*x^2+a1*x+a0 (1分30秒,計算不可,計算不可,-)
(例4) f(x)=x^4+2x^3+3x^2+4x+5 (8秒,1秒,0秒,2分51秒)
(例5) f(x)=x^5+2x^3+4x^2-x+4 (1時間25分51秒,33分17秒,1分57秒,12分31秒)
(例6) f(x)=x^5+a3*x^3+(a3^2/5)x+a0 (10時間34分46秒,計算不可,計算不可,-)
(例7) f(x)=x^5+2x^4+3x^3+4x^2+5x+6 (1時間16分32秒,25分28秒,31秒,-)
(例8) f(x)=x^6+2x^5+3x^4+4x^3+5x^2+6x+7 (計算不可,計算不可,計算不可,-)
(例9) f(x)=x^16+x^15+…+x^2+x+1 (計算不可,計算不可,計算不可,2秒)
 
 
上記の誤りが解決したときは,また報告しますが,今のところは解決の見通しはありません。しばらくお待ち下さい。

コメントを残す

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

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