zbiór Mandelbrota | płonący statek | zbiory Julii | zasady kolorowania | pojęcia matematyczne | uruchamianie programów

Fraktale

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.

Zbiór Mandelbrota

Benoit Mandelbrot miał (5 i 6 maja 2005 roku) wykłady na Wydziale Matematyki i Informatyki w Poznaniu.

Tematy wykładów:

Zbiór Mandelbrota

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.
Oznaczmy symbolem $\phi(a)$ najmniejszą liczbę naturalną $n$ taką, że $|z_n| \gt 2$.

Funkcja φ
Wybrane wartości funkcji $\phi(a)$

Plik FunctionPhi.zip zawiera program obliczający wartości funkcji $\phi$. Plik Mandelbrot.zip zawiera program rysujący zbiór Mandelbrota.
Zbiór Mandelbrota
Zbiór Mandelbrota – domyślne ustawienia programu rysujacego

Płonący statek

Artykuł w Wikipedii
Płonący statek

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$.


Plik BurningShip.zip zawiera program rysujący zbiór Burning Ship.
BurningShip
Płonący statek – domyślne ustawienia programu rysujacego

Zbiory Julii

Kim był Gaston Julia.
Zbiór Julii
$c = -0,1 + 0,65\dot i$

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 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$.

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),
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})$.

Plik Julia.zip zawiera program rysujący zbiory Julii.
Zbiór Julii
$c=-0,5+0,5\cdot \imath$ – domyślne ustawienia programu rysującego

Zasady kolorowania

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.
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:

Przydatne pojęcia matematyczne

Uruchamianie programów

Programy napisane są w Javie, do ich uruchomienia niezbędne jest zainstalowanie JRE (wersja ≥ 8), JRE można pobrać stąd.
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:

Sumy kontrolne MD5