June 2, 2024, Sunday, 153

KADD 2012 Zadanie 7

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
(Zadanie)
(Zadanie)
Line 10: Line 10:
''Część pierwsza'': '''obliczanie liczby Pi''' (1 pkt.)
''Część pierwsza'': '''obliczanie liczby Pi''' (1 pkt.)
-
Należy napisać '''funkcję''', która oblicza liczbę Pi '''metodą Monte Carlo'''. W tym celu losujemy z rozkładu jednorodnego na przedziale [0,1] dwie liczby 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ć wykres trafień leżących wewnątrz oraz na zewnątrz koła:
+
Należy napisać '''funkcję''', która oblicza liczbę Pi '''metodą von Neumanna''' (jest to bodajże najprostszy przykład wykorzystania metody typu '''Monte Carlo'''). W tym celu losujemy z rozkładu jednorodnego na przedziale <code>[0,1]</code> dwie liczby <code>x</code> i <code>y</code>, 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ć wykres trafień leżących wewnątrz oraz na zewnątrz koła:
-
* Stworzyć dwa obiekty typu <code>TGraph</code> i jeden z nich wypełniać zaakceptowanymi parami (x,y), drugi zaś odrzuconymi. Oba wykresy narysować na jednym panelu.
+
* Stworzyć dwa obiekty typu <code>TGraph</code> i jeden z nich wypełniać zaakceptowanymi parami <code>(x,y)</code>, drugi zaś odrzuconymi. Oba wykresy narysować na jednym panelu.
 +
* Dodatkowo można stworzyć obiekt <code>TH1D</code> i wypełnić go zaakceptowanymi wartościami <code>x</code>.
-
''Część druga'': '''generowanie liczb pseudolosowych z dowolnego rozkładu metodą von Neumanna''' (1 pkt.)
+
''Część druga'': '''generowanie liczb pseudolosowych z dowolnego rozkładu metodą akceptacji i odrzucania von Neumanna''' (1 pkt.)
 +
 
 +
Wykorzystana tydzień temu metoda transformacji rozkładu jednorodnego z wykorzystaniem funkcji odwrotnej do dystrybuanty ma ograniczone zastosowanie. Jej zastosowanie jest możliwe tylko wtedy, gdy znana jest jawna postać dystrybuanty oraz można znaleźć funkcję do niej odwrotną. Metoda '''von Neumanna''' pozwala wygenerowanie liczb pseudolosowych, gdy znany jest tylko rozkład <code>g(y)</code>.
 +
 
 +
Należy stworzyć trzy podobne funkcje przyjmujące obiekt typu <code>TF1</code>:
== Wynik ==
== Wynik ==

Revision as of 16:23, 1 April 2012

Contents

Zadanie

Część pierwsza: obliczanie liczby Pi (1 pkt.)

Należy napisać funkcję, która oblicza liczbę Pi metodą von Neumanna (jest to bodajże najprostszy przykład wykorzystania metody typu Monte Carlo). W tym celu losujemy z rozkładu jednorodnego na przedziale [0,1] dwie liczby 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ć wykres trafień leżących wewnątrz oraz na zewnątrz koła:

  • Stworzyć dwa obiekty typu TGraph i jeden z nich wypełniać zaakceptowanymi parami (x,y), drugi zaś odrzuconymi. Oba wykresy narysować na jednym panelu.
  • Dodatkowo można stworzyć obiekt TH1D i wypełnić go zaakceptowanymi wartościami x.

Część druga: generowanie liczb pseudolosowych z dowolnego rozkładu metodą akceptacji i odrzucania von Neumanna (1 pkt.)

Wykorzystana tydzień temu metoda transformacji rozkładu jednorodnego z wykorzystaniem funkcji odwrotnej do dystrybuanty ma ograniczone zastosowanie. Jej zastosowanie jest możliwe tylko wtedy, gdy znana jest jawna postać dystrybuanty oraz można znaleźć funkcję do niej odwrotną. Metoda von Neumanna pozwala wygenerowanie liczb pseudolosowych, gdy znany jest tylko rozkład g(y).

Należy stworzyć trzy podobne funkcje przyjmujące obiekt typu TF1:

Wynik

Część pierwsza

Lab07 kolo2.png

Output:

 Liczba Pi wynosi: 3.14392