ТОП 10:

Історія множини Мандельброта



Вперше множину Мандельброта було описано в 1905 році П'єром Фату (Pierre Fatou), французьким математиком, які працювали в галузі аналітичної дінамікікомплексних чисел. Фату вивчав рекурсивні процеси виду

z → z2 + c

Почавши з точки z0 на комплексній площині, можна отримати нові точки, послідовно застосовуючи до них цю формулу. Така послідовність точок називається орбітою z0 при перетворенні z → z2 + c

Фату знайшов, що орбіта z0 = 0 при цьому перетворенні показує досить складну і цікаву поведінку. Існує нескінченна безліч таких перетворень - своя для кожного значення c. В ті часи комп'ютерів ще не було, і Фату, звичайно, не міг побудувати орбіти всіх точок площини, йому доводилося все робити вручну. Грунтуючись на своїх розрахунках, він довів, що орбіта точки, лежачої на відстані більше 2 від початку координат, завжди йде в нескінченність.

Фату ніколи не бачив зображень, які ми зараз знаємо як зображення множини Мандельброта, тому що необхідну кількість обчислень неможливо провести вручну. Професор Бенуа Мандельброт був першим, хто використав для цього комп'ютер.

Фрактали були описані Мандельбротом в 1975 році в його книзі «Les Objets Fractals: Forme, Hasard et Dimension» («Фрактальні об'єкти: форма, випадковість і розмірність»). У цій книзі Мандельброт вперше використав термін «фрактал» для позначення математичного феномена, який демонструє настільки непередбачувану і дивовижну поведінку. Ці феномени народжувалися при використанні рекурсивного алгоритму для отримання будь-якої кривої або множини. Множина Мандельброта - один з таких феноменів, названий по імені свого дослідника.

Побудова множини

Нескладно довести, що як тільки модуль zn виявиться більше 2 (або, в термінах дійсної та уявної частин, xn2 + yn2> 4), послідовність стане прагнути до нескінченності. У разі | c | ≤2 це можна довести за допомогою методу математичної індукції. При | c |> 2 точка c свідомо не належить безлічі Мандельброта, що також можна вивести методом індукції, використовуючи рівність z0 = 0. (Хоча в цьому випадку може існувати інше z0, для якого відповідна послідовність обмежена по модулю, але для деякого n виконується нерівність | zn |> 2.)

Порівняння | zn | з цим числом (в англомовній літературі його називають «bail-out») дозволяє виділяти точки, які не потрапляють всередину множини. Для точок, що лежать всередині множини, послідовність не матиме тенденції до нескінченності і ніколи не досягне цього числа, тому після певного числа ітерацій розрахунок необхідно примусово завершити. Максимальне число ітерацій, після яких число потрапляє всередину безлічі, задається в програмі.

Зображення, отримане таким способом, є лише наближенням до реального безлічі Мандельброта. Якісніші результати можна отримувати, збільшуючи максимальну кількість ітерацій, однак при цьому пропорційно виростає і час розрахунків.

 

 

Додавання кольору

Строго математично, зображення множин Мандельброта і Жюлиа повинні бути чорно-білими. Точка або потрапляє всередину безлічі, або ні. Незважаючи на це, за допомогою комп'ютера ми можемо побудувати і кольорові зображення. Найпоширенішим способом є розфарбовування точок зовні безлічі в колір, відповідний кількості ітерацій, за яке точка йде в «безкінечність» або, з точки зору програми, на певну відстань від нуля.

Порядок визначення, чи потрапляє точка z0 всередину безлічі (традиційно зафарбовували чорним кольором) чи ні (замальовується кольором, залежним від швидкості руху до нескінченності) наступний: на кожній ітерації для zn = xn + yn • i вичисляется значення модуля | zn | = x2n + y2n ------ √, яке потім порівнюється з «кордоном нескінченності» (зазвичай береться значення, рівне 2). Тут важливо звернути увагу, що вже на даному етапі можна ввести певну оптимізацію обчислень, якщо перевіряти не x2n + y2n ------ √> 2, а x2n + y2n> 4, що значно знизить час розрахунків.

Таким чином, якщо | zn | 2 ≤ 4 при будь-якому числі ітерацій (на практиці - при всіх обчислених ітераціях), то колір точки чорний, в іншому випадку він залежить від останнього значення n, при якому | zn | 2 ≤ 4. Значення n , фактично, позначає швидкість руху zn в нескінченність, і може бути просто індексом у таблиці кольорів, або використовуватися як параметр в більш складному алгоритмі.

Даний алгоритм визначає, що якщо точка віддаляється більше ніж на 2 від початку координат, то вона лежить зовні множини Мандельброта. Для того, щоб визначити, що точка лежить всередині безлічі є багато способів. Найпростіше рішення - обмежити кількість ітерацій якимсь максимумом. Якщо точка не вийшла за зазначену кордон, можна вважати, що вона знаходиться всередині безлічі.

Точкам біля кордону безлічі потрібно більше ітерацій для догляду в нескінченність. Тому такі області промальовувалися помітно довше. Чим далі від кордонів безлічі, тим вище швидкість догляду в нескінченність. Для таких точок потрібно менше ітерацій.

Оптимізація

Одним із способів зменшення обсягу обчислень при обчисленні загальної картини безлічі може служити перевірка, чи потрапляє точка в область главнойкардіоіди. Формула кардіоїди в полярних координатах виглядає наступним чином:

ρc = 12-12cosθ

Таким чином, для точки (x, y) необхідно обчислити

ρ = (x-14) 2 + y2 ------------ √,

θ = atn2 (y, x-14),

ρc = 12-12cosθ.

Якщо ρ≤ρc то точка (x, y) потрапляє всередину безлічі і закрашивается чорним кольором, а ітеративні обчислення можна пропустити.

На практиці найбільше зменшення обсягу обчислень дає трасування кордону: якщо є деяка замкнута крива, не яка перетинає вісь абсцис, кожна точка якої йде за межу bail-out за однакове число ітерацій або навпаки належить безлічі Мандельброта, то будь-яка точка всередині цієї кривої буде володіти тим же властивістю, і отже вся область всередині кордону закрашивается однаковим цветом.Варіаціі множини Мандельброта [ред | правити вікі-текст]

Найчастіше під назвою «Безліч Мандельброта» розуміється тільки безліч, описане вище. Однак будь-яка функція комплексної змінної має відповідне безліч Мандельброта, яке також характеризується наявністю або відсутністю зв'язного безлічі Жюлиа. Наприклад, можна покласти fc (z) = z3 + c. Тоді для кожного значення c перевіряється зв'язність безлічі Жюлиа функції fc, і при наявності зв'язності вважається, що c належить безлічі Мандельброта. В описаному випадку зв'язність можна перевірити тим же способом, що і для fc (z) = z2 + c.

Ці твердження можна узагальнити і на безлічі Жюлиа, що визначаються більше, ніж двома числами. Наприклад, безліч Жюлиа, яке визначається трьома дійсними числами, має відповідне тривимірне безліч Мандельброта.

Розглядаються і багатовимірні варіації множини Мандельброта. Так, тривимірний аналог отримав назву лампочка Мандельброта.

Застосування безлічі Мандельброта в мистецтві

Пошук красивих зображень множини Мандельброта - цікаве хобі для дуже багатьох людей. Вони збирають колекції таких зображень, причому кожне з них може бути описано невеликою кількістю параметрів, наприклад, просто координатами центру. Є велика кількість програм для малювання фракталів, але, незважаючи на це, багато людей пишуть свої програми для більшої гнучкості при експериментах.


 

РОЗДІЛ IV. ПРАКТИЧНА ЧАСТИНА

Php файли

1.Mandelbrot.php

Принцип роботи

Дана програма виконана у викляді одного php-файлу. Вона реалізує функцію побудови множини Мандельброта. В програмі задається ширина та висота малюнку, а потім перебирається кожен піксель малюнку за певним алгоритмом та замальовує його в перний колір. Алгоритм працює таким чином: представимо малюнок у вигляді матриці з пікселів. Програма циклом проходить по кожному рядку першого стовбця, замальовує їх у певний колір і переходить на наступний стовбець. Як програма вирішує в який колір замалювати піксель? Саме тут і застосовується алгоритм побудови фракталу Мандельброта. Для кожного пікселя визначається параметри X та Y які є його координатами на малюнку. Якщо за певну кількість ітерацій (які задає програміст) виду X=X^2-Y^2+C(x) та Y=2XY+C(y) нерівність X^2+Y^2<N(1), де N-певне число яке задається програмістом, справждується то піксель належить множині Мандельброта і замальовується у відповідний колір. Інші кольори визначаються кількістю ітерацій необхідних для того щоб нерівність (1) несправджувалось. Наприклад для цього знадобилося 3 ітерації тоді піксель замальовується в блакитний колір і чим більше ітерацій необхідно тим темнішим буде колір.


 

ВИСНОВКИ

Фрактал є однією з багатьох складових частин певної субстанції, тому зникнення однієї з таких складових призводить до втрати візуальної гармонії, що людське око розпізнає одразу. Присутність фрактала з першого погляду можна і не помітити, якщо не заглиблюватись у досконале вивчення математики. Абсолютно точна, алгебраїчна величина, яка творить собою неймовірні фігури, візерунки та складає цікаві орнаменти, що ми зустрічаємо кожного дня.

Поняття фрактала змінило багато традиційних уявлень про геометрію, а в історії розвитку математики введення цього поняття стало переломним моментом. З кожним роком поняття фрактала стає відоме все більш широкому колу людей. І зараз цей термін важко залишити без належної уваги. У природі є багато чого, що має прямий зв'язок до цього терміну.

На даній курсовій роботі, я написав програму побудови фракталу Мандельброта. Займаючись цією темою, я більш широко дізнався про об'єкт дослідження: його властивості, способи створення та використання.Також я дізнався більше про види фракталів, методи їх створення, типи самоподібності у фракталах, класифікація алгоритмів створення та три поширені методи генерування фракталів. З алгебраїчних фракталів множина Мандельброта найбільш досліджена в наш час.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1)Бенуа Мандельброт, Річард Л. Хадсон (Не)слухняні ринки: фрактальна революція в фінансах = The Misbehavior of Markets. — М.: «Вільямс», 2005. — С. 400. — ISBN 5-8459-0922-8

2) Мандельброт Б. Фракталы и хаос. Множина Мандельброта та інші чудеса // Бенуа Мандельброт. — Іжевськ,: НИЦ «Регулярна і хаотична динаміка», 2009. — 392 с.

3) Кроновер Р. М. Фрактали і хаос в динамичних системах. Основи теорії.

 


 

Додаток №1

<?php

set_time_limit(120);

function re_microtime() {

list($usec, $sec) = explode(" ", microtime());

return ((float)$usec + (float)$sec); }

$time_start = re_microtime();

$img_w = 900;

$img_h = 600;

$x_min = -2;

$x_max = 1;

$y_min = -1;

$y_max = 1;

if($x_min >= 0 && $x_max >= 0){

$step = ($x_min + $x_max)/$img_w;

} elseif($x_min < 0 && $x_max >= 0) {

$step = ($x_max - $x_min)/$img_w;

} else {

$step = (-$x_min + $x_max)/$img_w; }

$img = imagecreatetruecolor($img_w,$img_h);

$c = array();

$yy = 0;

for($y = $y_min; $y < $y_max; $y = $y + $step){

$xx = 0;

for($x = $x_min; $x < $x_max; $x = $x + $step){

$c['x'] = $x;

$c['y'] = $y;

$X = $x;

$Y = $y;

$ix=0; $iy=0; $n=0;

while(($ix*$ix + $iy*$iy < 5) and ($n < 100)){

$ix = $X*$X - $Y*$Y + $c['x'];

$iy = 2*$X*$Y + $c['y'];

$X = $ix;

$Y = $iy;

$n++;

}

$col = imagecolorallocate($img, 70, 70, 0-$n*5);

imagesetpixel($img, $xx, $yy, $col);

$xx++; }

$yy++; }

$time_end = re_microtime();

header("Content-type: image/png");

/* выводим в заголовках время создания */

header ("X-Exec-Time: ".($time_end - $time_start));

imagepng($img);

imagedestroy($img);







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.206.194.161 (0.01 с.)