4

私は、マンデルブロー集合のフラクタル視覚化を行う仕事を与えられました。

私は (当然のことながら) 完全な解決策を探しているわけではなく、複素数の軌道に関して助けを求めています。

Complex複素平面上の点から得られた特定の数値があるとします。次に、軌道シーケンスを反復処理し、軌道が桁違いに増加するかどうかに従って点をプロットする必要があります。

複素数の軌道を集めるにはどうすればよいですか? どんなガイダンスも大歓迎です(リンクなど)。軌道シーケンスをテストするために必要な数学関数へのポインター。Math.pow()

私はJavaを使用していますが、ここでは特に関係ありません。

ありがとう、アレックス

4

4 に答える 4

7

マンデルブロ集合を表示するときは、実平面と虚平面をそれぞれ x 座標と y 座標に変換するだけです。

したがって、たとえば、複素数は に4.5 + 0.27i変換されx = 4.5, y = 0.27ます。

マンデルブロ集合は、式Z = Z² + Cが |Z| の値に到達しないすべての点です。>= 2 ですが、実際には、特定の反復回数 (1000 回など) 内で値が 2 を超えないすべてのポイントを含めます。セットで通常見られるカラフルなレンダリングを取得するには、外側のポイントに異なる色を割り当てます。制限に達する速さに応じてセット。

複素数なので、方程式は実際にはZr + Zi = (Zr + Zi)² + Cr + Ciです。これを実平面と虚平面の 2 つの方程式に分割すると、単純な代数になります。C はテストする点の座標で、Z の初期値はゼロです。

これは、私のマルチスレッド マンデルブロ ジェネレーターからの画像です:)

マンデルブロー集合

于 2010-11-01T02:01:18.953 に答える
3

実際、マンデルブロ集合は、反復が収束する複素数の集合です。

したがって、マンデルブロー集合の唯一の点は、真ん中にある大きなつまらない色です。そして、あなたが目にするすべてのきれいな色は、境界の近くのポイント (ただし反対側) が無限にスピンオフする速度を表しているに過ぎません。

数学的に言えば、

M = {c in C : lim (k -> inf) z_k = 0 } where z_0 = c, z_(k+1) = z_k^2 + c

つまり、任意の複素数を選択します c. セット内にあるかどうかを判断するには、z_0 = c、z_(k+1) = z_k^2 + c を繰り返し繰り返します。z_k はゼロまたは無限大に近づきます。その極限 (k は無限大になる傾向があるため) が 0 の場合、それは in です。そうでない場合はそうではありません。

一度 |z_k| を証明することができます。> 2、収束しません。これは最適化の良い練習です: IIRC |Z_k|^2 > 2 で十分です... いずれにせよ、二乗すると高価な sqrt() 関数を節約できます。

于 2010-11-01T09:11:57.230 に答える
1

Wolfram Mathworld には、マンデルブロ集合について 説明しているすばらしいサイトがあります。

Complex クラスが最も役に立ちます。

このような例は、いくつかの思考を刺激するかもしれません。アプレットの使用はお勧めしません。

サイン、コサイン、指数関数などの関数に加えて、複素数を使用した加算、減算、乗算、除算、累乗の操作を行う方法を知っている必要があります。それらを知らない場合は、そこから始めます。

私が教わった本は、Ruel V. Churchill の『Complex Variables』でした。

于 2010-11-01T01:21:29.123 に答える
0
/d{def}def/u{dup}d[0 -185 u 0 300 u]concat/q 5e-3 d/m{mul}d/z{A u m B u
m}d/r{rlineto}d/X -2 q 1{d/Y -2 q 2{d/A 0 d/B 0 d 64 -1 1{/f exch d/B
A/A z sub X add d B 2 m m Y add d z add 4 gt{exit}if/f 64 d}for f 64 div
setgray X Y moveto 0 q neg u 0 0 q u 0 r r r r fill/Y}for/X}for showpage
于 2011-06-18T21:34:20.307 に答える