May 1, 2025, Thursday, 120

KADD laboratorium 7

From MJanik

(Difference between revisions)
Jump to: navigation, search
(Created page with " {| align="right" | __TOC__ |} Standardowa metoda generacji liczb losowych przez funkcję odwrotną ma ogreaniczone zastosowanie. Można jej uzywać tylko w przypadku, gdy ...")
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

Contents


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ą