かき揚げ
文献3の"11. f(x)の分解体に属する元の表記と積・商の計算"の記載の意味を考えてみました。
ちょっとだけ、既約多項式による剰余環と拡大体の同型について復習しましょう。
- 作者: 関口次郎
- 出版社/メーカー: 丸善出版
- 発売日: 2012/08/25
- メディア: 単行本
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
のp73 定理47を引用します。
定理47
\(E/F\)は体拡大で\(\alpha \in E\)は\(F\)上代数的とする。
(i) \(\alpha\)を根に持つ既約なモニック多項式\(p\left(x\right) \in F\left[x\right]\)が存在する。
(ii) \(F\left[x\right]/\left(p\left(x\right)\right)\simeq F\left(\alpha\right)\)が成り立つ。実際同型
\(\Phi : F\left[x\right]/\left(p\right) \rightarrow F\left(\alpha\right)\)
で\(F\)を点ごとに固定し、\(\Phi\left(x+\left(p\right)\right)=\alpha\)となるものが存在する。
(iii)\(p\left(x\right)\)は\(\alpha\)を根にもつ\(F\left[x\right]\)の最低次数のモニック多項式である。しかも\(\alpha\)を根にもつ最低次数のモニック多項式は\(p\left(x\right)\)以外にない。
(iv)\(\left[F\left(\alpha\right):F\right]=\partial\left(p\right)\)
つまり大雑把に言えば\(F\)に\(\alpha\)を添加して拡大体を作ると言えば、F係数の多項式環を\(\alpha\)の最小多項式\(p\left(x\right)\)で割った剰余体を作ることです。演算で言えば\(F\)係数の多項式環で\(p\left(x\right)\)で剰余を取ること、逆元を求めることが重要です。
そこで文献3の"11. f(x)の分解体に属する元の表記と積・商の計算"では添加する元の最小多項式による次数低減、積、商を計算するアルゴリズムを提示しているのです。
これらのアルゴリズムをMaximaで実装したファイルFieldExtension.macを読み込むと以下の関数が使えるようになります。
ef_polynomial_reduction(P,C) Pは多項式、Cは添加元の最小多項式のリスト。PをCの各式で剰余を取る。
ef_mult(P,Q,C) P,Qは多項式、Cは添加元の最小多項式のリスト。PとQの積を計算してCの各式で剰余を取る。
ef_divide(P,Q,C) P,Qは多項式、Cは添加元の最小多項式のリスト。PとQの商を計算してCの各式で剰余を取る。
ef_pthroot(F,p,C) Fのp乗根を計算してCの各式で剰余を取る。p乗根がなければエラーを発生する。
文献3の"11. f(x)の分解体に属する元の表記と積・商の計算"の例1、例2をそのままやってみます。
(%i1) load("ExtendedField.mac");
$$ \tag{%o1} \verb|ExtendedField.mac| $$
有理数体\(Q\)に\(\zeta_{2}=\)虚数単位, \(\alpha_{1}=\sqrt{-6}, \zeta_{3}=\)1以外の1の3乗根,\(\alpha_{2}=\sqrt[3]{3\,\left(1+\alpha_{1}+2\,\zeta_{3}\right)}\)をこの順で添加した体を考えます。
(%i2) C:[[alpha[2],alpha[2]^3-3*(1+alpha[1]+2*zeta[3])],
[zeta[3],zeta[3]^2+zeta[3]+1],
[alpha[1],alpha[1]^2+6],
[zeta[2],zeta[2]^2+1]];
$$ \tag{%o2} \left[ \left[ \alpha_{2} , \alpha_{2}^3-3\,\left(2\,\zeta_{3}+\alpha_{1}+1\right) \right] , \left[ \zeta_{3} , \zeta_{3}^2+\zeta_{3}+1 \right] , \left[ \alpha_{1} , \alpha_{1}^2+6 \right] , \left[ \zeta_{2} , \zeta_{2}^2+1 \right] \right] $$
例題1としてP,Qを定義し、この体上でそれらの積を計算します。
(%i3) P:3*alpha[2]+2*alpha[1]*alpha[2]^2-3*alpha[2]*zeta[3]-3*alpha[2]^2*zeta[3]+alpha[1]*alpha[2]^2*zeta[3];
$$ \tag{%o3} \alpha_{1}\,\alpha_{2}^2\,\zeta_{3}-3\,\alpha_{2}^2\,\zeta_{3}-3\,\alpha_{2}\,\zeta_{3}+2\,\alpha_{1}\,\alpha_{2}^2+3\,\alpha_{2} $$
(%i4) Q:3-alpha[2]-alpha[1]*alpha[2]+alpha[2]*zeta[3]-alpha[1]*alpha[2]*zeta[3]-alpha[2]^2*zeta[3];
$$ \tag{%o4} -\alpha_{2}^2\,\zeta_{3}-\alpha_{1}\,\alpha_{2}\,\zeta_{3}+\alpha_{2}\,\zeta_{3}-\alpha_{1}\,\alpha_{2}-\alpha_{2}+3 $$
(%i5) ef_mult(P,Q,C);
$$ \tag{%o5} 54 $$
ちょうど54になりました。
例題2として、この体上で54をPで割った商を計算します。
(%i6) ef_divide(%,P,C);
$$ \tag{%o6} \alpha_{1}\,\left(-\alpha_{2}\,\zeta_{3}-\alpha_{2}\right)+\left(\alpha_{2}-\alpha_{2}^2\right)\,\zeta_{3}-\alpha_{2}+3 $$
(%i7) ratsimp(%-Q);
$$ \tag{%o7} 0 $$
商がQであることが確認できました。