インドラの真珠:複素関数(3)
複素関数による点の写されかたを複素平面上で実験します。ここで確かめたいのは、複素関数によって、図が「対称(Symmetry」に写されるということです。この「対称」というのは、線対称・点対称にかぎらず、平行移動や拡大・縮小、円に関する鏡映も含みます。
日常的な「対称」より広い意味です。そのため、D.マンフォード他著「インドラの真珠」(小森洋平訳)では、「対称」という言葉ではなく、「シンメトリー」と書いています。
このツールでは,スティックラー博士(「インドラの真珠」に登場するキャラクタ)の絵を写します。
たとえば上の図ですが、f(z)=cz という関数によりスティックラー博士は2倍に拡大されています。cは実数で c=2 です。緑の点をドラッグして,cを虚数にすると,スティックラー博士の向きが変わります。
複素数の積は、原点からの距離を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}$$ 平行移動します。
$${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 の位置は無関係です。
それぞれの関数について,c, d が含まれるものは係数をいろいろ変えて実験してみましょう。
====================
ここからあとは,Cinderellaを使って,ボタンにない関数を試してみる方法を説明します。たとえば,「複素関数(2) 」にあった,sin や cos はどうなるでしょうか。Cinderellaをまだ持っていない人はここからダウンロード・インストールしてください。詳しくは,CinderellaJapan のページにどうぞ。
まず,下のツールから,磁石アイコンの「グリッドにスナップする」をクリックします。座標軸と方眼が背景に表示されます。次に,上の作図ツールから「点を加える」(2段目の左から5番目)を選んで,画面上の適当なところでクリックして点を取ります。名前A は自動的につきます。点が取れたら,「要素を動かす」ツール(2段目一番左)で選択モードにもどしておきます。選択モードでは作図した点をドラッグして動かすことができます。
画面上方のメニューから,「スクリプト」「CindyScript」を選び,スクリプトエディタを開きます。左側に,「Event」などの文字が並んでいます。これをスロットといいますが,表示されていない場合は境界線をドラッグすると現れます。このなかの「Draw」を選び,右の「クリックしてスクリプトを書き始めてください」と書かれたウィンドウをクリックします。
初めに,スティックラー博士のデータを書きます。次のコード(データが書かれている)をコピーしましょう。
このあとに,次のコードを書きます。(ここからコピーできます)
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で表示しています。
このあと,関数を定義し,その像を表示します。たとえば,次のものはzを2倍する関数です。
f(z):= で右辺に式を書くと関数が定義できます。コロンと等号です。末尾にセミコロンが必要です。
次の2行で,st の各要素にこの関数を適用(apply)し,xy座標に変換して描画しています。
Shift+Enter で実行すると,スティックラー博士が,原点中心に2倍に拡大されます。
係数c,d をインタラクティブに決めるには,作図ツールで点B,,C,D を追加しておき,次の2行で係数を決めます(名前を対応させるためにDまでとり,点Bは使わないようにします)この2行は関数定義の前に書きます。
先ほどの「複素関数(3)」Webツールのボタンにある関数定義は順に,次のようになっています。かけ算ではかけ算記号 * が必須です。分数は / で,conjugate(z)はzの共役複素数を得る関数です。累乗の指数は ^() で括弧の中に指数を書きます。pi は円周率。i は虚数単位の$${i}$$ です。 exp(1) はネピア定数 e の取得です。関数の式で e を使うときに必要です。
では,「複素関数(3)」 Webツールになかった sin をやってみましょう。
このほか指数関数 z^i や z^c なども試してみましょう。
→ インドラの真珠:目次 に戻る