Translate

czwartek, 17 lutego 2011

4. Wprawka z całkowania za pomocą metody Monte Carlo

Metoda Monte Carlo (MC) opracowana przez Stanisława Ulama była mi znana, ale dotychczas nie używałem jej do żadnych celów. Zainteresowałem się tym zagadnieniem z powodu wielorakich zastosowań MC w obliczeniach energii i innych parametrów rozmaitych układów kwantowych. Szczególnie interesujące wydało mi się obliczanie energii poziomów energetycznych w atomach.
Aby jednak móc dobrać się do zagadnień kwantowych musiałem zrozumieć istotę całkowania za pomocą MC. W tym celu wybrałem szkolne zagadnienie obliczania powierzchni koła.
Piękno metody sprowadza się do tego, że oblicza się pole kwadratu opisanego na kole, którego pole chcemy policzyć. Pole kwadratu mnoży się przez pewien ułamek właściwy, który jest wynikiem działania procedury losowania. Wynik mnożenia daje pole koła w przybliżeniu. Dokładność przybliżenia zależy od liczby losowań oraz ich jakości.
W celu przeprowadzenia obliczeń należy znać na początku jedynie promień koła, którego pole chcemy policzyć. Z promienia łatwo obliczyć bok kwadratu opisanego i pole kwadratu.
Procedura losowania polega na losowym wyborze współrzędnych x,y wewnątrz i na brzegach kwadratu. Ze współrzędnych oblicza się promień punktu wylosowanego (pierwiastek z sumy kwadratów współrzędnych). Jeśli wylosowany punkt leży wewnątrz lub na brzegu koła, to zlicza się taki wypadek. Po wykonaniu wszystkich losowań należy sprawdzić ile razy koło zostało trafione. Pole koła dane jest wówczas wzorem:


Ponieważ należy przeprowadzić sporo losowań a ręczne obliczenia mogą nieco znużyć do sprawdzenie, czy rozumiem działanie ten metody zastosowałem programowanie komputerowe. Użyłem języka BASIC w wersji QBASIC.
Poniżej zamiesiłem kod programu i wyniki obliczeń:


Wyniki działania programu:


Idea jest genialna w swojej prostocie.

Dodatek styczeń 2020.

Trzymam się basica i dodaję program napisany w SmallBasicu, który robi to samo, ale przy większej liczbie losowań:

Wyniki obliczeń są widoczne w poniższym okienku

Brak komentarzy :

Prześlij komentarz