From MJanik
(Difference between revisions)
|
|
Line 2: |
Line 2: |
| | __TOC__ | | | __TOC__ |
| |} | | |} |
| + | |
| + | |
| + | == Zadanie == |
| + | |
| + | '''Metody Monte Carlo''' |
| + | [http://pl.wikipedia.org/wiki/Metoda_Monte_Carlo Wikipedia Metoda Monte Carlo] |
| + | |
| + | Należy napisać ''funkcję'' która oblicza liczbę Pi Metodą Monte Carlo. W tym celu losujemy dwie liczby z rozkładu jednorodnego [0,1], x i y, i sprawdzamy, czy wylosowana para mieści się wewnątrz koła o promieniu 1. Następnie używając stosunku par zaakceptowanych (mieszczących się wewnątrz) do odrzuconych (tych, które leżą poza okręgiem) oraz wzoru na pole koła należy obliczyć liczbę Pi. Ponadto należy narysować dwa wykresy: |
| + | * Liczbami zaakceptowanymi (x) należy wypełnić histogram <code>TH1D</code> oraz go narysować. |
| + | * Stworzyć dwa obiekty typu <code>TGraph2D</code> i jeden z nich wypełniać zaakceptowanymi parami (x,y) a drugi odrzuconymi parami. Przydzielić im dwa różne kolory punktów. Następnie należy narysować oba te obiekty na jednym panelu. |
| + | |
| + | |
| + | '''Metoda akceptacji i odrzucania von Neumana''' |
| | | |
| Standardowa metoda generacji liczb losowych przez funkcję odwrotną | | Standardowa metoda generacji liczb losowych przez funkcję odwrotną |
Line 8: |
Line 21: |
| odwrotnej. | | odwrotnej. |
| | | |
- | Gdy znana jest tylko gęstość prawdopodobieństwa <code>g(y)</code> | + | Gdy znana jest tylko gęstość prawdopodobieństwa <code>g(y)</code> stosujemy metodę von Neumanna. |
- | stosujemy metodę von Neumanna. | + | |
| | | |
- | == Zadanie ==
| + | * Należy zaimplementować funkcję, która generuje liczby losowe z dowolnego rozkładu reprezentowanego przez obiekt TF1. |
- | Celem zadania jest zaimplementowanie funkcji, która generuje liczby losowe z dowolnego rozkładu reprezentowanego przez obiekt TF1. Losowanie należy wykonać za pomocą metody akceptacji i odrzucania '''von Neumana'''. Zaimplementowana funkcja powinna dodatkowo zwracać informację o efektywności metody (1 pkt):
| + | Losowanie należy wykonać za pomocą metody akceptacji i odrzucania. Funkcja powinna losować punkt z rozkladu reprezentowanego przez obiekt f, w granicach od min do max: |
- | // Funkcja losuje n punktow z rozkladu reprezentowanego przez obiekt f | + | |
- | // metoda akceptacji i odrzucania von Neumana
| + | <code> double losujVonNeuman(TF1 *f, int min, int max);</code> |
- | // f - gestosc z ktorej losujemy punkty
| + | |
- | // n - liczba losowanych punktow
| + | * Należy zaimplementować funkcję, która oblicza wydajność metody von neumanna dla zadanej funkcji f, w granicach od min do max, dla losowej próbki n punktów. |
- | // points - wskaznik na tablice o wymiarze n gdzie beda umieszczone wylosowane punkty
| + | |
- | // Funkcja zwraca wskaznik informujacy o efektywnosci metody tj.
| + | <code> double wydajnoscVonNeuman(TF1 *f, int min, int max, int n);</code> |
- | // (liczba zaakceptowanych punktow)/(liczba wszystkich wylosowanych punktow)
| + | |
- | <code> double losujVonNeuman(TF1 *f, int n, double *points);</code>
| + | |
| | | |
- | Napisaną funkcję losującą następnie należy wykorzystać do zaimplementowania funkcji obliczającej całkę typu:
| + | '''Metoda akceptacji i odrzucania von Neumana z funkcją pomocniczą''' |
Revision as of 11:36, 29 March 2012
Zadanie
Metody Monte Carlo
Wikipedia Metoda Monte Carlo
Należy napisać funkcję która oblicza liczbę Pi Metodą Monte Carlo. W tym celu losujemy dwie liczby z rozkładu jednorodnego [0,1], x i y, i sprawdzamy, czy wylosowana para mieści się wewnątrz koła o promieniu 1. Następnie używając stosunku par zaakceptowanych (mieszczących się wewnątrz) do odrzuconych (tych, które leżą poza okręgiem) oraz wzoru na pole koła należy obliczyć liczbę Pi. Ponadto należy narysować dwa wykresy:
- Liczbami zaakceptowanymi (x) należy wypełnić histogram
TH1D
oraz go narysować.
- Stworzyć dwa obiekty typu
TGraph2D
i jeden z nich wypełniać zaakceptowanymi parami (x,y) a drugi odrzuconymi parami. Przydzielić im dwa różne kolory punktów. Następnie należy narysować oba te obiekty na jednym panelu.
Metoda akceptacji i odrzucania von Neumana
Standardowa metoda generacji liczb losowych przez funkcję odwrotną
ma ogreaniczone zastosowanie. Można jej uzywać tylko w przypadku,
gdy dystrybuanta jest znana i możliwe jest znalezienie jej funkcji
odwrotnej.
Gdy znana jest tylko gęstość prawdopodobieństwa g(y)
stosujemy metodę von Neumanna.
- Należy zaimplementować funkcję, która generuje liczby losowe z dowolnego rozkładu reprezentowanego przez obiekt TF1.
Losowanie należy wykonać za pomocą metody akceptacji i odrzucania. Funkcja powinna losować punkt z rozkladu reprezentowanego przez obiekt f, w granicach od min do max:
double losujVonNeuman(TF1 *f, int min, int max);
- Należy zaimplementować funkcję, która oblicza wydajność metody von neumanna dla zadanej funkcji f, w granicach od min do max, dla losowej próbki n punktów.
double wydajnoscVonNeuman(TF1 *f, int min, int max, int n);
Metoda akceptacji i odrzucania von Neumana z funkcją pomocniczą