フラクタルの代表、マンデルブロ集合について知っておこう
42 Tokyoの「fract-ol」という課題が完成した。
すでに提出できるように準備してあるので、提出してからレビューを受けるだけだ。
課題で取り組んだフラクタルは数学の問題でもあり、いままで数学的な側面について取り上げていなかったので、今回取り上げる。
マンデルブロ集合
ある図形のその一部を取り出して拡大すると、元の全体の図形と同じような図形を依然として持っている場合、その図形を「フラクタル」と呼ぶ。
フラクタルは自然界にも多数存在しており、代表的な例は海岸線があげられる。
海岸線はいくら拡大しても、その複雑な形状が維持される。
フラクタルは、フランスの数学者であるブノワ・マンデルブロが導入した幾何学の概念であり、彼の発見した有名なフラクタルが、彼の名前を冠したマンデルブロ集合(英語で「Mandelbrot set」)だ。
マンデルブロ氏はすでにお亡くなりになっているが、彼の話をTEDトークで聞くことができる。
マンデルブロ集合の周囲には、同じ模様は無いと言われており、単純な数式の中に、無限のパターンが広がっている。
ネットでは「マンデルブロー」と、伸ばして表記されている例もあるが、英語読みだと「マンデルブロー」に近く、フランス語読みだと「マンデルブロ」に近いようだ。
ここでは「マンデルブロ」に表記を統一する。
今回ぼくが作ったのマンデルブロ集合が以下の図だ。
拡大していくと、似たような図形に巡り会うことができる。
このような複雑な図形を描くには、難しい数式が出てくるかと思いきや、数式自体はとてもシンプルで、すぐに理解することができる。
数式
マンデルブロ集合は数式で表すと、以下の漸化式(前に出した数字を利用して次の値を出す)で定義される。
$$
\begin{cases}
Z_{0} =\ 0\\
Z_{n\ +\ 1} \ =\ Z_{n}^{2} \ +\ C\
\end{cases}
$$
nを大きくしていった時に、数が大きくならずに安定する(難しい言葉を使うと、n → ∞ の極限で無限大に発散しない)という条件を満たす複素数C全体が作る集合がマンデルブロ集合となる。
下の画像でいうと、白い部分がマンデルブロ集合となる。
複素数と複素平面
複素数と複素平面についてはこの動画がわかりやすい。
複素数 c を複素平面上の点として表すと、この平面上でマンデルブロ集合はフラクタル図形として表される。
c は虚数 (imaginary number) を含んだ a + ib と表現されるが、その c をxy平面上の点 (a, b) として扱うことがミソだ。
発散する・しないの具体例
まずは発散する例を見ていこう。
C = 1 の場合だ。
$$
\begin{aligned}Z_{0}=0\\ Z_{1}=0^{2}+1=1\\ Z_{2}=1^{2}+1=2\\ Z_{3}=2^{2}+1=5\\ Z_{4}=5^{2}+1=26\end{aligned}
$$
ここでは数がどんどんと大きくなっていっている(「発散する」と言う)ので、この点はマンデルブロ集合に含まれない。
次に発散しない場合を見ていこう。
C = -1 の場合が、発散しないケースとなる。
$$
\begin{aligned}Z_{0}=0\\ Z_{1}=0^{2}+\left( -1\right) =-1\\ Z_{2}=\left( -1\right) ^{2}+\left( -1\right) =0\\ Z_{3}=0^{2}+\left( -1\right) =-1\\ Z_{4}=\left( -1\right) ^{2}+\left( -1\right) =0\end{aligned}
$$
ここでは0と1を繰り返しているので、発散しないということになり、この点はマンデルブロ集合に含まれる。
このサイトでは数列の軌道も視覚化されているのでわかりやすい。
明日は、コードへの実装方法について触れていく。