Jest kilka ważnych powodów, dla których warto się zająć symulacjami stochastycznymi:
Symulacje stochastyczne są prostym sposobem badania zjawisk losowych.
Ściśle związane z symulacjami stochastycznymi są metody obliczeniowe nazywane ,,Monte Carlo” (MC). Polegają one na wykorzystaniu ,,sztucznie generowanej” losowości w celu rozwiązania zadań deterministycznych. Metody MC są proste i skuteczne. Dla pewnych problemów MC jest jedynym dostępnym narzędziem obliczeniowym. Dla innych problemów MC jest co prawda mniej efektywne od metod numerycznych, ale za to dużo łatwiejsze!
W moim przekonaniu symulacje stochastyczne są wspaniałą pomocą przy nauce rachunku prawdopodobieństwa. Pozwalają lepiej ,,zrozumieć losowość”.
Symulacje stochastyczne są dostępne dla każdego. W szczególności, ,,otoczenie” R, które stanowi naprawdę potężne narzędzie, jest rozpowszechniane za darmo!
Jest wreszcie powód najważniejszy:
Symulacje stochastyczne są świetną zabawą!
Literatura na temat symulacji stochastycznych jest bardzo obszerna. Godna polecenia jest książka Zielińskiego i Wieczorkowskiego [23], poświęcona w całości generatorom zmiennych losowych. Przedstawia ona bardziej szczegółowo zagadnienia, odpowiadające Rozdziałom 2–4 niniejszego skryptu i zawiera materiał, który zdecydowałem się pominąć: wytwarzanie ,,liczb losowych” o rozkładzie jednostajnym i testowanie generatorów. Podobne zagadnienia są przedstawione trochę w innym stylu w monografii Ripleya [18], która również zawiera wstęp do metod Monte Carlo. Zaawansowane wykłady można znależć w nowoczesnych monografiach Asmussena i Glynna [2], Liu [15], Roberta i Caselli [19]. Pierwsza z nich jest zorientowana bardziej na wyniki teoretyczne, zaś druga bardziej na zastosowania. Świetnym wstępem do metod MCMC są prace Geyera [7] i [8]. Teoria łańcuchów Markowa z uwzględnieniem zagadnień istotnych dla MCMC jest przystępnie przedstawiona w książce Brémaud [4]. Podstawy teoretycznej analizy zrandomizowanych algorytmów (tematy poruszane w Rozdziale 15 skryptu) są znakomicie przedstawione w pracach Jerruma i Sinclaira [11] oraz Jerruma [12].
Zacznę od kilku przykładów zadań obliczeniowych, które można rozwiązywać symulując losowość. Wybrałem przykłady najprostsze, do zrozumienia których wystarcza zdrowy rozsądek i nie potrzeba wielkiej wiedzy.
Podłoga jest nieskończoną płaszczyzną, podzieloną równoległymi
prostymi na ,,deski” szerokości
Buffon zauważył, że tę prostą obserwację można wykorzystać do…obliczania liczby
Wielkość
Statystyk powiedziałby, że zmienna losowa
Niech
Jest jasne, jak można symulować to zjawisko: dla każdej krawędzi
Powiedzmy, że interesuje nas możliwość znalezienia ścieżki (ciągu
krawędzi) wiodącej z ustalonego wierzchołka
Generujemy niezależnie
Załóżmy, że
Chcemy obliczyć dystrybuantę zmiennej losowej
Zauważmy, że z definicji,
gdzie
Schemat symulacyjnego obliczania prawdopodobieństwa jest taki sam jak w dwu poprzednich przykładach. Podobnie zresztą jak w tamtych przykładach, podstawowy algorytm można znacznie ulepszać, ale dyskusję na ten temat odłóżmy na póżniej.
Następujące zadanie jest dyskretnym odpowiednikiem
sławnego zagadnienia Dirichleta.
Niech
Powiemy, że
gdzie sumowanie rozciąga się na 4 punkty
Mamy daną funkcję na brzegu:
Wyobraźmy sobie błądzenie losowe po kracie,
startujące w punkcie
gdzie
Błądzimy tak długo, aż natrafimy na brzeg obszaru. Formalnie, określamy moment zatrzymania
jest rozwiązaniem zagadnienia! Istotnie, ze wzoru na prawdopodobieństwo całkowite wynika, że
Wystarczy teraz spostrzeżenie, że rozkład zmiennej losowej
Algorytm Monte Carlo obliczania
Powtórz wielokrotnie, powiedzmy
,,błądź startując startując z
Uśrednij wyniki
Dla bardziej formalnego zapisu algorytmu będę się posługiwał pseudo-kodem, który wydaje się zrozumiały bez dodatkowych objaśnień:
{ 'Gen' oznacza 'Generuj' } |
for |
begin |
|
while |
begin |
Gen |
|
end |
|
end |
Załóżmy, że
a więc liczność
Metoda, którą naszkicuję należy do rodziny algorytmów MCMC (Monte Carlo opartych na łańcuchach Markowa). Algorytm jest
raczej skomplikowany, ale o ile mi wiadomo jest najefektywniejszym ze znanych sposobów rozwiązania zadania.
Bez straty ogólności możemy przyjąć, że
Oczywiście,
Opiszemy pewne wyjście, polegające na zastosowaniu błądzenia losowego po zbiorze
for |
begin |
|
Gen |
|
if |
else |
end |
end |
Zaczynamy błądzenie w punkcie
Rzecz jasna, generowane w ten sposób zmienne losowe
dla każdego
Innymi słowy, ciąg
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.