KADD laboratorium 7From MJanik
ZadanieCzęść pierwsza: obliczanie liczby Pi (1 pkt.) Należy napisać funkcję, która oblicza liczbę Pi metodą von Neumanna (jest sztandarowy 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:
Część druga: generowanie liczb pseudolosowych z dowolnego rozkładu metodą akceptacji i odrzucania von Neumanna (3 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). W ogólności metoda działa nawet wtedy, gdy funkcja g(y) nie jest rozkładem gęstości prawdopodobieństwa (całka z niej nie wynosi 1). Pozwala to na bardzo szerokie wykorzystanie metody von Neumanna - przede wszystkim do obliczania całek oznaczonych ze skomplikowanych funkcji, gdy ich analityczne scałkowanie jest niemożliwe. Metody tego typu noszą nazwę wspomnianych wcześniej metod Monte Carlo. Należy stworzyć trzy bardzo podobne funkcje przyjmujące obiekt typu
Część trzecia: metoda akceptacji i odrzucania von Neumanna z funkcją pomocniczą (1 pkt.) W celu zwiększenia wydajności metody von Neumanna, można posłużyć się ograniczeniem przedziału losowania w postacji zadanej funkcji pomocniczej. W tej części zaimplementować funkcję, która oblicza całkę z funkcji g(y) metodą akceptacji i odrzucania von Neumanna z funkcją pomocniczą s(y):
Funkcję s(y) dobieramy tak, by zawsze znajdowała się powyżej funkcji g(y) i można z niej było łatwo wygenerować liczbę pseudolosową (na przykład metodą transformacji rozkładu jednorodnego z wykorzystaniem odwrotności dystrybuanty; na wykładzie przykład z funkcją liniową). Wszystkie obliczenia należy wykonać dla funkcji typu:
Uwagi
WynikCzęść pierwsza Output: Liczba Pi wynosi: 3.14392 Części druga i trzecia Output: Calka: 0.199 Wydajnosc: 0.2072 Calka (metoda z funkcja pomocnicza): 0.198745 Wydajnosc (metoda z funkcja pomocnicza): 0.39749 Calka liczona metoda Integral: 0.198652 |