次も稲生による作品です.

Mandelbrot集合とは有名なフラクタル集合の1つで,複素力学系の重要な研究対象です.

Mandelbrot集合

この補集合 (外側) に傾斜をつけることで3次元的に表現し,3Dプリンタで出力してみました.

ソースはGithubで公開しています. ベースは2変数関数のグラフを3Dモデル化するものなので,色々な関数に使うことが可能です.上のtwitterのスレッドではJulia集合なども作っています.

定義と計算法

Mandelbrot集合の定義と計算法を,簡単に以下に載せておきます.


定理&定義:$z_{n+1}=z_n^2+c$という漸化式を,複素数の範囲で考える. 複素数$c$を1つ決めて,初期値 $z_0=0$ から始めて,$z_1,z_2,\dots,z_n,\dots$を順に計算していくと,以下のどちらかになる:

  1. $\lim_{n \to \infty} \lvert z_n \rvert = \infty$.

  2. 全ての $n$ に対して $\lvert z_n \rvert \le 2$.

Mandelbrot集合とは,この 2. を満たすような複素数 $c$ の集合である.


計算法はこの 2. の性質を使えば簡単です.現実には無限に $z_n$ を計算することは不可能なので,あらかじめ大きな自然数 $N$ を1つ決めておきます.各 $c$ に対し,$z_1,\dots,z_N$ を順に計算していき,どこかで 2. を満たさなくなったら,そのような $c$ は Mandelbrot集合に属さない点であることがわかります. $z_1,\dots,z_N$ が全て 2. を満たしていたら,そのような $c$ はMandelbrot集合の点であろうと推定します.

平面上に絵を描くプログラムは沢山あります.拙作のqfractもその1つです.

3Dモデルを作るには,もう少し手間が必要です.Milnorの教科書のAppendixに,Mandelbrot集合の補集合における境界までの距離を双曲距離で近似する方法とその計算法が載っているので,それを利用しています (詳細は省略します).