【フラクタル解説】FNFE Project #7「閉月羞花」
どうもこんにちは。FNFE Projectへようこそ!
FNFEは「For New Fractal Enthusiasts(新たなフラクタル愛好家へ)」の略です。このコーナーでは「フラクタルに興味があるけど、何から始めたらいいかわからない。。。定義を見ても何が何だかさっぱりだ、、、」という人のために、フラクタルのことを分かりやすく解説していきます。
フラクタルについて一切知らない人でもフラクタルの面白さに気付けるように構成しているので、フラクタルが全く分からないという人でも是非読んでみてください!
今回は「ジュリア集合」「マンデルブロ集合」について解説します。
新キャラ続々登場
さて、今回は虚数という概念がとても大事になってくるのですが、この記事を読んでいる人の中には虚数というものを知らない、あるいはどんなものか完全に忘れてしまったという人もいると思います。そんな人のために、先に虚数について解説しようと思います。
今回より、「大切な概念だが本題とは直接関係ない」事柄の解説を担(にな)ってくれるキャラクターが登場します。その名も…

解説おにいさんです!!!
今回は解説おにいさんに虚数について解説して頂きます。よろしくお願いします。
解説おにいさん:よろしくお願いします。
まず虚数というのは、今までの数の考え方をさらに拡張したような数のことです。
小学生はまず自然数を習い、そのあと小数や分数を習ってその間の数を表せるようになります。
中学一年生になると負の数について知り、三年生になると平方根を学んで、ただの小数や分数では表せない数を表現できるようになります。
それと同じようなことです。虚数とは、目に見えない想像上だけの数の事です。
二乗すると-1になるような数を考えます。つまり、√-1です。二乗するとマイナスになるような数はないので、ルートの中にマイナスが入る事はあり得ないと習ったかもしれませんが、それは忘れてください。
√-1をiと表現します。また、このiを虚数単位といいます。そしてa+bi(a,bは実数)で表される数を複素数といいます。(ちなみに実数とは、有理数と無理数を合わせて言う言葉です)
整数とかをよく数直線で表したと思いますが、複素数はこれに縦軸が増えます。つまりこうなります。これを複素数平面といいます。

複素数同士の演算はこんな感じで行います。

複素数の特徴にはこんなものがあります。
① i²=-1 (-i)²=-1
② a+biに対して、a-biを共役な複素数という
③ a+biにiをかけると、原点を中心に反時計回りに90度回転する

=(1)i+(-2i)i
=i+(-2)×(-1)
=i+2
=2+i
ちなみに複素数は(通常の意味での)大小を定義することが出来ません。(大小関係はありませんが順序関係はあります)数直線ならどっちが右か左かで大小を決めていましたが、平面だとそう上手くはいかないようですね。
解説おにいさん:今回知っておくべき複素数の知識は以上です。どうも、ありがとうございました。
ぼく:ありがとうございました。
本編
ということで本編に入ります。まず、充填ジュリア集合の定義について解説します。
充填ジュリア集合とは、zₙ₊₁=zₙ²+cという漸化式で、無限大に発散しないような複素数z₀の集合のことです。(ここでcは任意の複素数を指します)…といきなり言われてもよくわかんないと思うので具体的に説明していこうと思います。
まず好きな複素数を適当に考えてください。出来ればa+biとした時-2<a,b<2がいいですね。aやbは0でも構いません。
次にその複素数をcとして、zₙ₊₁=zₙ²+cという式を立てます。この式は、「zₙ₊₁はzₙ²にcを足したものになるよ」「そしてzₙ₊₁で同じような計算をしたものをzₙ₊₂とするよ」「zₙ₊₃以降も同様にしていくよ」ということを意味します。
この式で最初の数をz₀としたとき、zₙをどこまで計算しても無限大にならないような複素数z₀全体の集合をジュリア集合というのです。
充填ジュリア集合を図に表してみましょう。ひとつの複素数に対して、ひとつの複素数平面上の点が対応するので、充填ジュリア集合は複素数平面上の点にプロットできそうです。c=0.5iのときの充填ジュリア集合に含まれる点をプロットしてみると、こんな形になります。

c=-0.5ならこうなります。

c=0.1+0.75iならこうなります。

この3つの図形は、いずれもフラクタルの特性を示しています。1つ目と2つ目は分かりにくいですが、3つ目は分かりやすいですね。耳っぽい形がどこまでも続きますね。また注意深く見れば分かる通り、ジュリア集合はどれも点対称です。中心は必ず原点に来ます。
さて、この充填ジュリア集合に一工夫加えてもっと面白い形にしてみましょう。発散して充填ジュリア集合に属さないような点でも、どのぐらいの速度で発散するのかに応じて色を付けてみます。



でも…これら…

ですよね。
そこで、あえて避けてきたところに行ってみようと思います。
さっきまでは充填ジュリア集合に属する点がなくてプロットしても白一面になるのようなcを避けてきたのですが、色付きの状態でそのようなcを選ぶと…


色の付け方を変えてるとどうなるでしょうか。

なんかすごいですね。くぐると全てがシュルレアリスムの世界に行きそうです。
他にも色々見てみましょう。






cを色々変えると、様々な形に自由自在に変化しますね。どれもフラクタルの特性を示しています。これまで見てきたフラクタルとは段違いに美しいですね。閉月羞花って感じです。
ちなみにですが、正確な定義としては
充填ジュリア集合→黒い領域
ジュリア集合→充填ジュリア集合の境界部分
らしいです。でも最近の世の中のノリでは
充填ジュリア集合→黒い領域あるいはそれを含むもの
ジュリア集合→充填ジュリア集合の境界部分・あるいは黒い領域がないもの
という感覚でもなんとかなります。
例の有名なあの集合
さていよいよ皆さんお待ちかね!マンデルブロ集合の解説に入ろうと思います。
マンデルブロ集合はジュリア集合の対となる概念として提唱されたもので、名前にある通りフラクタルという概念を想像した張本人、ブノワ・マンデルブロさんに因んで名づけられました。(誤解されがちなのですがマンデルブロさんが考案したわけではありません)
マンデルブロ集合の定義は以下の通りです。
zₙ₊₁=zₙ²+c
z₀=0
が無限大に発散しないような複素数cの集合
ここで、この定義をジュリア集合の定義と比較してほしいです。
zₙ₊₁=zₙ²+c (cは任意の複素数)
が無限大に発散しないようなz₀の集合
ジュリア集合ではcを固定し、z₀を自由に動かして発散するかどうかを見ていました。これに対しマンデルブロ集合では、z₀は0で固定でcを自由に動かしてどうなるかを見ています。まさに対となっていますね。
実際にどんな点がマンデルブロ集合に属するか見てみましょう。まず0はどうなるでしょうか。
z₀=0
z₁=z₀²+0=0+0=0
z₂=z₁²+0=0+0=0
z₃=z₂²+0=0+0=0
~~~~
いつまでも0が続いて無限になるどころか大きくなる気配すらありませんね。発散しないので、0はマンデルブロ集合に入ります。
では、1はどうでしょうか。
z₀=1
z₁=z₀²+1=1+1=2
z₂=z₁²+1=2²+1=5
z₃=z₂²+1=5²+1=26
z₄=z₃²+1=26²+1=677
z₅=z₄²+1=677²+1=458330
~~~~
すごい勢いで大きくなっていきますね。このまま無限大になりそうです。発散するということで、1はマンデルブロ集合に入らないことが分かります。
cが虚数の場合も試してみましょう。私は暁山瑞希が好きなので、cを-0.8+0.27iにしてみます。。。。がやってみたところあまりにもめんどくさかったので電卓にやらせます。
z₀=0
z₁=z₀-0.8+0.27i=-0.8+0.27i
z₂=z₁²-0.8+0.27i=-0.2329-0.162i
z₃=z₂²-0.8+0.27i=-0.77200159+0.3454596i
z₄=z₃²-0.8+0.27i=-0.32335588-0.263390721i
z₅=z₄²-0.8+0.27i=-0.764815647+0.440337877i
~~~~
この後も計算を続けていきますが、値はいい感じに大きくなったり小さくなったりを繰り返して発散する気配は見せません。しばらくやっても発散しないので、-0.8+0.27iはマンデルブロ集合に属すると言えるのでしょうか?
さらに計算を続けてみましょう。
(長ったらしいので省略)
-0.991197246+0.991947166i
なんか大きくなりましたね。
-0.8014872-1.6964306i
1を超えた?
-3.03549505+2.98933482i
え。まじ?
-0.521892467-17.8782221i
この流れは。。。
-320.158454+18.9310189i
待って待って待って。。。
102142.252-12121.5815i
・・・・マジか。
ということで、途中まで発散しなさそうな感じだったのに急に大きくなって天空遥かに飛んで行ってしまいました。
このように、ある複素数がマンデルブロ集合に属するかどうかを判断するのは難しく、「何らかの規則的なパターンに入った」「a+biのabどちらかが±2を超えた」の二つにならない限り入るかどうか判断できないのです。
中にはz₁₀₀₀₀₀₀₀まで計算しても属するかどうかわからないものがありますし、どこまで計算しても入るか微妙なモノもあります。そのためマンデルブロ集合を描画するときは、zₙを適当なところまで計算して、そこで計算を打ち切って発散しなかった点をマンデルブロ集合に属する、と判定することが多いです。
ではマンデルブロ集合を図に表してみましょう。ジュリア集合の時と同じように、複素数平面上にマンデルブロ集合に属する点を黒、属さない点を白としてみると….

バナーにもあるあの形になりました。閉月羞花ポイント9458151547819くらいあります。
この図形、面白いのがいろんな場所に自分自身と似た形の図形があるんです。西部を拡大するとこんな風になっています。

北東部にはこんなものがあり

北西にはこんなものが見られます。

一見するとこれらは全て同じ形に見えますが、実はそれぞれの「飛び地」は互いに異なった形をしています。
例えばこれは西部にあった飛び地(青)を本体(黒)と重ねてみたものなのですが、形が微妙に違ってくるのが分かります。

北東部にあったアレは微妙に歪んでいました。

その近くにあったこれはそんなに歪んでいないように見えましたが、、、

実際重ねてみるとこれでした。

このように、マンデルブロ集合の「飛び地」は実はそれぞれ特有の形をしていて、正確に全て同じ、というわけではないんですね。完全に自分自身と同じ形というわけではないですが、マンデルブロ集合の図はフラクタルとして扱われます。
色を付けてみました。かっこよ

色んなところを見てみましょう。(色の付け方を適宜変えています)






こんなもんにしときましょう。写真集はそのうち出すかもしれません。
⚯
最後に(充填)ジュリア集合とマンデルブロ集合の関係についてかる~く触れてから終わりましょう。
複素数cがマンデルブロ集合に属するということは、zₙ₊₁=zₙ²+cというジュリア集合が充填ジュリア集合であるということです。
マンデルブロ集合に属する複素数をcとしたジュリア集合は黒い領域がありますが、そうでない複素数をcとしたジュリア集合は黒い領域がないということですね。


また、マンデルブロ集合の中央付近にあるcを選んだ時は、対応するジュリア集合は丸っこくボリュームのある形になるのに対し、マンデルブロ集合の縁ギリギリからcを選んだときはスレンダーで尖った形になります。


ジュリア集合とマンデルブロ集合は密接に関係しているんですね。
ちなみに、c=a+biのジュリア集合は、c=a-biのジュリア集合を上下反転させた形になります。だからマンデルブロ集合は上下対称なんですね。
まとめ
いかがでしたか?今回はジュリア集合とマンデルブロ集合について取り上げました。
ジュリア集合はzₙ₊₁=zₙ²+cが発散しないようなz₀の集合で、マンデルブロ集合はzₙ₊₁=zₙ²+cが発散しないcの集合というふうに対になっていることを学びました。
ジュリア集合・マンデルブロ集合を複素数平面上にプロットすると、美しくどこまでも不規則な図形が現れるというのはとても興味深いことです。特にマンデルブロ集合は似てるけど違う図形が現れるというとても面白い現象が起こりました。
マンデルブロ集合はどこを拡大してみても美しい模様が現れます。拡大する動画はたくさんあるので興味があれば調べてみたらよいでしょう。
次回は「カオスゲーム」について取り上げます。7/31か8/1に公開予定です。お楽しみに!
参考にしたサイト
※ジュリア集合・マンデルブロ集合の画像は「Fractal Zoomer」というソフトウェアで描画しました。それ以外の画像はパブリックドメインのものか自作です。
宣伝
新しいEP「Hexaflower's Selective Sight(s)」(略してHSS)をリリースし(て)ました。Bandcampです。是非聞いてみてください。是非!!!!!!(フリーダウンロードあり〼)

