Symulacja komputerowa - laboratorium Inżynieria Systemów 2016

Transkrypt

Symulacja komputerowa - laboratorium Inżynieria Systemów 2016
Symulacja komputerowa - laboratorium
Inżynieria Systemów 2016/2017
Lista 1. Generatory liczb losowych
1. Niech f : {0, 1, . . . , m − 1} → {0, 1, . . . , m − 1} będzie dowolną funkcją. Rozważmy ciąg
utworzony zgodnie z regułą Xn+1 = f (Xn ), dla pewnego X0 .
(a) Wykaż, że ciąg jest okresowy, tzn., że istnieją liczby λ i µ, dla których wartości
X0 , X1 , . . . , Xµ , . . . , Xµ+λ−1
są różne, ale Xn+λ = Xn dla wszystkich n ≥ µ.
(b) Znajdź największe i najmniejsze możliwe wartości λ i µ.
(c) Wykaż, że istnieje takie n > 0, że Xn = X2n , oraz że najmniejsza taka wartość n mieści
się w zakresie µ ≤ n ≤ µ + λ.
(d) Zaprojektuj algorytm obliczania µ i λ dla dowolnej zadanej funkcji f i dowolnego
zadanego X0 .
2. Rozważmy ciąg utworzony zgodnie z regułą Xn+1 = f (Xn , Xn−1 ), dla całkowitych wartości
0 ≤ x, y, f (x, y) < m. Jaki jest największy możliwy do osiągnięcia okres w tym przypadku?
Uogólnij odpowiedź na przypadek, gdy f zależy od k poprzednich wartości ciągu.
3. Liniowy ciąg kongruencyjny
Xn+1 = (aXn + c)
mod m
ma okres długości m wtedy i tylko wtedy, gdy:
(i) c jest względnie pierwsze z m,
(ii) b = a − 1 jest wielokrotnością p dla każdego dzielnika pierwszego p liczby m,
(iii) b jest wielokrotnością 4, jeśli m jest wielokrotnością 4.
Znajdź najmniejsze wartości a i c, dla których ciąg kongruencyjny ma okres długości:
(a) m = 232 − 1,
(b) m = 60500
(c) m = 264 .
4. Zaimplementuj i zbadaj działanie generatora Fibonacciego, zdefiniowanego ogólnym wzorem:
Xn = F (Xn−k , Xn−l )
mod m
gdzie F (a, b) jest binarną operacją na liczbach całkowitych (np. dodawaniem, mnożeniem,
bitową alternatywą wykluczającą, itp.), a k, l > 0 są parametrami. Dobierz parametry tak,
aby uzyskać maksymalną długość okresu.
1
5. Przypuśćmy, że mamy zestaw kostek w k różnych kolorach; danych jest nj kostek koloru j-tego.
Mamy także k identycznych pudełek, z których każde może pomieścić n kostek, przy czym
n1 + n2 + . . . + nk = kn, więc wszystkie kostki akurat mieszczą się w pudełkach. Udowodnij,
że zawsze można umieścić kostki w pudełkach w taki sposób, żeby każde pudełko zawierało
kostki w co najwyżej dwóch kolorach.
6. Dany jest dyskretny rozkład prawdopodobieństwa (p1 , p2 , . . . , pk ). Rozważmy następujący
algorytm generowania liczby X ∈ {1, 2, . . . , k} z tego rozkładu, Pr[X = i] = pi . Dla pewnych
odpowiednio dobranych tablic (P0 , P1 , . . . , Pk−1 ) i (Y0 , Y1 , . . . , Yk−1 ), wylosuj liczbę U ∈ [0, 1]
z rozkładu jednostajnego oraz oblicz część całkowitą K = bkU c i część ułamkową V = (kU )
mod 1. Jeśli V < PK to zwróć K, w przeciwnym razie zwróć YK .
Opisz jak obliczyć tablice wartości P i Y (wskazówka: skorzystaj z zadania 5).
7. Aby wygenerować liczbę losową X z dowolnego rozkładu o dystrybuancie F (x) wystarczy
wygenerować losową liczbę U z rozkładu jednostajnego na odcinku [0, 1], a następnie obliczyć
X = F −1 (U ), gdzie F −1 jest funkcją odwrotną do F .
Opisz jak wygenerować liczbę losową z rozkładów:
√
(a) rozkład o gęstości f (x) = x2 na odcinku [0, 3 3],
(b) rozkład wykładniczy o gęstości f (x) = λe−λx na przedziale [0, ∞),
(c) rozkład o gęstości f (x) = sin x na odcinku [0, π2 ].
8. Metoda biegunowa generowania liczb z rozkładu normalnego: (1) wygeneruj
punkt (x, y)
q
−2 ln S
2
2
wewnątrz koła jednostkowego; (2) niech S = x + y , zwróć wartość x
.
S
Opisz jak wygenerować punkt wewnątrz koła mając do dyspozycji generator liczb z rozkładu jednostajnego z zakresu [0, 1]. Niech N będzie zmienną losową równą liczbie wywołań
generatora rozkładu jednostajnego. Wyznacz wartość oczekiwaną i odchylenie standardowe
zmiennej N .