GNUPLOT

-не так Часто Задаваемые Вопросы -

обновлено 2004/11/29

Множество Мандельброта

Имеем комплексное значение A, вычислим следующее рекуррентное отношение. Если |z(n)|^2 не расходятся, когда n становиться очень большим числом, комплексное значение A принадлежит множеству Мандельброта.

    z(0)   = 0.0
    z(n+1) = z(n)*z(n) + A

Будем считать, что плоскость XY - комплексная плоскость и точка A определена на ней. Расчитаем рекуррентное отношение, показанное выше, и если значение |z|^2 начинаетрасходиться на определенное количество интеграций n, дадим числу n значение точки Z(X,Y). Можно построить 3D изображение множества Мандельброта с теми данными (X,Y,Z). Сначала определим рекуррентное отношение, как рекурсивную функцию. Эта функция возвращает число интеграций n, когда |z|^2 становиться больше некоторого вещественного числа (в данном случае 2). Верхний предел интеграций равен 1000, необходимый для избежания бесконечного цикла.

В Gnuplot комплексное значение z, чья действительная часть a и мнимая b написано как z={a,b}. Функция real(z) и imag(z) возвращают действительную и мнимую части соответственно. Абсолютное значение z - abs(z). С другой стороны, нетпростого способа получить комплексное значение из действительного, определим новую функцию: complex(x,y)=x*{1,0}+y*{0,1}.

complex(x,y) = x*{1,0}+y*{0,1}
mandel(x,y,z,n) = (abs(z)>2.0 || n>=1000) ? \
                  n : mandel(x,y,z*z+complex(x,y),n+1)

Координаты x,y являются значением A на комплексной плоскости. Функция Мандель расчитывается z^2+A, и когда ее абсолютное значение превышает 2.0, функция возвращает число интеграций, n. При вызове этой функции необходимо дать начальные значения z и n равные {0,0} и 0 в дополнение к значениям x и y.

gnuplot> set xrange [-1.5:0.5]
gnuplot> set yrange [-1:1]
gnuplot> set logscale z
gnuplot> set isosample 50
gnuplot> set hidden3d
gnuplot> set contour
gnuplot> splot mandel(x,y,{0,0},0) notitle
mandel1
mandelbrot0

В компьютерной графике часто можно увидеть хорошие графики множества Мандельброта. Чтобы сделать такое изображение, Выделяют каждый пиксель изображения на определеные точки комплексной плоскости, и вычисляют пиксельное рекуррентное отношение. При расхождении вычислений, пиксель принимает цветную точку, цвет изменяется с числом интеграций. Здесь построили 2D изображение Мандельброта Mandelbrot с простым X Window программы . Плато на графике соответсвует черный участок в правом изображении.


mandel1

Как можно увидеть на изображении слева, структура увеличенного множества Мандельброта очень сложна. Эти фрактальные изображения были показаны с помощью очень тонких линий контура, однако, Gnuplot делает их не так хорошо как игры с компьтерной графикой. Новая версия Gnuplot, version 3.8, может построить лучше цвета для 3D графика.


up

Вот некоторые CGs сделанные в системе X Window игрушкой программы.

mandelbrot1 mandelbrot2

mandelbrot3 mandelbrot4
up