Mandelbrot

アルゴリズム

計算機では,ある領域の点 (x,y) について,

z <- x + i y; count <- M;
while ( |z| <= 4) and ( count>0) do begin
z <- z^2 - (x + i y); count <- count -1
end;

とする. 点 (x,y) に count で決まる色 (count=0 なら黒) を付ける 黒い部分が Mandelbrot 集合で,それ以外の色は,その点と Mandelbrot 集合との "近さ"を表す光背である.

解法のヒントと発展課題

ステップ1

Mandelbrot(x,y) というメソッドを作れ.Rubyでは

require 'complex'

で複素数が扱えるようになる.|z|はz.absを使う.count の初期値を 20 とした場 合,[x,y] が [0,0], [-0.5,0], [0,1.5] での関数の戻り値は,それぞれ 0, 15, 18 とな ることを確認せよ.

ステップ2

Mandelbrot(x,0)としてx=-1..2.5で10程度に分割したxで計算し,gnuplotで描画せよ.

ステップ3

x=-1..2.5, y=-2..2で分割数を10程度で計算し下記のgnuplotコマンドでプロットせよ.その解説は3次元図をカラーで描きたいにある.さらに分割数をあげてみよ.ただし,私のマシンでは100点以上取るとgnuplotで処理できなかった.

gnuplot> set pm3d map
gnuplot> set size ratio -1
gnuplot> splot "f1.dat"
Figure0.gif

gnuplotのコマンドを少し

set pm3d map
関数を色を付けて2次元的に表示.
set size
縦横のサイズを指定.ここではその比(ratio)を固定している.
splot "hogehoge"
hogehogeという名前のついたファイルにあるデータをプロット.
Last modified:2007/07/22 12:21:26
Keyword(s):
References:[LinuxEx] [gnuplot]