\(\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}\) の値がいずれは必ず見つかります。あとはその繰り返しです。
「退職後は素人数学者」さんに改めて感謝を捧げます。
コメントを残す