Maxima で綴る数学の旅

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

-数学- 楕円モジュラー関数/j不変量 (4) ヒルベルト類多項式を求める

f:id:jurupapa:20210116191423j:plain

この記事のコードをJupyter notebook形式で見るにはこちら。

 

共通の判別式\(D\)を持つ簡約虚2次無理数を全て求めることが出来れば、ヒルベルト多項式を求めるのはあと一歩です。まずヒルベルト多項式の定義を見てみましょう。

$$P_{D}(x)=\prod_{i=1}^{h_{D}}{\left(x-j\left(a_{i}\right)\right)}$$

\(a_i,\, i=1\cdots h_D\)は判別式Dを持つ全ての簡約虚2次無理数を表します。

 

見てすぐ分かることは、この多項式は次数が\(h_D\)で根が\(j(a_i)\)です。

また別途証明が必要なことですが、\(P_{D}(x)\)は係数が全て整数です。これ、超重要です。

 

判別式\(D\)が与えられた時に、対応する\(P_{D}(x)\)を近似的に計算するための道具は全て揃っています。

  • \(a_i\)はFindReducedQuadIrrD(D)で計算できます。
  • \(h_D\)はFindClassNumberD(D)で計算できます。
  • \(j(x)\)は数値計算ではfloat_modularj(x)あるいはbfloat_modular_j(x)を使って計算出来ます。

やってみましょう。 

(%i1) install_github("YasuakiHonda","modular_j","main")$

(%i2) asdf_load("modular_j")$

 

判別式として\(-15\)を選んでみます。
(%i6) a:FindReducedQuadIrrD(-15);

$$ \tag{${\it \%o}_{6}$}\left[ \frac{\sqrt{15}\,i-1}{4} , \frac{\sqrt{15}\,i-1}{2} \right] $$

2つの簡約虚2次無理数がもとまりました。
(%i7) FindClassNumberD(-15);

$$ \tag{${\it \%o}_{7}$}2 $$

類数は2です。

 

次にヒルベルト多項式の定義式の各部分を計算に必要な値/式に置き換えます。
(%i8) aproxpoly:expand(product(x-float_modular_j(a[i]),i,1,2));

$$ \tag{${\it \%o}_{8}$}x^2-1.70530256582424 \times 10^{-13}\,i\,x+191025.0\,x-3.268345941408153 \times 10^{-8}\,i-1.21287375 \times 10^{+8} $$

近似的な多項式が求まりました。本来この多項式は整数のはずですから、各係数を最も近い整数点に丸めましょう。

(%i27) (cround(z):=round(realpart(z))+round(imagpart(z)), cround(coeff(aproxpoly,x,1)));

$$ \tag{${\it \%o}_{27}$}191025 $$
(%i28) cround(coeff(aproxpoly,x,0));

$$ \tag{${\it \%o}_{28}$}-121287375 $$

という訳で次の式が\(D=-15\)のヒルベルト多項式です。
(%i29) x^2+%th(2)*x+%th(1);

$$ \tag{${\it \%o}_{29}$}x^2+191025\,x-121287375 $$

APIとして用意されている関数FindClassPolyD() を使って判別式が-15のヒルベルト多項式を求めると次のようになります。
(%i30) FindClassPolyD(x,-15);

$$ \tag{${\it \%o}_{30}$}x^2+191025\,x-121287375 $$

 

当たり前ですが、(%o29)と(%o30)は一致しました。

 

数値計算による近似で多項式を近似的に求め、整数係数であることから正確な多項式を求める、というのは以前方程式のガロア群を求めた際にehitoさんから教えて頂いたやり方と同じです。

この近似計算も含めて上記の計算については

数論入門 (現代数学への入門)

数論入門 (現代数学への入門)

  • 作者:山本 芳彦
  • 発売日: 2003/11/11
  • メディア: 単行本
 

のp260〜p262に記載されており、参考にしました。

 

またtsujimotterさんのブログ記事:

の前半にもこの計算方法が掲載されています。こちらも分かりやすく参考になりました。