Maxima で綴る数学の旅

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

-数学- 楕円モジュラー関数/j不変量 (2) 実行例

f:id:jurupapa:20210113004058j:plain

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

 

楕円モジュラー関数のAPIをまとめてgithubに公開しました。

以下(%i1),(%i2)はmaxima-asdfという便利な道具を使ってgithubからダイレクトにダウンロード、ロードして実行する実行例になっています。maxima-asdfを導入していない場合には、githubからmodular_j.macをダウンロードして保存し、普通にload("modular_j.mac");と読み込めば、それ以降は同じように実行できます。

 

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

(%i2) asdf_load("modular_j")$

 

早速\(j(\frac{1+\sqrt{-3}}{2})=0\)を試してみましょう。

(%i3) p:(1+sqrt(-3))/2;

$$ \tag{${\it \%o}_{3}$}\frac{\sqrt{3}\,i+1}{2} $$

まずは数値計算をしてみます。内部では冪級数展開を利用して計算しています。
(%i4) float_modular_j(p);

$$ \tag{${\it \%o}_{4}$}-1.989519660128281 \times 10^{-13} $$

かなり小さい数です。では正確な値はどうなるのでしょうか。
(%i5) exact_modular_j(p);

$$ \tag{${\it \%o}_{5}$}0 $$

予定通り、\(0\)になりました。

 

もう少し複雑な例をやってみます。
(%i6) p:(1+sqrt(-15))/2;

$$ \tag{${\it \%o}_{6}$}\frac{\sqrt{15}\,i+1}{2} $$

\(j(p)\)の正確な値を求めるとこんな感じです。
(%i7) exact_modular_j(p),factor;

$$ \tag{${\it \%o}_{7}$}-\frac{135\,\left(637\,\sqrt{5}+1415\right)}{2} $$

この値をfloat型に直すと、
(%i8) %,numer;

$$ \tag{${\it \%o}_{8}$}-191657.8328625472 $$

となります。では数値計算をすると、
(%i9) float_modular_j(p);

$$ \tag{${\it \%o}_{9}$}-191657.8328625472 $$

きちんと一致します。

 

最後の例題では様々なAPIを使ってみます。
(%i10) p:(-1+sqrt(-23))/2;

$$ \tag{${\it \%o}_{10}$}\frac{\sqrt{23}\,i-1}{2} $$

このpを解として持つ2次方程式の判別式を求めます。
(%i11) D:FindDetIrr(p);

$$ \tag{${\it \%o}_{11}$}-23 $$

判別式\(D=-23\)を持つ、互いに対等でない虚2次無理数を全て求めます。
(%i12) FindReducedQuadIrrD(D);

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

判別式\(D=-23\)の類数を求めてみます。実は互いに対等でない虚2次無理数の個数と一致します。
(%i13) FindClassNumberD(D);

$$ \tag{${\it \%o}_{13}$}3 $$

判別式\(D=-23\)に対応するヒルベルト多項式を求めます。
(%i14) FindClassPolyD(x,D);

$$ \tag{${\it \%o}_{14}$}x^3+3491750\,x^2-5151296875\,x+12771880859375 $$

\(j(p)\)の正確な値を求めてみます。
(%i19) exact_modular_j(p),factor;

$$ \tag{${\it \%o}_{19}$}\scriptsize{\frac{125\,\left(49\,\left(351747\,\sqrt{23}-371251163\,\sqrt{3}\right)^{\frac{2}{3}}-13967\,2^{\frac{4}{3}}\,3^{\frac{1}{6}}\,\left(351747\,\sqrt{23}-371251163\,\sqrt{3}\right)^{\frac{1}{3}}+15944845\,2^{\frac{2}{3}}\,3^{\frac{1}{3}}\right)}{2^{\frac{1}{3}}\,3^{\frac{7}{6}}\,\left(351747\,\sqrt{23}-371251163\,\sqrt{3}\right)^{\frac{1}{3}}}} $$

不動小数点に直してみます。
(%i20) float(%);

$$ \tag{${\it \%o}_{20}$}-3493225.699969933 $$

数値計算を行ってみます。
(%i21) float_modular_j(p);

$$ \tag{${\it \%o}_{21}$}-3493225.699969928 $$
​ほぼ正確に一致していることがわかります。

 

今回の例題は全て、 

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

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

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

のp257-p262に掲載されています。