見出し画像

インドラの真珠:複素関数(3)

 複素関数による点の写されかたを複素平面上で実験します。ここで確かめたいのは、複素関数によって、図が「対称(Symmetry」に写されるということです。この「対称」というのは、線対称・点対称にかぎらず、平行移動や拡大・縮小、円に関する鏡映も含みます。
 日常的な「対称」より広い意味です。そのため、D.マンフォード他著「インドラの真珠」(小森洋平訳)では、「対称」という言葉ではなく、「シンメトリー」と書いています。

このツールでは,スティックラー博士(「インドラの真珠」に登場するキャラクタ)の絵を写します。

画像1

 たとえば上の図ですが、f(z)=cz という関数によりスティックラー博士は2倍に拡大されています。cは実数で c=2 です。緑の点をドラッグして,cを虚数にすると,スティックラー博士の向きが変わります。

画像2

複素数の積は、原点からの距離をcの絶対値倍し、偏角の分だけ回転するのでしたから,スティックラー博士全体がそのように拡大・回転するわけです。この変換(図形の移動)を「シンメトリー」といっています。
 f(z)の式は、10種類用意してあります。f(z) の z が複素数です。c,dは複素数の定数です。いままでにやったものの他に,$${f(z)=c(z-d)+d}$$ と $${f(z)=e^{\frac{2}{5}\pi i }z}$$ があります。
$${f(z)=c(z-d)+d}$$ は,「z を −d だけ平行移動し,cによって拡大・縮小・回転」し,dだけ平行移動して戻す」ということです。わかりやすいように,dは固定し,c の値を変更してみましょう。下図左では,まず $${-(1+i)}$$ だけ平行移動してAに写り,$${i}$$ をかけて90°回転し(cの点に重なる)$${1+i}$$ 平行移動します。下図右では, $${-(1+i)}$$ だけ平行移動してAに写り,$${-1+i}$$ をかけて135°回転して$${\sqrt{2}}$$倍拡大し(Bの点),$${1+i}$$ 平行移動します。

画像3

 $${f(z)=e^{\frac{2}{5}\pi i }z}$$ は,「複素関数(2)」で説明したように,オイラーの公式によると$${e^{i \theta}=\cos\theta+i \sin \theta}$$ でしたから,これは $${\dfrac{2}{5}\pi}$$ すなわち72°の回転を表します。係数に$${c,\ d}$$ はありませんから,点c, d の位置は無関係です。

画像4

それぞれの関数について,c, d が含まれるものは係数をいろいろ変えて実験してみましょう。

====================

ここからあとは,Cinderellaを使って,ボタンにない関数を試してみる方法を説明します。たとえば,「複素関数(2) 」にあった,sin や cos はどうなるでしょうか。Cinderellaをまだ持っていない人はここからダウンロード・インストールしてください。詳しくは,CinderellaJapan のページにどうぞ。

まず,下のツールから,磁石アイコンの「グリッドにスナップする」をクリックします。座標軸と方眼が背景に表示されます。次に,上の作図ツールから「点を加える」(2段目の左から5番目)を選んで,画面上の適当なところでクリックして点を取ります。名前A は自動的につきます。点が取れたら,「要素を動かす」ツール(2段目一番左)で選択モードにもどしておきます。選択モードでは作図した点をドラッグして動かすことができます。

画像5

画面上方のメニューから,「スクリプト」「CindyScript」を選び,スクリプトエディタを開きます。左側に,「Event」などの文字が並んでいます。これをスロットといいますが,表示されていない場合は境界線をドラッグすると現れます。このなかの「Draw」を選び,右の「クリックしてスクリプトを書き始めてください」と書かれたウィンドウをクリックします。
 初めに,スティックラー博士のデータを書きます。次のコード(データが書かれている)をコピーしましょう。

stickler=[[0.856 + i*0.04,0.648 + i*0.04],[0.648 + i*0.04,0.584 + i*0.504],[0.584 + i*0.504,0.312 + i*0.84],[0.312 + i*0.84,0.2 + i*0.408],[0.2 + i*0.408,-0.024 + i*0.12],[-0.024 + i*0.12,0.136 + i*0.024],[0.312 + i*0.84,0.28 + i*1.512],[0.28 + i*1.512,0.536 + i*1.208],[0.536 + i*1.208,0.68 + i*1.16],[0.68 + i*1.16,0.824 + i*1.32],[0.28 + i*1.512,-0.056 + i*1.256],[-0.056 + i*1.256,-0.04 + i*1.128],[-0.04 + i*1.128,0.136 + i*0.952],[0.28 + i*1.512,0.28 + i*1.72],[0.28 + i*1.72,0.472 + i*1.752],[0.472 + i*1.752,0.584 + i*1.912],[0.584 + i*1.912,0.568 + i*2.152,0.572 + i*2.076,0.576 + i*2.032],[0.568 + i*2.152,0.408 + i*2.344],[0.408 + i*2.344,0.232 + i*2.344],[0.232 + i*2.344,0.072 + i*2.2],[0.072 + i*2.2,0.056 + i*1.96],[0.056 + i*1.96,0.136 + i*1.816],[0.28 + i*1.72,0.136 + i*1.816],[0.572 + i*2.076,0.64 + i*2.076],[0.64 + i*2.076,0.64 + i*2.012],[0.64 + i*2.012,0.576 + i*2.032],[0.568 + i*2.152,0.584 + i*1.912]];

画像6

このあとに,次のコードを書きます。(ここからコピーできます)

size=1;
z=complex(A);
st=apply(stickler,s,apply(s,#*size+z));
apply(st,s,draw(gauss(s_1),gauss(s_2)));

size はスティックラー博士のサイズです。size=2 にすれば2倍の大きさになります。スクリプトを書き換えるときは,行末のセミコロンを書き落とさないようにしましょう。
z=complex(A) は,点Aの座標を複素数に変換して z に代入します。
st=apply(stickler,s,apply(s,#*size+z));  は,スティックラー博士のデータ(リストになっている)のそれぞれ(#)をsize 倍して,zに加えています。つまり,点Aに表示されるようにしています。
apply(st,s,draw(gauss(s_1),gauss(s_2))); では,st の各要素を gauss() でxy座標に変換してdrawで表示しています。

画像7

このあと,関数を定義し,その像を表示します。たとえば,次のものはzを2倍する関数です。

f(z):=2*z;
stmap=apply(st,s,apply(s,f(#)));
apply(stmap,s,draw(gauss(s_1),gauss(s_2)));

f(z):=   で右辺に式を書くと関数が定義できます。コロンと等号です。末尾にセミコロンが必要です。
次の2行で,st の各要素にこの関数を適用(apply)し,xy座標に変換して描画しています。
Shift+Enter で実行すると,スティックラー博士が,原点中心に2倍に拡大されます。

画像8

係数c,d をインタラクティブに決めるには,作図ツールで点B,,C,D を追加しておき,次の2行で係数を決めます(名前を対応させるためにDまでとり,点Bは使わないようにします)この2行は関数定義の前に書きます。

c=complex(C);
d=complex(D);

先ほどの「複素関数(3)」Webツールのボタンにある関数定義は順に,次のようになっています。かけ算ではかけ算記号 * が必須です。分数は /  で,conjugate(z)はzの共役複素数を得る関数です。累乗の指数は ^() で括弧の中に指数を書きます。pi は円周率。i は虚数単位の$${i}$$ です。  exp(1) はネピア定数 e の取得です。関数の式で e を使うときに必要です。

e=exp(1);
f(z):=c*z;
f(z):=z+d;
f(z):=conjugate(z);
f(z):=i*z;
f(z):=c*z+d
f(z):=e^(2/5*pi*i)*z;
f(z):=c*(z-d)+d;
f(z):=2*z;
f(z):=1/z;
f(z):=1/conjugate(z);

画像9

では,「複素関数(3)」 Webツールになかった sin をやってみましょう。

f(z):=sin(z);

画像10

このほか指数関数 z^i や z^c なども試してみましょう。

次節:反復関数系

→ インドラの真珠:目次 に戻る