Wykład XIV: Metody Monte Carlo 19 stycznia 2016
Przybliżone obliczanie całki oznaczonej Rozważmy całkowalną funkcję f : [0, 1] R. Chcemy znaleźć przybliżoną wartość liczbową całki 1 f (x) dx. 0 Jeden ze sposobów może wyglądać następująco. Niech U 1, U 2, U 3,... będzie ciągiem niezależnych zmiennych losowych o jednakowym rozkładzie U(0, 1) (jednostajnym na odcinku [0, 1]). Rozważmy ciąg średnich f (U 1 ) +... + f (U n ). n Z mocnego prawa wielkich liczb wynika, że f (U 1 ) +... + f (U n ) Ef (U 1 ), P - prawie wszędzie. n Zauważmy, że Ef (U 1 ) = + f (u)1i [0,1] dx = 1 0 f (x) dx.
Przybliżone obliczanie całki oznaczonej Wynika stąd, że wartości średnich są dla dużych n przybliżeniem poszukiwanej wartości całki. Oczywiście zawsze pozostaje otwarte pytanie, jak duże należy wybrać n, aby uzyskać odpowiednią dokładność przybliżenia. W powyższym przykładzie dużo lepsze wyniki dają deterministyczne metody numeryczne, dobrane odpowiednio do stopnia regularności funkcji f. Tak już nie jest w przypadku całkowania funkcji k zmiennych, k 10, gdzie stopień złożoności obliczeniowej gwałtownie rośnie.
Prosta metoda Monte Carlo Twierdzenie Niech f : [0, 1] k IR 1 będzie całkowalna. Niech U 1,..., U k, U k+1,..., U 2k, U 2k+1,..., U 3k, U 3k+1,..., U nk,..., będą niezależnymi zmiennymi losowymi o jednakowym rozkładzie U(0, 1). Wówczas f (U 1,..., U k ) + f (U k+1,..., U 2k ) +... + f (U (n 1)k+1,..., U nk ) n f ( x) d x P-prawie wszędzie. [0,1] k W powyższym wzorze [0,1] k f ( x) d x = 1 dx 1 1 0 0 1 dx 2... dx k f (x 1, x 2,..., x k ). 0
Uwagi i komentarze W praktyce metod Monte Carlo do obliczeń używany jest ciąg liczb u 1, u 2,..., u n,... uzyskany z generatora liczb losowych. W większości przypadków generator liczb losowych pracuje na podstawie deterministycznego algorytmu, a ciąg u 1, u 2,..., u n,... tylko naśladuje realizację X 1 (ω), X 2 (ω),..., X n (ω),... ciągu niezależnych zmiennych losowych o jednakowych rozkładach. Nie wszystkie generatory liczb losowych są w tym naśladownictwie dostatecznie dobre!
Inny problem Przypuśćmy, że rozkład ν zmiennej losowej X jest znany, ale nie potrafimy znaleźć na drodze analitycznej Ef (X ) dla pewnej funkcji f. Symulujemy więc ciąg X 1, X 2,..., niezależnych zmiennych losowych o rozkładzie ν i szukamy granicy dla f (X 1 ) + f (X 2 ) +... + f (X n ), n która równa się Ef (X 1 ) z prawa wielkich liczb. Na przykład chcemy symulować funkcjonowanie modelu systemu kolejkowego. Aby ocenić pewne charakterystyki liczbowe systemu musimy dysponować strumieniem danych o zadanym rozkładzie.
Symulacja rozkładu jednostajnego Niech F (x) = 1 e x, x > 0 (rozkład wykładniczy). To jest funkcja ciągła i ściśle rosnąca na IR +. Stąd istnieje funkcja odwrotna F 1 : [0, 1) IR +. Ze związku F ( F 1 (t) ) = t otrzymujemy a więc 1 t = e F 1 (t), F 1 (t) = log(1 t). Znajdziemy rozkład funkcji F 1 traktowanej jako zmienna losowa na standardowej przestrzeni probabilistycznej ( [0, 1], B[0,1), l ). Mamy {t [0, 1) ; F 1 (t) x } = { t [0, 1) ; t F (x) } l { t [0, 1) ; F 1 (t) x } = F (x), x > 0.
Symulacja rozkładu jednostajnego Wynika stąd, że jeśli U U(0, 1), to F 1 (U) = log(1 U) ma rozkład wykładniczy. Zauważmy, że log(1 U) log(u), a więc log U ma również rozkład wykładniczy. Twierdzenie Jeśli U 1, U 2,... jest ciągiem zmiennych losowych z generatora U(0, 1), to log U 1, log U 2, log U3,... jest ciągiem zmiennych losowych z generatora rozkładu Ex(1).
Metoda odwrócenia dystrybuanty Twierdzenie Jeśli dystrybuanta F : IR 1 [0, 1] jest ściśle rosnąca i ciągła na IR 1, to ciąg F 1 (U 1 ), F 1 (U 2 ),... pochodzi z generatora F. F 1 (U) jest zmienna losową o dystrybuancie F, pod warunkiem, że F jest ściśle rosnąca i ciagła na odcinku (F, F ), gdzie F = inf{x IR 1 ; F (x) > 0}, F = sup{x IR 1 ; F (x) < 1}. Używając tej metody, łatwo można symulować zmienne losowe o rozkładzie Pareto lub logistycznym. Nie istnieje zwarta formuła dla funkcji odwrotnej do Φ (dystrybuanty standardowego rozkładu normalnego). W tym przypadku dobre wyniki daje aproksymacja funkcjami wymiernymi (ilorazami wielomianów).
Metoda odwrócenia dystrybuanty Twierdzenie Niech X ma rozkład o dystrybuancie F. Definiujemy lewostronnie ciągłą odwrotną do F wzorem F (u) = inf{x ; F (x) u}. Jeżeli U 1, U 2, U 3,... jest ciągiem zmiennych z generatora rozkładu U(0, 1), to F (U 1 ), F (U 2 ), F (U 3 ),... jest ciągiem z generatora rozkładu o dystrybuancie F.
Symulacja rozkładów dyskretnych Przykład Niech X ma rozkład dyskretny skończony, tzn. istnieją liczby x 1 < x 2 <... < x m oraz p i > 0, x i IR 1, i = 1, 2,..., m, takie, że m i=1 p i = 1 i P ( X = x i ) = pi, i = 1, 2,..., m. Kładąc x 0 =, x m+1 = +, mamy F (x) = k p i = p i, jeśli x k x < x k+1, {i ; x i x} i=1 F (u) = m 1 k=0 gdzie A k+1 = ( k i=1 p i, k+1 i=1 p i ]. x k+1 1I Ak+1 (u), Powyższa metoda jest naiwna w tym sensie, że jeśli m jest wielkie (np. rzędu 10 100 ), to jest niewykonalna.
Metody specjalne Przykład: Symulacja rozkładu geometrycznego Niech X Ex(λ). Wtedy zmienna losowa [X ] przyjmuje wartości całkowite i dla k = 0, 1, 2,... mamy: P ( [X ] = k ) = P ( k X < k + 1 ) = F X (k + 1) F X (k) = 1 e λ(k+1) ( 1 e λk) = ( 1 e λ) e λk = (1 p) k p, gdy położymy p = 1 e λ. Stąd [X ] + 1 Ge(p).
Transformacja Boxa-Mullera Przykład: Metoda Boxa-Mullera Generujemy niezależnie U, V o rozkładzie jednostajnym U(0, 1). Wtedy wektor (X, Y ), gdzie ma rozkład łączny N(0, I 2 ). X = 2 ln U cos 2πV, Y = 2 ln U sin 2πV,
Metoda eliminacji Johna von Neumanna Niech f będzie gęstością rozkładu, który chcemy symulować. Zakładamy, że f : [a, b] IR +. i f (x) C, x [a, b]. We set B = { (x, u) [a, b] [0, C] ; u f (x) }. Algorytm: Metoda eliminacji 1 Generuj (X 1, U 1 ) U(a, b) U(0, C) 2 Jeśli (X 1, U 1 ) B, połóż X = X 1. 3 W przeciwnym przypadku generuj niezależnie nowa parę (X 2, U 2 ) U(a, b) U(0, C). 4 Jeśli (X 2, U 2 ) B, połóż X = X 2. 5 Jeśli nie, powtarzaj procedurę aż do skutku. Rozkład wygenerowanej zmiennej losowej X ma gęstość f. Rzeczywiście:
Metoda eliminacji Johna von Neumanna P ( X y ) = P ( (X 1, U 1 ) / B,..., (X k 1, U k 1 ) / B, (X k, U k ) k=1 = P ( (X 1, U 1 ) / B ) k 1 ( P (X1, U 1 ) B, X 1 y ) k=1 = P ( (X 1, U 1 ) B, X 1 y ) P ( (X 1, U 1 ) / B ) k 1 k=1 = P ( (X 1, U 1 ) B, X 1 y ) 1 1 P ( (X 1, U 1 ) / B ) = P( (X 1, U 1 ) B, X 1 y ) P ( (X 1, U 1 ) B ) = P ( X 1 y (X 1, U 1 ) B ) = y a f (x) dx.
Metoda eliminacji Johna von Neumanna Ważna własność Z prawdopodobieństwem jeden algorytm zakończy działanie w skończonym czasie.