C. Eigen ライブラリィを用いた Jordan 領域の等角写像の計算プログラム

本文中に Python を用いたサンプル・プログラムを載せた。 以前は C++ を用いていた。参考までそれも載せておく。

個人的には、この手の計算には MATLAB を使うのが好みであるが、 ここでは、C++ でベクトル、 行列に関する演算をするために便利なクラス・ライブラリィである、 Eigen を利用してみる (なお、C++ では、複素数を使うのも簡単である)。

WWWサイトから、 eigen-eigen-5a0156e40feb.tar.gz のような名前のソース・ファイル一式を 入手して、以下のようにインストールする。
MacBook のターミナルで次のようにインストール
tar xzf eigen-eigen-5a0156e40feb.tar.gz
cd eigen-eigen-5a0156e40feb
ls
(Eigen があることを確認)
cp -pr Eigen /include      あるいは      cp -pr Eigen /usr/local/include

アーカイブ・ファイルに含まれていた、Eigen というディレクトリィを、~/include/usr/local/include の下にコピーしている。


(脱線になるけれど、Eigen を用いた、 Runge-Kutta 法のサンプル・プログラム https://m-katsurada.sakura.ne.jp/complex2/ball-bound.cppを紹介しておく。コンパイルの仕方、実行の仕方は、注釈に書いてある。)


$ \Omega=D_1=D(0;1)$, $ z_0=1/2$ の場合を解いてみよう。 つまり双正則な

$\displaystyle \varphi\colon \Omega\to D_1
$

で、

$\displaystyle \varphi(z_0)=0,\quad \varphi'(z_0)>0
$

を満たすものを求める。この場合は、1次分数変換

$\displaystyle \varphi(z)=\frac{z-z_0}{1-\overline{z_0}\,z}
$

が解であることが分かっている。


conformalmap.cpp -- 例えばターミナルで
curl -O https://m-katsurada.sakura.ne.jp/complex2/conformalmap.cpp
としてダウンロード出来る。


/Users/mk/.tex-inputs/conformalmap.cpp

こんな風にコンパイル
g++ -I/opt/X11/include -I ~/include conformalmap.cpp -L ~/lib -lglscd -L/opt/X11/lib -lX11
(GLSC を利用していて、現象数理学科 Mac では、 ~/include, ~/lib にインストールされていることを想定している。 上の手順で、 Eigen も ~/include にインストールしておいた。)

図: $ w=\dfrac{z-z_0}{1-\overline{z_0} z}$, $ z_0=0.6$ による $ z$ 平 面の同心円、放射線の像を描いた。
Image GRAPH



桂田 祐史