Celem tej próby jest w przybliżeniu wykreślić attractor na mapie logistycznego w funkcji jego parametr r (zwany także schemat rozwidlenia ), lub w subregionie niego. Wygląd wykresu można zobaczyć na następującym obrazku z Wikipedii:
tło
Odwzorowanie logistyczne jest matematyczną funkcją, która zajmuje wejście x k i mapuje je do wyjścia x k + 1 zdefiniowanego jako
x k + 1 = r x k (1− x k )
gdzie r jest parametrem mapy, przy założeniu, że leży w przedziale [0, 4].
Biorąc pod uwagę, R w [0,4], a wartość początkowa x 0 w przedziale [0,1] Interesujące jest wielokrotnie stosuje się funkcję do dużej liczby N iteracji, tworząc końcową wartość x N . Zauważ, że x N musi koniecznie znajdować się w [0,1].
Jako przykład rozważmy r = 3,2, N = 1000. Wartość początkowa x 0 = 0,01 daje x 1000 = 0,5130. Dla x 0 = 0,02 wynikiem jest x 0 = 0,7995. Dla każdej innej wartości początkowej x 0 końcowe wartości x 1000 są bardzo zbliżone do 0,5130 lub 0,7995. Jest to widoczne na wykresie jako wysokość dwóch linii w pozycji poziomej r = 3,2.
Ten sposób nie oznacza to, że dla R = 3,2 Każda sekwencja jest zbieżny do jednej z tych dwóch wartości. W rzeczywistości dla dwóch rozważanych powyżej wartości początkowych sekwencje są (zwróć uwagę na zachowanie oscylacyjne):
x 0 = 0,01, ..., x 1000 = 0,5130, x 1001 = 0,7995, x 1002 = 0,5130, ...
x 0 = 0,02, ..., x 1000 = 0,7995, x 1001 = 0,5130, x 1002 = 0,7995 , ...
Co jest prawdą, że dla dostatecznie dużych N , a dla prawie wszystkich wartości początkowych x 0 , termin x N będzie zbliżony do jednego z elementów zbioru {0.5130, 0,7995}. Ten zestaw nazywa się atraktorem dla tego konkretnego r .
Dla innych wartości parametru r zmieni się rozmiar zestawu atraktora lub jego elementów. Wykres przedstawia elementy w atraktorze dla każdego r .
Atraktor dla określonego r można oszacować za pomocą
- testowanie szerokiego zakresu wartości początkowych x 0 ;
- pozwalając, aby system ewoluował dla dużej liczby N iteracji; i
- zwracając uwagę na końcowe wartości x N , które są uzyskiwane.
Wyzwanie
Wejścia
N : liczba iteracji.
r 1 , r 2 i s . Definiują one zbiór R wartości r , a mianowicie R = { r 1 , r 1 + s , r 1 + 2 s , ..., r 2 }.
Procedura
Zbiór X wartości początkowych x 0 jest stały: X = {0,01, 0,02, ..., 0,99}. Ewentualnie, od 0 do 1 mogą być także zawarte w X .
Dla każdego badania w R i każdy x 0 w X , iteracyjne logistyczne mapę N razy do produkcji x N . Zapisz uzyskane krotki ( r , x N ).
Wydajność
Narysuj każdą krotkę ( r , x N ) jako punkt w płaszczyźnie z r jako osią poziomą i x N jako osią pionową. Dane wyjściowe powinny być grafiki (nie sztuki ASCII).
Dodatkowe zasady
- Wskazana procedura określa wymagany wynik, ale nie jest egzekwowana. Można użyć dowolnej innej procedury, która ogłasza ten sam zestaw krotek ( r , x N ).
- Dane wejściowe są jak zwykle elastyczne.
- Błędy zmiennoprzecinkowe nie będą blokowane przez odpowiadającego.
- Wymagany jest wydruk graficzny w dowolnym akceptowanym formacie . W szczególności dane wyjściowe mogą być wyświetlane na ekranie lub może zostać utworzony plik graficzny lub tablica wartości RGB. Jeśli wyprowadzasz plik lub tablicę, zamieść przykład tego, jak to wygląda po wyświetleniu.
- Grafika może być wektorowa lub rastrowa. W przypadku grafiki rastrowej rozmiar obrazu powinien wynosić co najmniej 400 × 400 pikseli.
- Każdy punkt powinien być pokazany jako pojedynczy piksel lub jako znak wielkości rzędu jednego piksela (w przeciwnym razie wykres szybko się zaśmieci).
- Zakres osi powinien wynosić [0,4] dla r (oś pozioma) i [0,1] dla x N (oś pionowa); lub może być mniejszy, o ile zawiera wszystkie uzyskane punkty.
- Skale osi są dowolne. W szczególności skala nie musi być taka sama dla obu osi.
- Linie siatki, etykiety osi, kolory i podobne elementy są dopuszczalne, ale nie wymagane.
- Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
Kliknij każdy obraz, aby wyświetlić wersję w wysokiej rozdzielczości.
N = 1000; r1 = 2.4; r2 = 4; s = 0.001;
N = 2000; r1 = 3.4; r2 = 3.8; s = 0.0002;
N = 10000; r1 = 3.56; r2 = 3.59; s = 0.00002;
Potwierdzenie
Dzięki @FryAmTheEggman i @AndrasDeak za ich pomocne komentarze, gdy wyzwanie było w piaskownicy.