Maxima で綴る数学の旅

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

-数学- ワイエルシュトラスのペー関数

 

ワイエルストラスのペー関数をMaximaで実装して、いくつかの性質を調べてみます。式を綺麗に表示したり、複素平面上の格子点に渡る和の定義など、結構準備があります。

(%i1) load(to_poly_solve)$

以下はペー関数をドイツ語の飾り文字で表示するための準備です。
(%i2) texput(wp, "\\wp")$
(%i3) texput(w1, "w_{1}")$
(%i4) texput(w2, "w_{2}")$

以下は数式を変形するときに便利な関数です。exp式の中の[plist]で指定される部分を、funcという関数で変形したもので置き換える、という関数です。
(%i5) modify_part(exp,func,[plist]):=block([subexp],
              subexp:apply(func,[apply('part,append([exp],plist))]),
              apply('substpart,append([subexp,exp],plist)))$

clatsumd(exp,v1,v2)という関数は複素平面上の(0,0)を除く全ての格子点を(v1,v2)が走る時のexpの和を表します。この関数を直接評価したり簡約したりしないので、関数の中身は定義しません。latexでかっこよく表示する準備が以下です。

(%i7) texput(clatsumd,lambda([exp],block([exp1,var1,var2],
              exp1:args(exp)[1],var1:args(exp)[2],var2:args(exp)[3],

              concat("\\sum_{\\left(",tex1(var1),",",tex1(var2),"\\right) \\in Z^2-\\left(0,0\\right)}                           {",tex1(exp1),"}"))))$

clatsum(exp,v1,v2)という関数は複素平面上の全ての格子点を(v1,v2) が走る時のexpの総和を表します。この関数も直接評価したり簡約したりしないので、関数の中身は定義しません。latexでかっこよく表示する準備が以下です。
(%i8) texput(clatsum,lambda([exp],block([exp1,var1,var2],

              exp1:args(exp)[1],var1:args(exp)[2],var2:args(exp)[3],
              concat("\\sum_{\\left(",tex1(var1),",",tex1(var2),"\\right) \\in Z^2}
                   {",tex1(exp1),"}"))))$

 

いよいよ、ワイエルストラスのペー関数を定義します。

(%i9) wp(z,w1,w2):=1/z^2+clatsumd(1/(z+m*w1+n*w2)^2-1/(m*w1+n*w2)^2,m,n);
$$ \tag{%o9} \wp\left(z , w_{1} , w_{2}\right):=\frac{1}{z^2}+\sum_{\left(m,n\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(z+n\,w_{2}+m\,w_{1}\right)^2}-\frac{1}{\left(n\,w_{2}+m\,w_{1}\right)^2}} $$

clatsumd(exp,v1,v2)の意味は言葉で定義しましたが、maximaの:=を使った関数定義はしていません。でもこれでもペー関数の簡単な性質がわかります。

例えばペー関数は偶関数です。つまり%o10は0になります。簡単な式変形で示してみましょう。
(%i10) ewp:wp(z,w1,w2)-wp(-z,w1,w2);
$$ \tag{%o10} \sum_{\left(m,n\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(z+n\,w_{2}+m\,w_{1}\right)^2}-\frac{1}{\left(n\,w_{2}+m\,w_{1}\right)^2}}-\sum_{\left(m,n\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(-z+n\,w_{2}+m\,w_{1}\right)^2}-\frac{1}{\left(n\,w_{2}+m\,w_{1}\right)^2}} $$

2つのclatsumd()を一つにまとめてみます。

(%i11) clatsumd(part(ewp,1,1)-part(ewp,2,1,1),n,m);
$$ \tag{%o11} \sum_{\left(n,m\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(z+n\,w_{2}+m\,w_{1}\right)^2}-\frac{1}{\left(-z+n\,w_{2}+m\,w_{1}\right)^2}} $$

%o11を見ると一部分が相殺されていることがわかります。これをもう一度2つのclatsumd()に分けてみます。
(%i12) clatsumd(part(%,1,1),n,m)-clatsumd(part(%,1,2,1),n,m);
$$ \tag{%o12} \sum_{\left(n,m\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(z+n\,w_{2}+m\,w_{1}\right)^2}}-\sum_{\left(n,m\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(-z+n\,w_{2}+m\,w_{1}\right)^2}} $$

2番目のclatsumd()を取り出して、1番目と等しいことを示します。

(%i13) part(%,2,1);
$$ \tag{%o13} \sum_{\left(n,m\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(-z+n\,w_{2}+m\,w_{1}\right)^2}} $$

clatsumd(exp,v1,v2)では(v1,v2)は(0,0)以外の全ての整数の組み合わせを走ります。ということはexpの中のv1, v2を-v1, -v2に置き換えてもそれらは結局(0,0)以外の全ての整数の組み合わせを走るので、clatsumd()の値は変わりません。
(%i14) modify_part(%,lambda([exp],subst_parallel([n=-n,m=-m],exp)),1);
$$ \tag{%o14} \sum_{\left(n,m\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(-z-n\,w_{2}-m\,w_{1}\right)^2}} $$

得られた式をさらに変形します。factorを使うと負の符号がくくり出されますが2乗になっているので下記のような式が得られます。
(%i15) %,factor;
$$ \tag{%o15} \sum_{\left(n,m\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(z+n\,w_{2}+m\,w_{1}\right)^2}} $$

これで%o16が分かりました。
(%i16) ewp=0;
$$ \tag{%o16} \sum_{\left(m,n\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(z+n\,w_{2}+m\,w_{1}\right)^2}-\frac{1}{\left(n\,w_{2}+m\,w_{1}\right)^2}}-\sum_{\left(m,n\right) \in Z^2-\left(0,0\right)}{\frac{1}{\left(-z+n\,w_{2}+m\,w_{1}\right)^2}-\frac{1}{\left(n\,w_{2}+m\,w_{1}\right)^2}}=0 $$

(%i17) 'wp(z,w1,w2)-'wp(-z,w1,w2)=0;
$$ \tag{%o17} \wp\left(z , w_{1} , w_{2}\right)-\wp\left(-z , w_{1} , w_{2}\right)=0 $$

つまり%o17が成り立つので、ペー関数は偶関数であることがわかります。