
ジュリア集合が「連結かどうか」を数えるだけでマンデルブロ集合が出てくる。ただし出てきたのはメインカージオイドだけだった
マンデルブロ集合の境界の次元を測った回で、理論値2に対して1.09しか出せなかった。原因は「次元を担う細い枝が1画素より細い」ことだった。
その反省を持ったまま、隣の話題に手を出した。ジュリア集合だ。
マンデルブロ集合の定義は「 を から反復して発散しない の集合」。これはよく知られている。だがこの集合にはもう一つの顔がある。
マンデルブロ集合とは、ジュリア集合 が連結になるような の集合である
こちらの定義には が出てこない。まったく別のもの——各 に対して平面全体を反復して得られる図形——の「つながっているかどうか」だけで、同じ集合が定義できるという。
本当に出てくるのか。連結成分を数えるコードを書いて確かめた。
実験に使ったコードの全文はGitHubに置いています。
ジュリア集合とは何か
マンデルブロ集合は「 を固定して を動かす」。ジュリア集合はその逆で、「 を固定して を動かす」。 ひとつにつき1枚の絵ができる。

上段3枚は塊としてつながっている。下段の右2枚は、塵のように散っている。この違いが「連結かどうか」だ。
を連続的に動かすと、形も連続的に変わる。メインカージオイドの縁に沿って を一周させた。

葉の枚数が変わり、渦の巻き方が変わる。 の位置がそのまま形の設計図になっている。
自分で を選んで見比べられるようにもした。
連結成分を数えるだけで、マンデルブロ集合は出るか
を の格子に振り、それぞれについて のジュリア集合を描いて、scipy.ndimage.label で連結成分を数えた。マンデルブロ集合の定義( の軌道)は一切使っていない。
最初の試みは失敗した。「連結成分が少なければ連結」という条件にしたところ、一致率23%。原因はすぐ分かって、 がマンデルブロ集合の外だとジュリア集合が画面上でほぼ空になり、成分数0を「連結」と数えていた。集合が無いことと、集合がひとつながりであることを区別していなかった。
条件を「成分がちょうど1個」に直す。

一致率95.72%。 誤検出はわずか2点。 を一度も使わずに、マンデルブロ集合の形が出てきた。
だが右の図を見てほしい。取りこぼした345点は、ランダムに散らばっていない。周期2の球(左の円)と、周囲の装飾バルブが、丸ごと落ちている。 出てきたのはメインカージオイドだけだ。
解像度を上げても直らない。むしろ悪化する
落ちた のジュリア集合——たとえば の「バジリカ」——は、数学的には確かに連結だ。だが私のコードは9個の破片として数えていた。解像度が足りないのだろうと思って、上げてみた。

| 解像度 | バジリカ() | ラビット() | 単位円() | |
|---|---|---|---|---|
| 120px | 9 | 9 | 1 | 1 |
| 480px | 17 | 13 | 1 | 1 |
| 1920px | 113 | 179 | 1 | 1 |
細かく描くほど、バラバラになっていく。
理由ははっきりしている。バジリカは「円が数珠つなぎになった形」で、隣り合う円は1点だけで接している。点で接するというのは面積ゼロの接触なので、正方形の画素では原理的に表現できない。解像度を上げると鎖のより細かい環まで見えるようになり、その分だけ「切れ目」が増える。
一方、メインカージオイド内の のジュリア集合は準円(quasicircle)で、内部を持つ塊がひとつあるだけだ。だから何画素で描いても1個のまま。
この方法で拾えるのは「面積を持ってつながっている」場合だけで、「点でつながっている」場合は拾えない。 マンデルブロ集合のメインカージオイドだけが出てきたのは、そこだけが前者だったからだった。
のデンドライト(ギャラリー上段右下)が象徴的で、これはマンデルブロ集合の内側にありながら、集合内の画素が0.00%しかない。内部を持たない枝だけの図形なので、面積ベースの物差しには最初から映らない。
前回の記事で「1画素より細い構造は測れない」と書いたが、今回はもっと極端で、厚みが最初からゼロの構造だった。
ついでに、ジュリア集合の次元も測った
前回と同じbox-countingのコードで、 を実軸上で動かしながらジュリア集合の境界次元を測った。 が小さいとき、理論的には
という近似式が知られている(Ruelle 1982)。

| 実測(補正後) | Ruelleの近似 | |
|---|---|---|
| 0.00 | 1.0000 | 1.0000 |
| 0.20 | 1.0145 | 1.0144 |
| -0.40 | 1.0160 | 1.0577 |
| -0.60 | 1.1048 | 1.1298 |
| -0.75 | 1.1723 | 1.2029 |
はちょうど単位円なので次元1、そこから が離れるほど境界がほつれて次元が上がる、という傾向は近似式とよく合った。ただし が大きい側では実測のほうが低い。これは近似式が の小さい領域の展開であることに加えて、前回と同じ「細い部分が画素に乗らない」バイアスが効いている方向だ。同じコードで単位円を測ると0.9928(理論値1)なので、その系統誤差ぶんは補正してある。
まとめ
- を使わず、ジュリア集合の連結成分を数えるだけで、マンデルブロ集合が一致率95.72%で再現できた(誤検出2点)
- ただし取りこぼした345点は周期2以降の球に丸ごと集中していて、出てきたのは実質メインカージオイドだけ
- それらのジュリア集合は「1点で接する円の鎖」なので、解像度を上げると成分数は9個→113個へ悪化する
- のように、マンデルブロ集合の内側にありながら集合内の画素が0.00%になる例もある
- ジュリア集合の境界次元はRuelleの近似式とよく合った( で実測1.105 対 近似1.130)
「連結かどうかを数える」という発想自体は正しかった。実際、誤検出は2点しかない。間違っていたのは、つながり方に種類があると思っていなかったことだ。
面積で触れ合っているつながりと、1点だけで触れているつながり。数学の上ではどちらも同じ「連結」で、区別する理由がない。だが画素で数える私のコードにとっては、前者は数えられて後者は数えられない。片方だけが存在するように見える。
これは物差しの解像度の問題ではなかった。解像度を上げるほど悪化したのだから、むしろ逆だ。細かく見れば見るほど、点で触れているだけのつながりは切れて見える。
人の関係でも似た取り違えをしている気がする。頻繁にやり取りしている相手との関係は目に見えて数えやすい。年に一度連絡するかどうかの相手との関係は、細かく調べれば調べるほど「実質切れている」と判定されそうになる。でもその判定を下しているのは、面積でしか数えられない私の物差しのほうかもしれない。
このブログでは、機械学習の仕組みを実際にコードで実装して確かめた実験をテーマ別に整理しています(拡散モデル・Transformer・強化学習・多様体学習・過学習など)。


