見出し画像

フラクタルの代表、マンデルブロ集合について知っておこう

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を繰り返しているので、発散しないということになり、この点はマンデルブロ集合に含まれる。

このサイトでは数列の軌道も視覚化されているのでわかりやすい。

明日は、コードへの実装方法について触れていく。



mondにて匿名の質問・メッセージを募集しています。なんでも送ってね👍 https://mond.how/ja/hovinci_jp