Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 2 Generator liczb losowych o rozkładzie gamma. Laboratorium Metod Analizy Danych Doświadczalnych Instytutu Fizyki PŁ Ćwiczenie 2 Generator liczb losowych o rozkładzie gamma. 1. Cel ćwiczenia Celem tego ćwiczenia jest opracowanie generatora liczb pseudolosowych [1] podlegających rozkładowi gamma. W ramach tego ćwiczenia należy napisać program w dowolnym języku programowania i dla dowolnego systemu operacyjnego, program ten ma generować liczby pseudolosowe (ich ilość należy programowi zadawać, nie powinna być ona większa niż 500) dla zadanych parametrów rozkładu, następnie przeprowadzać dla wygenerowanych liczb dwa dowolne testy losowości oraz zapisywać te liczby do zbioru tekstowego w formie kolumny liczb. Można zastosować dowolną z metod opisanych np. w pracach [1] i [2]. Do sprawozdania należy dołączyć plik źródłowy programu, plik wykonywalny programu, niestandardowe biblioteki użyte przy kompilacji programu oraz cztery zestawy danych dla których przeprowadzono testy losowości (wyniki tych testów i histogramy sporządzone dla tych zbiorów oraz wypływające z nich wnioski muszą się znaleźć w sprawozdaniu). 2. Wstęp Zmienna losowa X podlega rozkładowi gamma z parametrami α i λ oraz dolnym kresem gęstości prawdopodobieństwa ao , jeżeli gęstość jej rozkładu prawdopodobieństwa wyraża się wzorem: ⎧ λα α −1 − λ ( x − ao ) x − ao ) e dla x > a o ( ⎪ f ( x ) = ⎨ Γ (α ) ⎪ dla x ≤ a o ⎩0 gdzie α > 0, λ >0 natomiast funkcja Γ(α) jest funkcją gamma Eulera, która dla argumentów dodatnich wyrażona jest wzorem: Γ(α ) = +∞ ∫x α −1 − x e dx 0 Wartość przeciętna zmiennej losowej X jest równa: α x= λ zaś wariancja tej zmiennej losowej jest równa: σ= 2 α λ2 Laboratorium Metod Analizy Danych Doświadczalnych Instytutu Fizyki PŁ Ćwiczenie 2 3. Metoda generowania i testowania rozkładu Jest wiele sposobów generowania liczb losowych o rozkładzie gamma, jednym z nich jest następująca metoda: między zmienną losową X1 o gęstości prawdopodobieństwa opisanej powyższą zależnością a zmienną losową X2, o uproszczonym rozkładzie gamma z gęstością: ⎧ 1 α −1 − x x e dla x > 0 ⎪ f 2 ( x ) = ⎨ Γ(α ) ⎪0 dla x ≤ 0 ⎩ zachodzi związek: 1 X1 = X 2 + ao λ Ze względu na to program generuje najpierw zmienną o rozkładzie z gęstością f2, po czym stosując powyższą zależność uzyskuje zmienną o poszukiwanym rozkładzie f. W dalszej części opisu metody określenie „rozkład gamma” oznaczać będzie „rozkład gamma z gęstością prawdopodobieństwa f2”. Dalej korzystamy z własności addytywności tzn. z faktu, że jeżeli zmienne losowe XA i XB są niezależne i mają rozkłady gamma z parametrami kolejno αA i αB, to zmienna losowa XA + XB ma rozkład gamma z parametrem αA + αB. W związku z tym zmienną losową X można przedstawić w postaci X = XI + XII,, gdzie XI ma rozkład gamma z całkowitym parametrem αI, będącym częścią całkowitą parametru α, natomiast XII ma rozkład gamma z parametrem αII = α -αI,. Aby wygenerować zmienną losową XI, należy również skorzystać z własności addytywności oraz z faktu, że rozkład gamma z parametrem α = 1 jest rozkładem wykładniczym. W związku z tym aby otrzymać zmienną losową o rozkładzie gamma z całkowitym parametrem α wystarczy wygenerować α niezależnych zmiennych losowych o rozkładzie wykładniczym i obliczyć ich sumę. Zmienne losowe o rozkładzie wykładniczym generuje się metodą odwracania dystrybuanty Po uproszczeniu można otrzymać poniższy związek: α X I = ln ∏ Ri i =1 gdzie Ri są kolejnymi niezależnymi zmiennymi losowymi o rozkładzie równomiernym na przedziale (0,1) Przy generowaniu zmiennej losowej XII należy skorzystać z następującego faktu: jeżeli zmienna losowa XA ma rozkład gamma z parametrem α +β , zmienna XB ma rozkład beta z parametrami (α ,β ) i zmienne te są niezależne, to zmienna losowa XII = XAXB ma rozkład gamma z parametrem α, dla dowolnego β. W tym celu zmienna XII została przedstawiona jako iloczyn zmiennych XIII i XIV, gdzie XIII ma rozkład gamma z parametrem 1 (rozkład wykładniczy) natomiast XIV - rozkład beta z parametrami (αII, 1-αII). Aby wygenerować zmienną losową XIV, należy skorzystać z poniższego algorytmu: 1) Wygenerować zmienną losową U o rozkładzie potęgowym z parametrem αII. 2) Wygenerować zmienną losową V o rozkładzie potęgowym z parametrem 1-αII. 3 Laboratorium Metod Analizy Danych Doświadczalnych Instytutu Fizyki PŁ Ćwiczenie 2 3) Jeśli U+V>1 powtórzyć operacje 1) i 2). W przeciwnym przypadku obliczyć XIV ze wzoru: U X IV = U +V Wygenerowany przez program zbiór liczb podlega dwóm dowolnym testom na losowość, mogą to być na przykład test serii oraz test graficzny. W teście serii aby określić czy serie występujące w zbiorze są losowe należy obliczyć wartość średnią, a następnie wszystkim wartością nie większym niż średnia przyporządkować znak minus, a większym znak plus. Ilość serii Nob. jest równa liczbie zmian znaku powiększonej o 1. Przewidywana ilość serii w zbiorze n liczb losowych dana jest wzorem: 1 N sp = (2n − 1) 3 odchylenie standardowe dla liczby serii jest równe: (16n − 29) S= 90 Obliczamy stosunek: r= N ob − N sp S Jeżeli r < rkr zbiór wygenerowanych licz przeszedł test pomyślnie, jako rkr możemy przyjąć wartość odczytaną z tablic lub dla zgrubnego oszacowania wartość 2. Test graficzny przeprowadzamy w następujący sposób: w układzie współrzędnych XY zaznaczamy punkty, których współrzędnymi są kolejne liczby (Zi, Zi+1) wygenerowane przez program. Jeżeli punkty te są rozmieszczone równomiernie w kwadracie o wierzchołkach (Zmin, Zmin), (Zmax, Zmin), (Zmax,Zmax) i (Zmin, Zmax) to zbiór wygenerowanych liczb świadczy o tym, że rozkład liczb jest równomierny, w przypadku innych rozkładów zestaw przechodzi pozytywnie test jeśli zachowana jest symetria względem środka tak powstałego kwadratu. 4. Sprawozdanie W sprawozdaniu przygotowanym w formie elektronicznej lub papierowej nie zamieszczamy całości lub fragmentów listingu programu, program źródłowy powinien być natomiast dobrze opisany za pomocą komentarzy. W sprawozdaniu nie zamieszczamy liczb otrzymanych za pomocą generatora oraz tablic z których korzystamy w ewentualnym teście losowości, natomiast powinna znaleźć się informacja w postaci odnośnika literaturowego do tychże. W sprawozdaniu powinny koniecznie znaleźć się poniższe elementy: 4.1. Wstęp teoretyczny Wstęp teoretyczny powinien zawierać podstawowe informacje na temat generatorów liczb losowych oraz metody zastosowanej do otrzymania rozkładu będącego przedmiotem 4 Laboratorium Metod Analizy Danych Doświadczalnych Instytutu Fizyki PŁ Ćwiczenie 2 tego ćwiczenia. Powinny w nim się znaleźć wszystkie wzory stosowane w programie wraz z objaśnieniami wielkości w nich występujących. 4.2. Dane techniczne Dane techniczne powinny zawierać spis plików programu oraz plików z testowanymi danymi taki jak w poniższym przykładzie: Przykład Plik: Rozmiar: Opis: GenNorm.exe 64 kB Plik wykonywalny. Do skompilowania programu wykorzystaliśmy kompilator Borland C++ Version 3.1 . Program należy uruchamiać w systemie MSDOS lub w systemach Windows 3.1/3.11/9x. GenNorm.cpp GenNorm.obj hist.h N01.txt 11 kB 27 kB 7 kB 1,2 kB N03.txt 600 B N31.txt 0,3 kB N32.txt 282 B Plik z kodem źródłowym programu. Plik z zapisanymi bibliotekami. Biblioteka obliczająca i wyświetlająca histogram. Plik tekstowy z przykładowymi liczbami losowymi z rozkładu N(0,1). Ilość liczb n = 100. Plik tekstowy z przykładowymi liczbami losowymi dla rozkładu N(0,3). Ilość liczb n = 50. Plik tekstowy z przykładowymi liczbami losowymi dla rozkładu N(3,1). Ilość liczb n = 20. Plik tekstowy z przykładowymi liczbami losowymi dla rozkładu N(3,2). Ilość liczb n = 20. 4.2. Instrukcja obsługi programu W sprawozdaniu należy umieścić instrukcję obsługi programu pozwalającą na wygenerowanie liczb przez osobę nie znającą programu i przebiegu testów. Powinien się tu znaleźć opis formatu zbioru danych zapisywanych przez program oraz objaśnienia komunikatów wyświetlanych przez program. Przykład: W przypadku prawidłowego zostanie wyświetlony komunikat: wczytania danych Dane zostaly pomyslnie wczytane W pliku n_pliku.txt znajduje się n liczb W przypadku gdy wystąpi błąd podczas zapisywania danych, zostanie wyświetlony komunikat: Nie mogę utworzyć pliku” i nastąpi zamknięcie programu. 4.5.Wnioski 5 Laboratorium Metod Analizy Danych Doświadczalnych Instytutu Fizyki PŁ Ćwiczenie 2 W sprawozdaniu należy zamieścić wyniki testowania programu na podstawie co najmniej czterech wygenerowanych zbiorów liczb pseudolosowych, przygotowanych za pomocą generatora. Na podstawie tych wyników testowania należy wysnuć wnioski na temat przydatności i zakresu stosowalności generatora oraz funkcjonalności Państwa programu. 4.6. Literatura Spis literatury wykorzystanej przy opracowywaniu sprawozdania oraz pisaniu i testowaniu programu. 5. Literatura [1] R. Zieliński, Generatory liczb losowych, WNT, Warszawa 1979. [2] R. Wieczorkowski, R. Zieliński.: Komputerowe generatory liczb losowych, WNT, Warszawa 1997. 6