2

マンデルブロ集合に含まれる点を計算するプログラムを作成しました。マンデルブロ集合に属さない点については、開始点がマグニチュードが 2 より大きい場所に発散するのに何回の反復が必要かを追跡します。 1 から 256 のスケールで発散します。私がやりたいことは、発散の速さに応じて各点に色を付けることです。たとえば、255 回の反復で発散するポイントは白になる可能性があり、発散が速いほど色が濃くなります。20 段階以上分岐する分岐点は赤、10 ~ 19 段階で分岐する分岐点は青、5 ~ 9 段階で分岐する分岐点は黄色で、このように簡単に調整できます。

ここに画像の説明を入力

考えられるすべての 255 の発散率に対してこれを行うことはできません。目盛りを作成して Matlab に実装するにはどうすればよいですか。助けてくれてありがとう。もっと知りたい人は聞いてください。ありがとう!

編集申し訳ありませんが、画像が機能していないようです。基本的にこれが必要です。ポイントをプロットしています。各ポイントには 1 ~ 255 の値が割り当てられ、割り当てられた値に応じて色が徐々に変化するようにします。ありがとう!

4

3 に答える 3

6

Matlab でマンデルブロ集合をプロットする簡単な方法は次のとおりです。

function mandelbrot(n, niter)

x0 = -2;   x1 = 1;
y0 = -1.5; y1 = 1.5;

[x,y] = meshgrid(linspace(x0, x1, n), linspace(y0, y1, n));

c = x + 1i * y;
z = zeros(size(c));
k = zeros(size(c));

for ii = 1:niter
    z   = z.^2 + c;
    k(abs(z) > 2 & k == 0) = niter - ii;
end

figure,
imagesc(k),
colormap hot
axis square

これは、配列で発散するまでの反復回数を追跡し、kを使用して線形カラー スケールを使用してプロットしimagescます。結果は

>> mandelbrot(800, 40)

ここに画像の説明を入力

于 2013-12-30T17:49:00.790 に答える
1

画像はリンクに含まれておらず、Matlab についてはわかりませんが、各ポイントの色をその発散の関数にすることはできませんか? 多くのツールでは、たとえば 0 ~ 255 の RGB 値を指定できます。3 つの RGB 値すべて (または使用しているカラー スケール) の発散を入力して、グレーの色合いを取得することはできませんか? つまり、RGB(20,20,20)

于 2013-12-30T17:47:10.743 に答える
0

コードを少し改善しました。これは、(x,y) の特定の開始点と開始位置を指定して実行されるようになりました。もう少しズームインしたい人向け。

function mandelbrot(n, n2, x0, y0, g)

x1 = x0 - g;   x2 = x0 + g;
y1 = y0 - g; y2 = y0 + g;

[x,y] = meshgrid(linspace(x1, x2, n), linspace(y1, y2, n));

c = x + 1i * y;
z = zeros(size(c));
k = zeros(size(c));

for ii = 1:n2
    z   = z.^2 + c;
    k(abs(z) > 2 & k == 0) = n2 - ii;
end

figure,
imagesc(k),
colormap hot
axis square
end
于 2019-12-08T04:47:51.600 に答える