Jedna wzór, powtarzana nieskończenie often
Oba zestawy Julia i Mandelbrot pochodzą z tego samego absurdymaximy krótkiego przepisu: wybierz liczbę zespoloną z, wielokrotnie podstaw ją za z² + c, a następnie obserwuj, co się stanie. Dla zestawu Julia dla ustalonej parametru c skanuj płaszczyznę punktów początkowych z₀ i pytaj o każdy z nich, czy jego orbita pozostaje ograniczona w nieskończoność lub w końcu ucieka do nieskończoności. Dla zestawu Mandelbrot ustawić punkt początkowy na z₀ = 0 i skanować płaszczyznę parametrów c, zadając tę samą pytanie o ucieczkę dla każdego z nich.
z₀ = (starting point, Julia) or 0 (Mandelbrot)
z_{n+1} = z_n² + c
if |z_n| > 2 for some n, the orbit escapes — it will diverge to infinity
Algorytm czasu ucieczki
W praktyce żaden komputer nie iteruje nieskończenie długo. Symulacja ogranicza liczbę iteracji do pewnej maksymalnej (kilka setek iteracji), a dla każdego piksela iteruje wzór aż do momentu, gdy moduł z przekroczy wartość 2 — poza tą promieniem orbita jest dowcipnie odbierana jako skierowana ku rozbieżności. W przypadku osiągnięcia maksymalnej liczby iteracji punkt uznawany jest za należący do zbioru ograniczonego. Kolorowanie każdego piksela uciekającego według ilości iteracji, w których zaszedł, a nie jednolitego czarno-białego koloru, sprawia, że granica staje się gładka i bogato odcieniowa, jaką pozna każdy.
for each pixel (x, y):
z = complex(x, y) // Julia: fixed c, varying z0
for n in 0..maxIter:
if |z| > 2: colour(pixel, n); break
z = z*z + c
else: colour(pixel, "in set")
Dlaczego te dwa zestawy są powiązane
Połączenie nie jest przypadkowe: dla danej c, zbiór Julia jest połączony (jedna cała kropka) dokładnie wtedy, gdy orbita 0 pod działaniem funkcji z² + c pozostaje ograniczona — inaczej mówiąc, dokładnie wtedy, gdy sama wartość c należy do zbioru Mandelbrota. Wybierz c z głębokiej części zbioru Mandelbrota i jego zbiór Julia jest jednym połączonym kształtem; wybierz c z zewnątrz, a zbiór Julia rozpadnie się na nieskończoną, niepołączoną szpic brokatową punktów, technicznie nazywaną zborem Cantora. To dlatego klikanie wokół zbioru Mandelbrota, aby wybrać c, jak pozwala symulacja, jest rzeczywiście wybieraniem, który z dwóch jakościowo różnych rodzin zbiorów Julia zobaczysz.
Samoszybocznosc bez powtarzania
Przylatywanie do każdego z zestawów nigdy nie osiąga powtarzającego się wzoru, jak to by było w przypadku regularnej wzorowanki. Ponieważ iteracja jest tym samym nieliniowym mapowaniem stosowanym na każdym poziomie skali, struktury blisko granicy odzwierciedlają całe shape w małych skalach, lekko inaczej kazdy raz — to charakterystyczne oznakowanie granic fraktalnych i powod, dlatego oba zestawy wydają się nieskończenie szczegółowe niezależnie od tego, jak daleko zaznaczysz.
Często zadawane pytania
Jak jest rzeczywista relacja między zbiorem Julia a zbiorem Mandelbrot'a?
Zbiór Mandelbrot'a to mapa parametrów c: dla każdego c pytasz, czy zbiór Julia wygenerowany z tego c stanowi jedno połączone całości lub rozproszone puch. C wybrany z wnętrza zbioru Mandelbrot'a zawsze daje zbiór Julia połączony; jeśli c jest wybrane z zewnątrz, zawsze daje zbiór Julia rozłączny, podobny do puchu.
Dlaczego niektóre zbiory Julia są solidnymi kulami, a inne rozproszonej puchem?
To zależy tylko od tego, czy orbita 0 pod działaniem funkcji z² + c pozostaje ograniczona (c wewnątrz zbioru Mandelbrot'a, połączony zbiór Julia) lub ucieka do nieskończoności (c poza zbiorem, rozłączny puch). Nie ma niczego pośrodkowego — każdy zbiór Julia jest jedno lub drugie.
Dlaczego test ucieczki używa okręgu o promieniu 2?
Można udowodnić, że raz |z| przekroczy 2 pod działaniem tej konkretnej funkcji, to wartość jest gwarantowanym zwiększeniem się bez ograniczeń na każdym kolejnym kroku, więc orbita nigdy nie wróci — 2 jest najmniejszym promieniem dla którego ten garantium zachodzi, co sprawia, że jest to najtańszy bezpieczny próg.
▶ Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Julia Set Fractal Explorer — Interactive Complex Dynamics i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.