見出し画像

📏p5.jsでマンデルブロ太郎 「エスケープタイム」アルゴリズム ベイルアウト

マンデルブロ集合は、20世紀初頭にフランスの数学者ピエール・ファトゥとガストン・ジュリアによって研究された複雑系力学に起源を持つ。

このフラクタルは、1978年にロバート・W・ブルックスとピーター・マテルスキーによって、クライン派の研究の一環として初めて定義され描かれた。1980年3月1日に、ニューヨーク州ヨークタウンハイツのIBMのトーマスJワトソン研究所で、ブノワ・マンデルブロは初めてこの集合の視覚化を見た

1985年8月のサイエンティフィック・アメリカンの表紙は、マンデルブロ集合の計算アルゴリズムを幅広い読者に紹介するものであった。この表紙はブレーメン大学のPeitgen、Richter、Saupeによって作成されたマンデルブロ集合は1980年代半ばにコンピュータグラフィックのデモとして目立つようになり、パーソナルコンピュータは集合を高解像度でプロットし表示できるほど高性能になった

https://www.jstor.org/stable/24967754

マンデルブロー集合は、複素平面において、2次写像の反復で臨界点 z=0 の軌道を描く c の値の集合である。

素数cは、z0=0 から開始して反復を繰り返し適用したとき、znの絶対値がすべてのn>0に対して束縛されたままである場合にマンデルブロ集合の要素であると言える。
例えば、c = 1の場合、列は0, 1, 2, 5, 26, ...となり、無限大に近づくので、1はマンデルブロ集合の要素にはならない。一方、c=-1 の場合、数列は 0, -1, 0, -1, 0, ... で、これは有界なので、-1 はマンデルブロ集合に属すことになる。

元ソースはこれ https://infosmith.biz/blog/it/p5js-fractal-2d こちらの呟きコード化をすすめていくよ
RGBを入れることはできなかったが、つぶやきサイズとなる。

少し動きをつけるために、ループをやめてDRAWごとに変数をインクリメントすることにする。±でループしてるみたいだから、sin波に最大値かけたらうまくいくかな。

大丈夫そう。
https://amzn.to/3TXjs0v ブロ太郎の自伝 自分が生まれた時のことを覚えていると言う(ウソ)

マンデルブロ集合の表現を生成する最も単純なアルゴリズムは、「エスケープタイム」アルゴリズムとして知られています。プロット領域内の各x,y点に対して繰り返し計算が行われ、その計算の挙動に基づいてその画素の色が選択される。

https://en.wikipedia.org/wiki/Plotting_algorithms_for_the_Mandelbrot_set

ベイルアウト 名前が格好いいじゃないか

最適化されていないアルゴリズムと最適化されたエスケープタイムアルゴリズムの両方において、各ポイントのxとyの位置は、反復計算(詳細は後述)の開始値として使用されます。各反復計算の結果は、次の計算の開始値として使用される。各反復計算の間に、値が重要な「脱出」条件、つまり「ベイルアウト」に達したかどうかが確認される。その条件に達した場合、計算が停止され、ピクセルが描画され、次の x, y 点が調べられる。ある種の開始値では、わずかな繰り返し回数ですぐにエスケープが発生します。マンデルブロット集合に近いが集合に含まれない開始値では、脱出するのに数百から数千の反復を要することがある。マンデルブロー集合内の値では、エスケープは決して起こりません。プログラマやユーザは、何回反復するか、つまりどの程度「深さ」を調べるかを選択する必要があります。最大反復回数が多ければ多いほど、最終的な画像はより詳細で微妙なものになりますが、フラクタル画像の計算にかかる時間は長くなります。

https://en.wikipedia.org/wiki/Plotting_algorithms_for_the_Mandelbrot_set

脱出条件は単純なものと複雑なものがある。実数部と虚数部が2より大きい複素数は集合に含まれないので、一般的な救済措置は、どちらかの係数が2を超えたら脱出することである。より計算量の多い、より早く脱出を発見する方法は、ピタゴラスの定理を使って原点からの距離を計算すること、つまり複素数の絶対値(モジュラス)を決定することである。この値が2を超えたら、あるいは実部と虚部の二乗の和が4を超えたら、その地点は脱出したことになる。より計算量の多いレンダリング方法としては、ブッダブロット法があり、脱出した点を見つけ、その座標を反復してプロットする。
各点の色は、値がどれだけ早く脱出点に到達したかを表している。多くの場合、反復限界前に脱出できなかった値を黒で表示し、脱出した点には徐々に明るい色を使用する。これにより、エスケープ条件に達するまでに何サイクル必要であったかを視覚的に表現することができる。

https://en.wikipedia.org/wiki/Plotting_algorithms_for_the_Mandelbrot_set

集合のカラフルな画像を得るために、実行された反復回数の各値に色を割り当てるには、様々な関数(線形、指数など)のいずれかを使用することができます。実用的な方法として、計算速度を落とさずに、起動時に初期化されるパレットへのエントリとして実行反復回数を使用する方法がある。例えばカラーテーブルに500のエントリーがある場合、色の選択はn mod 500となり、nは反復回数となる。

ベイルアウトは計算と関係ないから調べる

17行目でベイルアウトする


  1. フラクタル: フラクタルは、あるパターンが無限に繰り返される構造を持つ幾何学的な形状を指します。つまり、全体と部分が同じまたは類似した構造を持っています。これは「自己相似性」とも呼ばれます。

  2. 非局所性: ある系や物体の一部が他の部分と独立していないという性質を指します。例えば、ホログラフィーにおける非局所性では、ホログラムの一部が全体の情報を持っているという特性があります。

これらの概念を結びつけると、フラクタルの自己相似性はある種の「非局所性」とも考えられます。フラクタルの一部(小さなスケール)をとっても、それが全体(大きなスケール)の構造を示唆している点で、フラクタルは非局所的な情報を持っていると言えるでしょう。

しかし、この解釈は比喩的なものであり、物理学的な非局所性とフラクタルの自己相似性を直接結びつけるものではありません。


お願い致します