フラクタルプログラムの解説

フラクタル・マンデルブロ集合・ジュリア集合
フラクタルとは、1970年代にIBMで研究員をしていたフランス人数学者 マンデルブロが発見した概念です。 厳密にはフラクタル次元とかあるのですが、 難しい定義を抜きにして簡単に言うと、 複雑な形状が簡単な関係で構成されているものです。 理屈を言うより具体例を見た方が分かりやすいでしょう。 例えば、2次のマンデルブロ集合は、

Zk = Zk - 12 + C (ただし Z, C は複素数)

という単純な式から成り立っています。 プログラムの中では Zk の初期値 Z0

Z0 = Real + i Imag

と置いています。 また C は画面上の位置で決まります。 横の座標値が実数部・縦の座標値が虚数部で、 初期値はそれぞれ -2 〜 2 となっています。 マンデルブロ集合とは、上の漸化式を何回計算しても無限遠方へ発散せず、 ある範囲内に収まる複素数Cの集合です。 プログラムでは Zk の大きさ

|Zk| = sqrt(ZkReal2 + ZkImag2)

が 2 を超えると必ず発散するのでその時点で反復計算を止め、 また反復回数 k が100 に達した時点で収束したと見なします (拡大を続けると境界が粗くなるのはこのためです)。 そして、それぞれのポイントでの反復回数 k によって色をつけます。 このプログラムでは
0 〜 50 〜 99, 100
青 〜 緑 〜 赤, 黒
と色をつけています (ver.2では藍〜白,黒・赤〜白,黒が追加されました)。
ジュリア集合のジュリアはフランス人の数学者で、 マンデルブロより31歳年上の大先輩です。 このジュリア集合はマンデルブロ集合の ZkC を入れ替えたものです。 つまり、 C

C = Real + i Imag

で固定し、画面上の位置で Z0 を決めています。 ソースコードを見れば、 上の2つが単に Z0C を入れ替えているだけなのがわかると思います。 また、ver.2では3次〜5次も追加されました。

バーニングシップ・トライコーン
いずれもマンデルブロ集合の亜種です。
バーニングシップは2次の表示を反転してアプレットの右側の小さな黒いカタマリを 拡大するとその名の由来がわかります。式は

Zk = (|Zk - 1Real | +i |Zk - 1Imag |)2 + C

です。
トライコーンは2次の形からその名が付けられました。 3次以上は実際にはテトラ・ペンタ・ヘキサになっています。式は

Zk = (Zk - 1Real -i Zk - 1Imag )2 + C

です。

自己相似性
フラクタル最大の特徴は、自己相似性と呼ばれるものです。 自分自身の一部を拡大すると、元の図形とそっくりになるというものです。 このプログラムでも拡大機能がありますので、 実際に拡大してみるとよく分かると思います。 マンデルブロ集合の小さな団子部分が分かりやすいでしょう。 (中には自己相似性の無いひねくれたフラクタルもありますが、 マンデルブロ集合とジュリア集合 ・ニュートンアトラクタはそんなことはありません。)

ニュートンアトラクタ
ver.2で追加されたニュートンアトラクタについて簡単に説明します。 ニュートンアトラクタとは、方程式

Z n - 1 = 0

の (複素数の) 解を、 初期値を変えてニュートン=ラプソン法の逐次計算

Zk+1 = Zk - ( Zkn - 1 ) / nZkn - 1

によって解いた時、 n 個の解の内どれに収束するかで数を分けたものです。
2次では単に +1 と -1 の領域が真っ二つに別れるだけですが、 3次以上では、分けた領域がフラクタルになります。

技術屋の魂(?)に戻る