【5-1】代数体と因数分解?
以下のような問題が大学生に出されたらどう答えるでしょうか?想像してみてください。
\(f(x)=x^2+x+1 \ \in \mathbb{Q}[x]\) とします。
問題(1) 有理数体 \(\mathbb{Q}\) の中で \(f(x)\) を因数分解しなさい。
\begin{align}
Ans. \quad f(x)=x^2+x+1 \notag \\
\end{align}
問題(2) 複素数体 \(\mathbb{C}\) の中で \(f(x)\) を因数分解しなさい。
\begin{align}
Ans. \quad f(x)=(x-\omega)(x-\omega^2) \notag \\
\end{align}
問題(3) \(\varOmega(\omega)=\omega^2+\omega+1=0\) の根 \(\omega\) で生成される代数体 \(\mathbb{Q}(\omega)\) の中で \(f(x)\) を因数分解しなさい。
\begin{align}
Ans. \quad f(x)=(x-\omega)(x-\omega^2)=\bigl(x-\omega\bigr)\bigl(x-(-\omega-1)\bigr) \notag \\
\end{align}
問題(4) \(g_1(v)=v^2+v+1=0\) の根 \(v\) で生成される代数体 \(\mathbb{Q}(v)\) の中で \(f(x)\) を因数分解しなさい。
\begin{align}
Ans. \quad f(x)=(x-v)(x-v^2)=\bigl(x-v\bigr)\bigl(x-(-v-1)\bigr) \notag \\
\end{align}
問題(5) \(g_2(v)=v^2+3v+3=0\) の根 \(v\) で生成される代数体 \(\mathbb{Q}(v)\) の中で \(f(x)\) を因数分解しなさい。
\begin{align}
Ans. \quad f(x)=\bigl(x-(-v-2)\bigr)\bigl(x-(v+1)\bigr) \notag \\
\end{align}
【Wikipediaより】代数体(algebraic number field)とは有理数体の有限次代数拡大体の事である。
問題(1)(2)
「馬鹿にしないでくれ!超簡単!」と思うでしょう。
問題(3)
「代数体? 聞いたことありません! \(\varOmega(\omega)=0\) なんて \(\omega\) の定義式じゃないか。
高校でも \(\omega\) を使った因数分解やらされたね。簡単、簡単。まあ代数体なんて念仏みたいなもんだろう。。。」
問題(4) 問題(1)(2)(3)が無くて、突然問題(4)を出された時
「えぇ、、 \(g_1(v)=0\) 、、、? なんか \(v=\omega\) の様にも見えるし。 え~ぃ、\(v=\omega\) として因数分解しちゃえ!」
問題(5)
「うっ、、\(g_2(v)=0\) 、、、? 代数体? \(f(x)\) と関係あるの?」
実は問題(5)は、第1章で既に取り上げた問題です。 \(g_1(v)\) は \(\varOmega(\omega)\) と同じ多項式なので、 \(\omega\) を連想出来るかもしれません。
でも数学科の学生以外は \(\omega\) と「代数体」とは直ぐに結びつかないんです。私がそうでした。
更に \(g_2(v)\) の多項式は慣れ親しんだ多項式ではありません。
問題(5)を突然出されたら、大学生にとって解に到達するまで少し時間がかかるかと思います。
それより更に超難問が以下の問題です。
問題(6) \(f(x)\) を \(g(v)=0\) の根 \(v\) で生成される代数体 \(\mathbb{Q}(v)\) の中で因数分解しなさい。
\begin{align}
&f(x)=x^3-3x+1 \\
&g(v)=v^3-9v-9=0 \\
\notag \\
&Ans. \ f(x)= \biggl(x-(-\frac{{{v}^{2}}}{3}+2)\biggr)\biggl(x-(\frac{2 {{v}^{2}}}{3}-v-4)\biggr)\biggl(x-(-\frac{{{v}^{2}}}{3}+v+2)\biggr) \\
\end{align}
この超難問をアルゴリズム的に定式化して計算できるようにした方法が、
Trager Algorithmと呼ばれているものです。
この計算方法は、ガロア理論で方程式の解を求めるときには、
超便利な方法です。
この方法を私は、
恐怖の因数分解と呼びたいぐらいです。キーワードはやはり
終結式です。
上記の因数分解された \(f(x)\) の式(1.3)を見てください。そうなんです。これは \(f(x)\) を
最小分解体 \(F_0(v)\) で因数分解している式です。
ガロア理論で方程式を解く際に、まず初めに、原始元 \(v\) が生成する
単拡大 \(F_0(v)\) の中で \(f(x)\) を
因数分解することから始まるのです。
だからTragerアルゴリズムが重要なんです。
(注)
単拡大 \(F_0(v)\) =
代数体 \(F_0(v)\) =
最小分解体 \(F_0(v)\) です。
第5章では上記問題(6)を例にして、Trager Algorithmの計算方法を説明してゆきます。
FYR. Trager, B.M., Algebraic Factoring and Rational Function Integration. Proc. SYMSAC 76, 219-226.
【 計算の流れ 】
代数体上での因数分解に関して中心話題は、下記のTrager Algorithmと言われるものです。
Trager Algorithm
(step.1) \(f(x)\) を因数分解したい多項式、\(g(v)\) を原始元 \(v\)を根とする既約多項式とする。
\(F_0(v)\) を原始元 \(v\) が生成する代数体(単拡大)とする。
但し \(n=deg(f(x)), m=deg(g(x))\) 。 以下の例では \(n=m=3\)
(step.2) \(f(x+s \cdot v)\) と \(g(v)\) とで、\(v\) に関する以下の終結式を求める。
\(Res(f(x+s \cdot v),g(v),v)=R(x)\)
この時 \(R(x)\) が無平方になるように\(s\)を決める。
(step.3) \(R(x)\) を \(F_0\) 上で因数分解する。\(R(x)=(-1)^{nm} \cdot R_1(x) \cdot R_2(x) \cdot R_3(x)\)
(step.4) \(GCD(R_i(x),f(x+s \cdot v)) \equiv \tilde{Y}_i(x)\) と定義する。
\(\tilde{Y}_i(x)\) を使うと \(f(x)\) は以下の式で因数分解できる。
\(f(x)=\tilde{Y}_1(x-s \cdot v) \cdot \tilde{Y}_2(x-s \cdot v) \cdot \tilde{Y}_3(x-s \cdot v)\)
キーワードは、
「終結式」と「GCD」です。
「GCD」即ち最大公約数(式?)は、終結式とはあまり関係がないように思えます。
「どうしてこの2つが結びつくのか?」という疑問が湧きますが、具体例で計算してみると、よくその理屈が判ります。
ガロア理論を使って方程式を解く際には、Toragerアルゴリズムは、代数計算ソフトmaximaの命令 \(factor(p,q)\) の背後に
隠れてしまって、表には見えませんが、その役割は
極めて重要です。