Maxima で綴る数学の旅

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

-数学- 虚2次無理数をモジュラー変換で基本領域に移す

キティちゃんのチョコレート。

にほんブログ村 科学ブログ 数学へ
にほんブログ村

 

2次無理数αを根として持つ整数係数既約2次多項式方程式の判別式 D(α)(以下、略して2次無理数の判別式と呼びます)が保型性を持つ、というお話を紹介し、その証明をしてみました。

 

 

保型性といえば基本領域です。基本領域の易しい(優しい)説明はtsujimotterさんのこちらの記事を参考にしてください。

http://tsujimotter.hatenablog.com/embed/fundamental-domain-game

 

2次無理数の中でもその判別式が負になるような2次無理数を「虚2次無理数」と呼びます。虚2次無理数は名前が示唆するように複素数となり、複素平面上の点となります。

 

この基本領域、虚2次無理数、モジュラー変換を合わせて考えると、次のことが成り立つことが分かります。

「任意の虚2次無理数αについて、基本領域内の虚2次無理数βがただ一つ存在して、適当なモジュラー変換でαがβに移る」

下の図の赤い領域が基本領域です。この領域の外の虚2時無理数を一つ選ぶと、それに対応する赤い領域内の虚2次無理数がただ一つ決まり、その対応を表すモジュラー変換も決まる、ということを言っているのです。

f:id:jurupapa:20160227134529p:plain

これ、存在定理風に書いていますが、実は計算可能です。つまりαに対してβ及びモジュラー変換を計算することが出来ます。さあ、maximaでやってみましょう。

下記のTa()は補助関数です。FindInFD()はこのTa()も使って基本領域内の虚2次無理数を計算します。その際に途中で使用したモジュラー変換の情報を書き出します。

(%i1) Ta(p):=block([realp,ans],realp:realpart(p),ans:realp-floor(realp+1/2),
if ans=-1/2 then ans:ans+1,
return(realp-ans))$
(%i2) FindInFD(p):=
block([a],a:Ta(p), if a#0 then print("Ta:",a), p:p-a,
if abs(p)<1 then (print("S"),return(FindInFD(-1/p))),
if abs(p)>1 then return(p),
if abs(p)=1 then
if realpart(p)>=0 then return(p)
else return(-1/p))$

こんな短いプログラムで計算できるのです。

後で使うので、モジュラー変換の部品になる行列を定義しておきます。
(%i3) matTa(d):=invert(matrix([1,d],[0,1]))$
(%i4) matS():=invert(matrix([0,1],[-1,0]))$

 

では簡単な例題。2次方程式 \( 49\,x^2-42\,x+20=0 \) の解となる虚2次無理数でやってみましょう。
(%i5) a:(3+sqrt(-11))/7;
$$ \tag{%o5} \frac{3+\sqrt{11}\,i}{7} $$

早速FindInFD()で計算してみます。
(%i6) b:FindInFD(a),ratsimp,algebraic:true;
S
Ta: -1
$$ \tag{%o6} \frac{7\,\sqrt{11}\,i-1}{20} $$

これで基本領域内の虚2次無理数が見つかりました。
(%i7) matTa(-1) . matS();
$$ \tag{%o7} \begin{pmatrix}1&-1\\ 1&0 \end{pmatrix} $$

途中結果に対応する行列を掛け合わせるとモジュラー変換も分かりました。このモジュラー変換でaを変換してみます。

(%i8) (a-1)/(a+0),ratsimp;
$$ \tag{%o8} \frac{7\,\sqrt{11}\,i-1}{20} $$

さっき求まった虚2次無理数と一致します。

元の虚2次無理数と変換後の虚2次無理数複素平面上で見てみましょう。
(%i9) draw2d(x_voxel=100,y_voxel=100,proportional_axes=xy,
region(x^2+y^2>1 and x>-0.5 and x<=0.5, x,-1,1,y,0,3), implicit(x=-1/2,x,-1,1,y,0,3),implicit(x=1/2,x,-1,1,y,0,3),implicit(x^2+y^2=1,x,-1,1,y,0,3),
point_type=7,point_size=2,points([[realpart(a),imagpart(a)],[realpart(b),imagpart(b)]]));

f:id:jurupapa:20160227140707p:plain

 

もう一つ例題をやってみます。

(%i10) a:(18+%i)/13;
$$ \tag{%o10} \frac{18+i}{13} $$
(%i11) b:FindInFD(a),ratsimp,algebraic:true;
Ta: 1
S
Ta: -3
S
Ta: -1
$$ \tag{%o11} i $$

モジュラー変換を求めます。
(%i12) matTa(-1) . matS() . matTa(-3) . matS() . matTa(1);
$$ \tag{%o12} \begin{pmatrix}2&-3\\ 3&-4 \end{pmatrix} $$

求まったモジュラー変換で元の虚2次無理数aを変換して確認します。
(%i13) (2*a-3)/(3*a-4),ratsimp;
$$ \tag{%o13} i $$

こちらも複素平面上で確認しましょう。
(%i14) draw2d(proportional_axes=xy,implicit(x=-1/2,x,-1,1,y,0,3),
implicit(x=1/2,x,-1,1,y,0,3),implicit(x^2+y^2=1,x,-1,1,y,0,3),
point_type=7,point_size=2,points([[realpart(a),imagpart(a)],[realpart(b),imagpart(b)]]));

f:id:jurupapa:20160227141308p:plain

 

この記事は、

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

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

 

の第8章の命題8.3, 例8.4, 命題8.5などを参考にしました。