Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Metoda Monte Carlo

Metoda Monte Carlo została opracowana przez Stanisława UlamaStanisław UlamStanisława Ulama. Wykorzystano ją podczas pracy nad bombą atomową do procesu symulowania rozpadu cząsteczek. Naukowcy nie potrafili zastosować do tych obliczeń klasycznych modeli matematycznych, postanowili więc wykorzystać losową symulację przeprowadzoną za pomocą komputerów.

Terminem Monte Carlo określamy wszystkie metody numeryczne, które wykorzystują wybór przypadkowy (losowanie) wielkości charakteryzujących modelowany proces, przy czym losowanie przeprowadzane jest zgodnie ze znanym rozkładem.

Wyznaczanie powierzchni koła metodą Monte Carlo

Przeprowadźmy eksperyment myślowy. Załóżmy, że nie znamy wzoru na pole koła ani tym bardziej przybliżonej wartości liczby π. Wyobraźmy sobie, że mamy kwadratową kartkę. Rysujemy na niej koło, które jest styczne do każdego boku kwadratu lub wpisujemy koło w kwadrat. Następnie zaczynamy rzucać ołówkiem w losowe miejsca na kartce. Notujemy, ile rzutów oddaliśmy. W momencie, gdy ołówek narysuje punkt wewnątrz koła, zapisujemy zdarzenie jako trafienie.

Podejście to przedstawiono na poniższym rysunku. Trafione w koło rzuty ołówkiem zaznaczono kolorem ciemnozielonym, a nietrafione – ciemnoczerwonym.

RPly2T8C21h4b
Źródło: Contentplus.pl Sp. z o.o, licencja: CC BY-SA 3.0.

Po pewnym czasie stosunek liczby trafień do liczby rzutów powinien zbliżać się do stosunku pola koła do pola kartki, wówczas:

ltrafieńlrzutów=PkołaPkwadratu

Dalsze oszacowanie pola koła jest bardzo proste. Pozostało nam obliczyć powierzchnię kartki. Użyjemy do tego wzoru na pole kwadratu i podstawimy do obliczeń. Niech długość boku kwadratu wynosi a:

Pkoła=ltrafieńlrzutówPkwadratu=ltrafieńlrzutówa2

Wyznaczanie liczby pi metodą Monte Carlo

W poprzednim eksperymencie wyznaczyliśmy pole koła, zakładając, że nie znamy wzoru. Teraz przyszła pora na założenie, że znamy wzór na pole koła, ale nie dysponujemy przybliżeniem liczby π. Przypomnijmy wzór na pole koła:

Pkoła=πr2

Ponieważ koło jest wpisane w kwadrat o boku a:

r=a2
RxesWr4EyeBKv
Źródło: Contentplus.pl Sp. z o.o, licencja: CC BY-SA 3.0.

korzystamy z równania:

ltrafieńlrzutów=PkołaPkwadratu

by wyznaczyć wartość liczby π:

ltrafieńlrzutów=πa22a2
ltrafieńlrzutów=πa24a2

W tym momencie możemy zauważyć, że wartość liczby π nie zależy od długości boku kwadratu ani od promienia koła.

π=4ltrafieńlrzutów

Pojawia się pytanie, w jaki sposób przeprowadzić symulację za pomocą komputera. Skorzystajmy z nierówności opisującej koło o środku w punkcie ( a , b ) i promieniu r:

(xa)2+(yb)2r2

W celu wyznaczenia liczby π wystarczy przyjąć dowolny kwadrat, losować na nim dowolny punkt oraz w odpowiedni sposób – za pomocą nierówności opisującej koło – sprawdzać, czy trafiliśmy do wnętrza koła.

W dalszej części materiału symulację przeprowadzamy w kartezjańskim układzie współrzędnych. Wybieramy kwadrat o boku 2 ze środkiem w punkcie ( 0 , 0 ) . Rozwiązanie zapisane za pomocą pseudokodu może przedstawiać się następująco:

Linia 1. liczbaRzutow ← 10000. Linia 2. liczbaTrafien ← 0. Linia 4. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek liczbaRzutow wykonuj dwukropek. Linia 5. x ← 2 asterysk losuj otwórz nawias okrągły zamknij nawias okrągły minus 1. Linia 6. y ← 2 asterysk losuj otwórz nawias okrągły zamknij nawias okrągły minus 1. Linia 8. jeżeli x asterysk x plus y asterysk y otwórz nawias ostrokątny znak równości 1 dwukropek. Linia 9. liczbaTrafien ← liczbaTrafien plus 1. Linia 11. przyblizona podkreślnik liczba podkreślnik pi ← 4 asterysk otwórz nawias okrągły liczbaTrafien prawy ukośnik liczbaRzutow zamknij nawias okrągły. Linia 13. wyświetl przyblizona podkreślnik liczba podkreślnik pi.

Zakładamy, że funkcja losuj() losuje jednakowo prawdopodobne liczby z zakresu 0,1.

Dokładność wyniku

Zastanówmy się, od czego zależy dokładność osiągniętego wyniku przy użyciu metody Monte Carlo. Możemy dojść do wniosku, że im większa liczba losowanych punktów, tym dokładniejszy wynik. Jednak nie jest to jedyny czynnik, który ma na to wpływ. Liczby losowe w komputerze są bowiem wyznaczane za pomocą generatora liczb pseudolosowychgenerator liczb pseudolosowychgeneratora liczb pseudolosowych. Proces zupełnej losowości jest niemożliwy do zaimplementowania. Pamiętajmy jednak, że dysponując idealnym generatorem liczb losowych, można założyć, iż statystyczna dokładność metody Monte Carlo rośnie wraz ze wzrostem liczby losowań.

Sprawdźmy zatem, w jaki sposób może wyglądać wykres zależności błędu od liczby wykonanych losowań. Jako błąd przyjmujemy wartość bezwzględną różnicy pomiędzy przybliżeniem liczby π wyznaczonej metodą Monte Carlo, a wartością, którą podaje najdokładniejsze przybliżenie możliwe do przechowania w zmiennej typu zmiennoprzecinkowego. W celu poprawnej wizualizacji wyniku oś x (liczbę losowań) przedstawiono w skali logarytmicznejskala logarytmicznaskali logarytmicznej. Intuicyjnie możemy przypuszczać, że na wykresie będą występowały liczne skoki z uwagi na losowania, które mogą odstawać od przewidywanych. W ostateczności jednak wartość błędu powinna być coraz mniejsza.

R1hfuu2TdZfYs
Wykres błędu w zależności od liczby losowań
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wykres potwierdza przypuszczenia intuicyjne. Łatwo zauważyć, że metoda nie jest stabilna – czasem następuje skok w górę lub w dół, jednak ostatecznie widać, że wartość błędu maleje.

Ukryte piękno liczby π

62   831   853   071   796 — to liczba cyfr po przecinku dziesiętnego rozwinięcia liczby π(znanych ludzkości na dzień powstania tego e‑materiału). Wynik ten został osiągnięty dzięki programowi y‑cruncher. Program pracował przez 108 dni. Niewykluczone, że w obecnym momencie jakiś śmiałek próbuje pobić ten rekord.

Zastanawiające może być, ile tak naprawdę powinniśmy znać cyfr rozwinięcia dziesiętnego liczby π. Nikt przecież nie będzie używał wymienionego wyżej rekordu, aby obliczyć liczbę cegieł potrzebnych do zbudowania okrągłej studni. Okazuje się, że do wyliczenia obwodu znanego nam wszechświata z dokładnością do wielkości 1 atomu, potrzeba tylko 39 cyfr dziesiętnych liczby π. Rozwinięcie to wygląda następująco:

π 3.14159265358979323846264338327950288420

Warto również spojrzeć na przybliżenia historyczne. Pierwsze wzmianki o liczbie π sięgają czasów starożytnej Babilonii (1900‑1700 p.n.e.). Na odnalezionej z tego okresu kamiennej tablicy pojawia się opis obwodu koła o średnicy 1, który wynosił 3.125. Ponieważ wzór na obwód koła to liczba π pomnożona przez długość średnicy, liczba 3.125 to jedno z pierwszych odnalezionych na kartach historii przybliżeń liczby π.

Znacznie mniej dokładne przybliżenie możemy znaleźć w Biblii:

1 Księga Królewska 7, 23

Następnie sporządził odlew „morza” o średnicy dziesięciu łokci, okrągłego, o wysokości pięciu łokci i o obwodzie trzydziestu łokci.

Biblia Źródło: 1 Księga Królewska 7, 23, [w:] Biblia Tysiąclecia.

Sprawdźmy, ile według tego fragmentu wynosi liczba π. Oto wzór na obwód koła o średnicy d:

O=πd

Dokonując przekształcenia, otrzymujemy wzór na π:

π=Od

Zatem według przytoczonego fragmentu:

π = 30 10 = 3

Ciekawym zbiegiem okoliczności jest występowanie w rozwinięciu dziesiętnym liczby π po przecinku dwóch kolejnych liczb: 14 oraz 15. Fakt ten pozwolił na ustalenie adekwatnego na święto liczby π miejsca w kalendarzu — jest to noc z 14 na 15 marca. Data ta może być zapisana w amerykańskim systemie jako 3.14‑15, co stanowi całkiem przyzwoite przybliżenie liczby π.

Słownik

generator liczb pseudolosowych
generator liczb pseudolosowych

podprogram (lub funkcja programu) zwracający kolejne liczby z deterministycznego ciągu liczb, który ma podobne własności do ciągów losowych

Stanisław Ulam
Stanisław Ulam

polski matematyk (ur. 1909 r. we Lwowie, zm. 1984 r. w USA), zaliczany do lwowskiej szkoły matematycznej; swoją pracą przysłużył się rozwojowi teorii mnogości oraz topologii; twórca metod numerycznych; więcej informacji na temat naukowca znajdziesz w e‑materiale Polacy w informatycePhK37jAC6Polacy w informatyce

skala logarytmiczna
skala logarytmiczna

rodzaj skali pomiarowej, w której wartość przekształcana jest za pomocą funkcji logarytmicznej, najczęściej o podstawie 2, 10 lub e