Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab_fraktaly / лаб фракталы / Лаб_4 / Множество Мандельброта_4

.doc
Скачиваний:
19
Добавлен:
12.05.2015
Размер:
26.11 Кб
Скачать

Данная программа предназначена для генерации так называемого

множества Мандельбротта. Это множество, названное в честь своего

открывателя, находится на комплексной плоскости и рассчитывается по

формуле:

Z(i+1) = Z(i)^2 + C,

где C - комплексная константа, Z - комплексная переменная, причем

Z(1) = 0. Считается, что некая точка C = x + yi (i - мнимая единица:

i^2 = -1) на комплексной плоскости принадлежит множеству Мандельбротта,

если при достаточно большом числе итераций модуль числа Z не превышает

2.

Множество Мандельбротта является фрактальным и по недоказанной

теореме связным, т. е. из любой точки множества можно попасть в другую

не пересекая границы множества.

Практический интерес же представляет не само множество, а граничные

с ним области. Оказалось, что если присваивать некоей точке цвет в

соответствии с числом итераций, требующихся для достижения ей модуля 2,

то получаются весьма замысловатые и очень красивые узоры. Особенно

интересно наблюдать за какой нибудь областью множества при все

увеличивающемся разрешении.

Для отрисовки множества Мандельбротта и приграничных с ним областей

в программе используются следующие алгоритм и формулы:

пусть C = a + bi, Z = x + yi, тогда:

Z^2 = ( x + yi )^2 = x^2 + 2xyi - y^2

Модуль числа Z: |Z| = Sqrt( x^2 + y^2 )

const

MaxIter = 1000;

var

I: integer;

x, y, temp: real;

a, b: real;

...........................

I := 0;

x := 0;

y := 0;

repeat

temp := Sqr(x) - Sqr(y) + a;

y := 2 * x * y + b;

x := temp;

Inc( I )

until ( 4.0 <= Sqr(x) + Sqr(y)) or ( I >= MaxIter );

PutPixel( ??, ??, I div ( MaxIter div 256 )) { отрисовать точку }

...........................

Для начала рекомендуется использовать предел числа итераций не

более 1000. Большее число итераций приводит к большему времени

вычисления точек, принадлежащих множеству и находящихся вблизи границы.

Можно также пробовать задавать количество цветов большее чем 256,

например 32 тыс. или даже 16 млн. Но очень хорошие результаты получаются

и при 256 цветах.

Для того чтобы не использовать палитру VGA по умолчанию

программа перенастраивает ее на свои цвета.