マンデルブロとジュリア

2022/09/10

フラクタル プログラム 数学

8月のブログでマンデルブロ集合やジュリア 集合などが描く、複雑で不思議な図形を紹介した。

その後、プログラムを改良し、これらの図形を手軽に描けるようにしたので、今一度、マンデルブロ集合やジュリア 集合の描く世界を紹介する。


マンデルブロ集合


マンデルブロ集合というのは、次のような漸化式が発散しない複素数\(c\)の集合である。

\[z_{0} = 0\]
\[z_{n+1} = z_{n}^{2} + c\]

ものすごく単純な漸化式で、もし\(z\)や\(c\)が実数であれば、\(c>0.25\)なら発散、つまり\(n\)が大きくなると無限大になり、\(c\leqq0.25\)であれば一定の数に収束する。

しかし\(z\)や\(c\)が複素数だと複雑な世界になる。下の図はマンデルブロ集合を示したものである。実数は直線で示せるが複素数を示すには平面が必要となる。この平面は\(c=u+vi\)とした場合の\(uv\)平面であり、\(u\)および\(v\)の値によって\(z\)の漸化式が発散するかどうかを色で表現している。



黒い部分は発散しないところ、すなわちマンデルブロ集合に属する点であり、色がついている部分は発散した、つまりマンデルブロ集合に属さない点である。

この画像は横960x縦720であり、計69万1200の点について、上の漸化式が発散するかどうかを最大で\(n=100\)まで計算したものである。100回まで計算して\(z\)の絶対値が2より小さければ黒、100回以前に\(z\)の絶対値が2を超えた場合、何回目で超えたかによって色分けをしている。この図一枚を描くのにどれほど多くの計算をしているか、理解していただけるだろうか。

このマンデルブロ図形はどこまでも拡大できて、いろいろな世界が広がる。一部を10倍、100倍、1000倍に拡大したものを下に示す。




ジュリア集合


マンデルブロ集合との姉妹関係にある集合がジュリア集合である。マンデルブロ集合は、
\[z_{n+1} = z_{n}^{2} + c\]
で、\(z_{0} = 0\)という条件で、\(c=u+vi\)を変化させた場合であった。

これに対して、\(c=u+vi\)を固定して、\(z\)の初期値である\(z_{0}\)を変化させた場合について計算したものが、ジュリア集合である。

下にジュリア集合の例を示す。右側がマンデルブロ、左がジュリアである。マンデルブロの十字マークの点が\(u=0.32,v=0.043\)であり、この値を固定して、つまり\(c=0.32+0.043i\)との条件で、\(z_{0}\)を変化させた場合を示している。したがってジュリアの平面は\(z_{0}=x_{0}+y_{0}i\)としたときの\(x_{0}y_{0}\)平面となっている。


要するにマンデルブロの一点を固定し、その点で\(z_{0}\)を変化させた図が右のジュリアである。

マンデルブロの図は拡大することによって様々な世界を見せてくれるが、基本的には一つしかない。どの部分をどれだけ拡大するかだけである。

これに対して、マンデルブロの全ての点に対応してジュリア図形があるので、ジュリア図形は無限に存在することになる。\(c=u+vi\)の\(u,v\)を変えることで全く異なるジュリア図形が現れるのである。

上の図では\(c=u+vi\)がどこにあるのかわかりにくいので、左のマンデルブロを170倍に拡大して下に示す。\(u=0.32,v=0.043\)という点は、こんなところにあったのである。


そこでこの点を少し動かしてみる。\(u=0.320318,v=0.044489\)と、ほんの少し変えるだけで、対応するジュリア図形は全く異なったものになる。


\(u=0.3248,v=0.037717\)の場合と、\(u=0.322872,v=0.042297\)の場合を下に示す。このように\(c=u+vi\)を少し変えるだけで図形がどんどん変わるので興味は尽きない。



そしてもちろんだが、ジュリアもマンデルブロと同様に、いくらでも拡大が可能である。下にいくつかのサンプルを掲載する。






マンデルブロだけでも十分複雑で魅力的な世界なのだが、そのマンデルブロ集合を描いた図形の全ての点に対して、ジュリア集合が存在し、一つ一つのジュリア集合がマンデルブロ集合と同様に無限の複雑さを持つ。

なんという無限の二乗のような複雑な世界。これが
\[z_{n+1} = z_{n}^{2} + c\]
という単純な式だけで表せるというのもまた不思議である。