zbiór Mandelbrota | płonący statek | zbiory Julii | zasady kolorowania | pojęcia matematyczne | uruchamianie programów
Znaczenie terminu fraktal nie jest ściśle określone. Na tej stronie słowo fraktal
oznaczać będzie zbiór
(zazwyczaj podzbiór $\mathbb{R}^2$) o matematycznie prostej definicji oraz skomplikowanej i fascynującej budowie. Według powyższej definicji fraktal jest zbiorem, zatem rysunek fraktala winien być dwukolorowy (czarno-biały):
albo punkt należy do zbioru, albo nie. Atrakcyjność rysunku można zwiększyć przez pokolorowanie – punkty należące do zbioru rysowane są zazwyczaj kolorem czarnym, kolor punktów nie należących do zbioru jest wyznaczany
przez pewną regułę matematyczną.
Wszystkie rysunki na tej stronie wykonywane są w naturalnej dla matematyków orientacji – współrzędna $y$ rośnie do góry. W większości języków programowania współrzędna $y$ rośnie w dół, w konsekwencji wiele rysunków fraktali, które można znaleźć w internecie jest odbiciem symetrycznym rysunków na tej stronie.
Benoit Mandelbrot miał (5 i 6 maja 2005 roku) wykłady na Wydziale Matematyki i Informatyki w Poznaniu.
Tematy wykładów:
Dla każdej liczby zespolonej $c$ definiujemy funcję $f_c:\mathbb{C} \rightarrow \mathbb{C}$ wzorem: $f_c(z) = z^2 + c$. Liczba $c$ należy do zbioru Mandelbrota wtedy i tylko wtedy gdy orbita liczby $0$ dla funkcji $f_c$ jest ograniczona. Równoważna definicja: liczba zespolona $c$ należy do zbioru Mandelbrota wtedy i tylko wtedy gdy zbiór Julli $J_c$ jest spójny. Równoważność tych definicji jest dość trudna do odowodnienia. Analogicznie – ograniczając się do liczb rzeczywistych $c$ – można zdefiniować rzeczywisty zbiór Mandelbrota (podzbiór $\mathbb{R}$). Rzeczywisty zbiór Mandelbrota jest przekrojem zespolonego zbioru Mandelbrota i osi rzeczywistej. W rzeczywistym zbiorze Mandelbrota nie ma nic ciekawego, jest on przedziałem $[-2;\, 0,25]$ (punkt 4). Można łatwo wykazać (punkt 2), że jeśli $|c| \gt 2$, to ciąg $(z_n)$ jest nieograniczony. Wynika stąd, że zbiór Mandelbrota jest podzbiorem koła o środku $0$ i promieniu $2$. Łatwo z tego wywnioskować (punkt 3), że jeśli dla pewnego $n$ zachodzi nierówność: $|z_n| \gt 2$, to liczba $c$ nie należy do zbioru Mandelbrota. |
Powyższa własność sugeruje następujący algorytm rozstrzygania, które liczby zespolone $c$ należy do do zbioru Mandelbrota:
Jeżeli $c = 0,25 + a$ ($a \gt 0$), to (punkt 4) ciąg $(z_n)_{n \ge 0}$ jest rosnący i nieograniczony.
Efektowny rysunek „płonącego statku” można obejrzeć w Wikipedii.
Niech funkcja $g:\mathbb{C} \rightarrow \mathbb{C}$ będzie określona wzorem: $g(z) = g(x+y\cdot\imath) = |x| + |y|\cdot\imath$. Dla każdej liczby zespolonej $c$ definiujemy funkcję $h_c:\mathbb{C} \rightarrow \mathbb{C}$
wzorem: $h_c(z) = g(z)^2 + c$. Liczba $c$ należy do zbioru o nazwie Burning Ship wtedy i tylko wtedy gdy orbita liczby $0$ dla funkcji $h_c$ jest ograniczona.
Analogicznie – ograniczając się do liczb rzeczywistych $c$ – można zdefiniować rzeczywisty „płonący statek”. Ponieważ dla liczb rzeczywistych $z,\, c$ zachodzi równość
$h_c(z) = f_c$, to rzeczywisty „płonący statek” jest identyczny z rzeczywistym zbiorem Mandelbrota.
Analogicznie jak dla zbioru Mandelbrota można wykazać, że płonący statek jest podzbiorem koła o środku $0$ i promieniu $2$.
Niech $c$ oznacza liczbę zespoloną. Definiujemy funkcję $f_c:\mathbb{C} \rightarrow \mathbb{C}$ wzorem: $f_c=z^2 + c$. Mówimy, że liczba zespolona $z$ jest więźniem odwzorowania $f_c$ gdy jej
orbita dla funkcji $f_c$ jest ograniczona. Zbiór więźniów oznaczmy symbolem $W_c$. Zbiorem Julii $J_c$ odwzorowania $f_c$ nazywamy brzeg zbioru $W_c$. Znaczenie zwrotu Można wykazać (punkt 5), że zbiór więźniów $W_c$ (a w konsekwencji zbiór Julii $J_c$) jest podzbiorem koła o środku $0$ i promieniu $\max(2,|c|)$.
Można też wykazać, że zachodzi alternatywa: zbiór Julii $J_c$ jest albo spójny albo całkowicie niespójny.
Tradycyjnie mówi się o rysowaniu zbiorów Julii, chociaż naprawdę rysowane są zbiory więźniów $W_c$.
Ograniczając się do liczb rzeczywistych $c$ można zdefiniować rzeczywiste zbiory Julii (podzbiory $\mathbb{R}$). Rzeczywiste zbiory Julii są przekrojami zespolonych zbiorów Julii i osi rzeczywistej. W wyglądzie rzeczywistych
zbiorów Julii nie ma niczego fascynującego: jeśli $c \gt \frac{1}{4}$, to zbiór $W_c$ jest pusty (punkt 6),
Wszystkie programy pozwalają wykonać rysunek kolorowy i czarno-biały. W obu wersjach rysunku punkty należące do fraktala (więźniowie) są czarne. W wersji czarno-białej, punkty nie należące do fraktala (uciekinierzy) są białe.
Programy napisane są w Javie, do ich uruchomienia niezbędne jest zainstalowanie JRE (wersja ≥ 8), JRE można pobrać stąd.
Oznaczmy symbolem $\phi(a)$ najmniejszą liczbę naturalną $n$ taką, że $|z_n| \gt 2$.
Plik FunctionPhi.zip zawiera program obliczający wartości funkcji $\phi$.
Plik Mandelbrot.zip zawiera program rysujący zbiór Mandelbrota.
Jeżeli liczba $a$ jest bardzo mała, to (zdaniem komputera) $0,25 + a = 0,25$, np. $0,25 + 0,000\, 000\, 000\, 000\, 000\, 01 = 0,25$. W takiej sytuacji komputer od razu podejmuje decyzję, że orbita liczby $0,25 + a = 0,25$
jest ograniczona.
Nie: załóżmy że obszar przeznaczony na rysunek ma szerokość 401 pikseli. Badamy tylko takie liczby zespolone $c$, że $-2 \le \Re(c) \le 2$. Zatem
dla każdej badanej liczby $c,\,\, \Re(c) = -2 + k\cdot 0,01,\,\, 0 \le k \le 400$ ⇒ najmniejsza badana wartość $a$ wynosi $0,01$.
Płonący statek
Artykuł w Wikipedii
Plik BurningShip.zip zawiera program rysujący zbiór Burning Ship.
Zbiory Julii
Kim był Gaston Julia.
Plik Julia.zip zawiera program rysujący zbiory Julii.
$c = -0,1 + 0,65\dot i$
brzeg zbioru
jest oczywiste dla regularnych figur (kwadrat, elipsa, trapez, …), dla dowolnych zbiorów potrzebna jest formalna definicja: punkt $P$ należy do brzegu zbioru $A$ wtedy i tylko wtedy gdy każde koło o środku w punkcie $P$
zawiera jakiś punkt ze zbioru $A$ i jakiś punkt nie należący do zbioru $A$.
Każdy zbiór Julii ma środek symetrii w punkcie $0$.
jeśli $c \le \frac{1}{4}$, to zbiór więżniów $W_c$ jest przedziałem $[-d;\, d]$
(punkt 7) gdzie $d = 0,5\cdot (1+\sqrt{1-4c})$.
Zasady kolorowania
Niech $n$ oznacza liczbę iteracji, tzn. liczbę obliczanych wyrazów ciągu, a $k \le n$ niech oznacza numer wyrazu w ciągu po obliczeniu którego, podejmujemy decyzję, że punkt płaszczyzny jest uciekinierem – nie należy do fraktala.
W wersji kolorowej, do wyboru koloru stosowany jest jeden z dwóch algorytmów:
($k\%m$ oznacza resztę z dzielenia $k$ przez $m$, liczba iteracji $n$ nie ma wpływu na kolor)
Domyślna lista kolorów wygląda tak:
Użytkownik może edytować kolory, może również zmienić długość listy kolorów – skreślić kolory lub dopisać nowe.
przy ustaleniu koloru korzystamy z modelu RGB, składowa czerwona koloru uciekiniera to: $w\cdot \text{kol}_0\cdot \text{red} + (1-w)\cdot \text{kol}_1\cdot \text{red}$ ($\text{red}$ oznacza składową czerwoną koloru),
analogiczne wzory są stosowane do składowych $\text{blue}$ i $\text{green}$. Kolory domyślne dla zbioru Burning Ship:
Kolory domyślne dla zbioru Mandelbrota i zbiorów Julii:
Przydatne pojęcia matematyczne
Uruchamianie programów
Linki na stronie prowadzą do plików zip
. Ściągnięty plik zip
należy rozpakować (w dowolnym katalogu), zawiera on plik jar
oraz katalog resources
z ikonami i opisem programu (format HTML).
W systemie Windows program można uruchomić podwójnym kliknięciem w plik jar
.
Lista programów: