Chaos deterministyczny
Czy to w ogóle ma sens? może od razu kazać małpie namalować obraz – wynik pewnie będzie podobny 😉 Ale nie – hasło ,,obrazy chaosu” jest celowo dobrane by zainteresować czymś sprzecznym z naszą intuicją, podopowiadającą nam jakiś porządek, regułę w procesie tworzenia obrazu. Tak jest i w tym przypadku – ale od początku 😉
Rysunek 1
(prostokąt zakreśla obszar do powiększania – patrz Rysunek 2)
Prezentowane obrazy zostały utworzone w całkiem sprytny sposób, bazujący na znanym w literaturze równaniu logistycznym [1,2,3]:
gdzie wielkosc N zawiera się w przedziale 0..1, a R w przedziale 0..4. Indeksy stojące przy N informują jak powstaje kolejny wyraz ciągu – widać, ze w tym celu trzeba podać poprzednia wartość ciągu , przemnożyć przez R i przez różnicę .
Równanie (1) ma ciekawą interpretację: mianowicie może opisywać populację królików w stadzie (parametr N), które rozmnażają się z intensywnością R. Jak widać w (1) liczba królików w stadzie (N) może rosnąc proporcjonalnie do iloczynu ilości królików i intensywności rozmnażania (wyraz N*R z prawej strony (1)) – ale tez może i maleć, i to proporcjonalnie do kwadratu N (wyraz -N*R*N z prawej strony (1)). Taki ubytek populacji można łatwo wytłumaczyć – mianowicie zaczyna brakować żywności dla coraz to większego stada królików na łące, a ze każdy królik musi coś jeść, to biedne istoty zaczynają umierać…
Rysunek 2
(zaznaczony prostokątem obszar po powiększeniu – patrz Rys.3)
Nietrudno się domyśleć, że jest kilka scenariuszy ewolucji królików: stado może wymrzeć z głodu, gdy będzie rozmnażać się w zastraszającym tempie, lub tez może spokojnie żyć niezmieniając swojej liczebności – dla rozsądnej wartości parametru rozmnażania. Jak widać na tym prostym modelu rozmnażać należy się głową 🙂 O tym, jaka będzie przyszłość stada decyduje nie tylko liczba początkowa królików, ale (przede wszystkim!) parametr rozmnażania.
Rysunek 3
Można więc zmieniać parametr rozmnażania w sposób ciągły od wartości 0 do wartości 4 i patrzeć, jak zachowa się nasze stado. Taka symulacje przedstawia poniższy obrazek, gdzie na osi ,,iksów” jest parametr R, a na ,,igrekach” parametr N (po 1000 krokach ewolucji/iteracji). Dodatkowo, aby uniezależnić otrzymywane wyniki iteracji równania (1) od wartości początkowej N, dla każdego R z dziedziny 0..4 losuję 100 różnych, losowych wartości początkowych N i stawiam nie jeden punkt, ale 100 o współrzędnych (R, N_i)
Wykres N(R) z równania (1)
Wyraźnie widać, że dla pewnego zakresu parametru R (i niezależnie od liczby początkowej stada!) liczebność koñowa osiąga jedną, ustaloną wartość równą zero. Można by rzec, ze to smutne – takie stado nie przeżywa. Dla innego zakresu parametru R stado jest ,,stabilne” i pewnie szczęśliwe 🙂 bo w wyniku ewolucji (1) osiąga jedną, określoną wartość koñcową (różną od zera) i liczba ta nie zmienia się z czasem. Widać też, że dla innego zakresu parametru R liczebność stada może przyjąć jedną z dwóch stabilnych wartości koñcowych – czyli liczebność N waha się (,,skacze”) z jednej wartości N na inną (również niezależnie od wartości początkowej N). Przyglądając się dalej widać, że te dwie stabilne wartości koñcowe N podwajają się dalej dla większych R, potem jeszcze się podwajają i tak dalej…
Wygodnie jest opisywać ewolucję stada za pomocą parametru zwanego wykładnikiem Lapunowa [1,3], który przyjmuje wartości mniejsze od zera dla stabilnych wartości koñcowych N, oraz wartości dodatnie dla stad rozrastających się chaotycznie. Taki parametr przyjmuje też wartość zero tam, gdzie następuje rozszczepienie stabilnej orbity na dwie. Dla naszego poprzedniego obrazka wykładnik Lapunowa w funkcji R wygląda następująco:
Wykładnik Lapunova L(R). Czerwona linia to L(R)=0.
No i wracając do prezentowanych kolorowych obrazów: powstały one w wyniku obliczenia współczynnika lapunowa, który następnie został zamieniony na kolor. To właśnie w tej funkcji tkwi cala ,,tajemnica” – od niej zależy ,,piękno” powstałych obrazów.
A parametr R na prezentowanych obrazach? Właściwie to są tu dwa parametry 🙂 nazwijmy je Rx i Ry, zaraz okaże się dlaczego 😉 Tak jak w dyskusji samego równania logistycznego kreśliłem N w funkcji R (gdzie R zmieniało się od 0 do 4), tak tutaj (Rysunek 1) Rx zmienia się od 0..4 idąc z punktami na ekranie wzdłuż osi iks, a Ry od 0 do 4 idąc z punktami ekranu wzdłuż osi igrek. A o wyborze miedzy Rx a Ry decyduje konkretna reguła, stała dla całego obrazu (np. cykliczna sekwencja {Rx, Rx, Ry, Rx, Ry})
Można zmieniać wartości oglądanych obszarów, powiększając interesujący nas fragment. Rysunki 2,3,4 przedstawiają właśnie powiększone części Rysunku 1, a na nagłówkach okien widać wartości współczynników Rx i Ry.
Rysunek 4
Chciałbyś zobaczyć kolejne powiększenie? Możesz sciagnać program (linki poniżej), którym to generowałem i samodzielnie się pobawić 🙂 Nie zapomnij podesłać ciekawe zdjęcia z miejsc, które odwiedziłeś 🙂
Literatura:
[1] Andrzej Stasiewicz, KOMPUTER NA DŁUGIE WIECZORY, Wydawnictwo Lupus, 1995
[2] Jacek Kuderewicz, FRAKTALE, Wydawnictwa Naukowo-Techniczne, Warszawa 1993
[3] H. G. Schuster, CHAOS DETERMINISTYCZNY WPROWADZENIE, Wydawnictwa Naukowe PWN, Warszawa 1995
[4] John R. Taylor, MECHANIKA KLASYCZNA 2, Wydawnictwo Naukowe PWN, Warszawa 2006
Autor strony i prawa autorskie 2006: K. Gawryluk
Programiki – obsługa (instrukcja)
Obsługa myszką i klawiaturą: Lewy Klawisz Myszy (LKM) rozpoczyna zaznaczanie obszaru do powiększenia, kolejny raz LKM kończy zaznaczanie obszaru – widoczny prostokąt. Aby dostać się wewnątrz tego prostokąta klikamy Prawy Klawisz Myszy (lub Enter). Zwiększenie liczby iteracji dla każdego punktu: klawisz „>” (większy) na klawiaturze (zmienia dwukrotnie – wpływa to na jakość obrazów), oczywiście „<” zmniejsza. Polepszenie dokładności (rozdzielczości, szczegółowości) – klawisz plus na klawiaturze (minus – zmniejsza). Spacja resetuje obszar.
Programiki – Linux (wersja z dynamicznymi bibliotekami)
Program chaos MD5: 4f169afd98d1ea9242e84b0f0e9b53c8
, rozmiar: 24 kB, download, czyli kliknij i pobierz
Program zuczek MD5: d8c7547f80d1c9e981fb0f1af42a2c5
, rozmiar: 24 kB, download, czyli kliknij i pobierz
Nie zapomnij nadać uprawnienia wykonywalności.
Problem z bibliotekami? wykonaj polecenie ldd chaos
aby sprawdzić, czego brakuje (poniżej działający przypadek – więc niczego nie brakuje).
komputer[~/] ldd chaos
linux-vdso.so.1 => (0x00007ffff0dfd000)
libGL.so.1 => /usr/lib/nvidia-384/libGL.so.1 (0x00007fc8dce1a000)
libglut.so.3 => /usr/lib/x86_64-linux-gnu/libglut.so.3 (0x00007fc8dcbd2000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc8dc850000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc8dc547000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc8dc17d000)
libnvidia-tls.so.384.130 => /usr/lib/nvidia-384/tls/libnvidia-tls.so.384.130 (0x00007fc8dbf79000)
libnvidia-glcore.so.384.130 => /usr/lib/nvidia-384/libnvidia-glcore.so.384.130 (0x00007fc8da0bd000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fc8d9d83000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fc8d9b71000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc8d996d000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fc8d975d000)
libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007fc8d9557000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc8dd15c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc8d9341000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fc8d911f000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fc8d8f1b000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fc8d8d15000)
Jeśli u Ciebie jest problem, np.
libglut.so.3 => not found
to trzeba zainstalować bibliotekę freeglut3, czyli (dla Ubuntu-podobnych dystrybucji) sudo apt install freeglut3
Jeśl pojawi się
libGL.so.1 => not found
to (dla Ubuntu-podobnych dystrybucji) sudo apt install libgl1-mesa-dev
Ale skąd wiedzieć, co instalować? cóż, google it! (np. Ubuntu problem libGL.so.1 => not found)
Programiki – Windows
Program chaos.exe (pod Windows) MD5: b6976791f09f98555d32b7a943e7560d
, rozmiar: 328 kB, download, czyli kliknij i pobierz
Program zuczek.exe (pod Windows) MD5: 03238f44f89a31482c2fbbaf71e6faf2
, rozmiar: 324 kB, download, czyli kliknij i pobierz
W przypadku komunikatu o brakującej bibliotece freeglut.dll trzeba ją ściągnąć: wersja 32-bitowa, lub wersja 64-bitowa. Bibliotekę należy umieścić w katalogu C:\Windows lub w katalogu, gdzie znajdują się pobrane pliki chaos.exe (i/lub zuczek.exe). Biblioteka dll została zaczerpnięta z oficjalnej strony projektu https://sourceforge.net/projects/freeglut/ i nie jest moją własnością.
Nie widać biblioteki w katalogu, gdzie zwykle są pobierane pliki? Może masz włączone „Nie pokazuj ukrytych plików, folderów ani dysków” – zmień to (wybierając „Pokaż ukryte pliki, foldery i dyski”) a będziesz widzieć bibliotekę!
(c) K. Gawryluk, 2018