Wprowadzenie do metod numerycznych Wykład 13 Metody statystyczne Polsko-Japońska Wyższa Szkoła Technik Komputerowych Katedra Informatyki Stosowanej
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin. For, as has been pointed out several times, there is no such thing as a random number there are only methods to produce random numbers, and a strict arithmetic procedure of course is not such a method. JOHN VON NEUMANN, 1951
Prawdopodobieństwo ilościowy opis niepewności (losowości). Ciąg liczb losowych ciąg, który nie może być opisany żadnym określonym wzorcem. Losowy ciąg znaków taki ciąg, którego nie można zapisać za pomocą algorytmu w postaci krótszej od samego ciągu.
Wykorzystanie liczb losowych reprezentatywne badania statystyczne - losowanie z populacji (np. kontrola jakości produktów, badania ekonomiczne i społeczne); planowanie eksperymentu (np. podział poletek doświadczalnych dla celów porównawczych); symulacyjne badania procesów stochastycznych (np. symulacja procesów technicznych poddanych wymuszeniom losowym); probabilistyczne modele w problemach deterministycznych - metody Monte Carlo (np. przybliżone obliczanie całek wielowymiarowych, szukanie minimum funkcji, algorytmy genetyczne, itd.);
Wykorzystanie liczb losowych kryptografia (zastosowania militarne, w dyplomacji, w telekomunikacji, sieciach komputerowych); gry komputerowe, gry strategiczne, automaty do gier; budowanie modeli (np. fraktale losowe); inne.
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Tablice liczb losowych 1927 - L.H.Tippett, Random Sampling Numbers, 41600 cyfr, ze spisu powszechnego, powierzchnie parafii, po odrzuceniu dwóch pierwszych i dwóch ostatnich cyfr z każdej liczby 1939 - R.A.Fisher, F.Yates, 15000 cyfr, wypisanie cyfr od 15 do 19 z pewnych 20-cyfrowych tablic logarytmicznych 1939 - Kendall, Babington Smith, 100000 cyfr losowo uzyskanych za pomocą elektrycznej ruletki - wirującego dysku z oznaczeniami cyfr 0, 1,..., 9. 1951 - E.Vielrose (dla GUS), na podstawie pasków do drukujących maszyn liczących, z liczb co najmniej czterocyfrowych skreślano jedną cyfrę końcową i dwie początkowe, wykreślano niektóre kolumny. 1955 - RAND Corporation, 1000000 cyfr. Zbudowano źródło 100000 impulsów/sekundę. Impulsy odczytywano paczkami pięciobitowymi otrzymując liczby z przedziału [0, 31]. Zachowywano liczby z przedziału [0, 19] i zapisywano ich młodszą cyfrę dziesiętną. (Tablice cyfr losowych oferowano także na kartach perforowanych).
Tablice liczb losowych 1 Wybrać losowo liczbę pięciocyfrową z tablicy. 2 Zredukować pierwszą cyfrę tej liczby modulo 2 - zmodyfikowana liczba pięciocyfrowa wskaże numer wiersza w tablicy. 3 Zredukować dwucyfrową końcówkę tej liczby modulo 50 otrzymana liczba dwucyfrowa wskaże numer kolumny w tablicach. 4 Rozpocząć ciąg losowy od wskazanej pozycji w tablicy.
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
generatory fizyczne (moneta, urna z kulami, kostka do gry, ruletka, itd.) zliczanie impulsów promieniowania jądrowego (dobry generator rozkładu Poissona lub wykładniczego); zliczanie impulsów elektronicznych, np. sygnałów z dysku komputera, wskaźnika myszy, szumów, itp.; pobieranie losowych bitów z arytmometru komputera lub z klawiatury; algorytmy matematyczne generowania liczb pseudolosowych - generatory programowe (rozkład równomierny lub dwupunktowy); Wynik algorytmu matematycznego ciąg liczb pseudolosowych dla osoby nieznającej metody generowania niemożliwy do odróżnienia od ciągu liczb losowych (za pomocą testów statystycznych).
Rozkład równomierny Dla rozkładu ciągłego zmiennej losowej x (a, b), gdzie b a = h > 0, rozkład równomierny określony jest funkcją postaci: { 1 dla x (a, b) P(x) = h 0 dla x / (a, b) Wartość przeciętna rozkładu równomiernego wynosi h/2.
Rozkład równomierny Rys. 1: Rozkład równomierny
Związki między rozkładami prawdopodobieństwa Rys. 2: Związki między rozkładami prawdopodobieństwa
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Generator liniowy i afiniczny Generator liniowy ma postać a generator afiniczny X n+1 = g X n mod M, X n+1 = a X n + b mod M, gdzie n = 1, 2,... oraz g, a, b < M. Okres tych generatorów zależy od wartości parametrów powyższych równań kongruencyjnych. Wadą generatorów liniowych jest ich przewidywalność, to znaczy układanie się punktów o współrzędnych (X n+1, X n ) w postaci pasów.
Uogólniony generator liniowy X n = a 1 X n 1 +... + a k X n k + b mod M dla pewnych stałych osiąga maksymalny okres M, bardziej złożona zależność dla badania przewidywalności. Kwadratowy generator kongruencyjny X n+1 = a X 2 n + b X n + c mod M maksymalny okres M.
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Metoda odwracania dystrybuanty Rozkłady ciągłe takie, które przyjmują wartości w zbiorze zawierającym odcinek [a, b]. F dystrybuanta pewnego rozkładu prawdopodobieństwa. Jeśli X i, i = 1, 2,... ciąg niezależnych zmiennych losowych o rozkładzie równomiernym na odcinku [0, 1], to ciąg Y i = F 1 (X i ), i = 1, 2,... jest ciągiem niezależnych zmiennych losowych o rozkładzie zadanym dystrybuantą F.
Przykład 1: rozkład wykładniczy F (x) = 1 e x Wówczas i ciąg F 1 (y) = ln(1 y) Y i = ln(1 X i ) jest ciągiem niezależnych zmiennych losowych o rozkładzie wykładniczym.
Przykład 2: rozkład normalny Przybliżone wyrażenie dla dystrybuanty rozkładu normalnego z użyciem wyrażenia przybliżonego dla funkcji błędu erf erf(t) = 1 (a 1 z + a 2 z 2 + a 3 z 3 + a 4 z 4 + a 5 z 5 ) exp( z 2 ) + ε(z), gdzie 1 z = 1 + p t, ε(z) 1.5 10 7
Przykład 2: rozkład normalny oraz ponadto p = 0.3275911, a 1 = 0.2548295921, a 2 = 0.284496736, a 3 = 1.421413741, a 4 = 1.453152027, a 5 = 1.061405429. (dokładność rzędu 10 7 dla wszystkich x [0, )).
Ta metoda całkowania jest używana w przypadkach, kiedy szybkość otrzymania wyniku jest ważniejsza od jego dokładności (np. obliczenia inżynierskie).
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Pole powierzchni pod sinusoidą Rys. 3: Obliczanie pola powierzchni pod sinusoidą: x [ π, π]
Pole powierzchni pod sinusoidą Na rys. 3. widzimy wykres funkcji y = sin(x) dla x [ π, π] Wykres ten jest wpisany w prostokąt o długości 2π i wysokości h nieco większej niż 2. Wrzucamy teraz losowo do tego rysunku punkty, ale tak, aby wpadały do prostokąta. Gdy uznamy, że wrzuciliśmy już wystarczająco dużo punktów, to je zliczamy: jaka jest liczba punktów pomiędzy osią Ox a krzywą i jaka jest liczba punktów w całym prostokącie.
Pole powierzchni pod sinusoidą Wiemy, że pole prostokąta wynosi 2π h. Punkty były rzucane całkowicie przypadkowo, więc liczba tych punktów w danej figurze geometrycznej jest proporcjonalna do pola powierzchni tej figury. Mamy zatem, iż N n = S pr S sin S sin = 2π h n N, (1) gdzie N liczba punktów w całym prostokącie, n liczba punktów pod krzywą, S pr pole powierzchni prostokąta, S sin pole powierzchni pod krzywą. Aby policzyć numerycznie wartość tego pola pod krzywą, musimy poznać wartość liczby π. Jaka to wartość? na to pytanie uzyskamy odpowiedź w następnym podrozdziale.
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Rys. 4: Wyznaczanie wartości liczby π metodą Monte Carlo
Do wyznaczenia wartości liczby π można zastosować technikę zastosowaną powyżej, czyli skorzystać jeszcze raz z metody Monte Carlo. Wpisujemy w kwadrat o boku 2r koło o promieniu r = 1 (rys. 4), czyli figurę geometryczna zadaną równaniem x 2 + y 2 r 2 = 1 Pole powierzchni koła wynosi więc S o = π r 2 = π
1 Losujemy n punktów z opisanego na tym kole kwadratu o współrzędnych wierzchołków ( 1, 1), ( 1, 1), (1, 1), (1, 1). 2 Po wylosowaniu każdego z tych punktów trzeba sprawdzić, czy jego współrzędne spełniają powyższą nierówność (tj. czy punkt należy do koła). Wynikiem losowania jest informacja, że z n wszystkich prób k było trafionych, zatem pole koła wynosi Mamy zatem π = P k n. (2) gdzie P jest polem kwadratu opisanego na kole (tutaj P = 2 2 = 4).
Przykład obliczania wartości liczby π #include <iostream> #include <cmath> #include <cstdlib> using namespace std; int main() { int n; int nk = 0; double x,y; float s; cout << "Podaj liczbe losowanych pkt:" << endl; cin >> n; for(int i = 1; i <= n; i++) { x = ((double)rand() / (RAND_MAX)) * 2-1; y = ((double)rand() / (RAND_MAX))*2-1; if(x*x + y*y <= 1) { nk++; } } } cout << "Liczba pkt. w kole wynosi: " << nk << endl; cout << "Liczba pkt. w kwadracie wynosi: " << n << endl; s = 4 * (double)nk / n; cout << "Liczba pi wynosi: " << s;
Dokładność metody Monte Carlo Dokładność wyniku uzyskanego tą metodą jest zależna od liczby sprawdzeń i jakości użytego generatora liczb pseudolosowych. Należy pamiętać, że zwiększanie liczby prób nie zawsze zwiększa dokładność wyniku, ponieważ generator liczb pseudolosowych generuje na ogół cykliczne liczy losowe.
Poprawność metody Monte Carlo Poprawność metody Monte Carlo w przypadku liczenia pól lub całek można udowodnić stosując twierdzenie Picka (lub jego wielowymiarowe uogólnienia) do najlepszego wielokąta wpisanego w figurę, której pole chcemy obliczyć w przybliżeniu tzw. kryształu wirtualnego, tzn. regularnej siatki punktów o stałej sieci równej średniej odległości między wylosowanymi punktami. W nieskończonej granicy tych wielokątów i siatek metoda jest dokładna dla dowolnego kształtu.
Twierdzenie Georga Alexandra Picka (1899) Jeśli wierzchołki spójnego wielokąta znajdują się w punktach regularnej kwadratowej sieci na płaszczyźnie, to pole wielokąta jest równe: S W = W + 1 2 B 1 gdzie W liczba punktów kraty leżących wewnątrz wielokąta, B liczba punktów kraty leżących na brzegu wielokąta.
Twierdzenie Picka Rys. 5: Liczenie pola wielokąta
Twierdzenie Picka Dla wielokąta na rysunku 5 mamy: W = 39, B = 14 i z twierdzenia Picka P = 39 + 7 1 = 45 Należy pamiętać, że powyższy wzór jest prawdziwy jedynie dla wielokątów jednospójnych (złożonych z jednego kawałka i bez dziur). W ogólnym przypadku 1 we wzorze należy zastąpić przez χ(p), gdzie χ(p) charakterystyka Eulera wielokąta P. Twierdzenie to zostało po raz pierwszy opisane przez Georga Alexandra Picka w 1899. Można je uogólnić na przestrzeń trzy i więcej wymiarową przez wielomiany Ehrharta.
Zaproponowana tu metoda nie ma oczywiście dużego praktycznego znaczenia, ale obrazuje alternatywny sposób myślenia, by zamiast przeprowadzać skomplikowane obliczenia, lepiej i szybciej jest zastosować metodę Monte Carlo. Jeśli chodzi zaś o obliczanie całek, to swą przewagę nad innymi metodami pokazuje dopiero przy obliczaniu objętości skomplikowanych wielowymiarowych figur.
Spis treści 1 2 Generowanie ciągów liczb losowych na podstawie tablicy cyfr losowych 3 4
Mamy równanie nieliniowe jednej zmiennej f (x) = 0 posiadające dokładnie jeden pierwiastek x 0 w przedziale (a, b). Funkcja f (x) jest ciągła na [a, b]. Jeśli jest tylko jeden pierwiastek, to f (a) f (b) < 0
Sprawdzenie, czy wylosowany punkt x leży po lewej czy po prawej stronie pierwiastka x 0, polega na sprawdzeniu znaku iloczynu f (a) f (x), co pozwala na zawężeniu obszaru poszukiwań do przedziału [a 1, b 1 ], gdzie a 1 = x i b 1 = b gdy f (a) f (x) > 0 a 1 = a i b 1 = x gdy f (a) f (x) < 0 Postępowanie to powtarzamy wielokrotnie.
Losowane punkty x zmiennej losowej X mają rozkład równomierny na przedziale [a, b], czyli gęstość g(x) dla k-tej iteracji ma postać 0 dla x < a k 1 1 g(x) = dla a k 1 x b k 1 b k 1 a k 1 0 dla x > b k 1
Dla każdego nowego przedziału [a k, b k ] zawierającego poszukiwany pierwiastek x 0 obliczamy długość przedziału d = a k b k. Jeśli d < ε z góry przyjęta dokładność obliczeń, to x 1 = a k + b k 2 Popełniony błąd x 1 x 0 < ε gdzie x 0 prawdziwa wartość pierwiastka, x 1 przybliżona wartość pierwiastka.
1 Białynicki-Birula I., Białynicka-Birula I., Modelowanie rzeczywistości, Prószyński i S-ka, Warszawa, 2002 2 Wieczorkowski R., Zieliński R., Komputerowe generatory liczb losowych, WNT, Warszawa, 1997 3 Ulam S., Przygody matematyka, Prószyński i S-ka, Warszawa, 1996 4 Kotulski Z., (rękopis) 5 Kotowski R., Tronczyk P., Modelowanie i symulacje komputerowe, Wydawnictwo UKW, Bydgoszcz, 2009 6 Demidowicz B.P., Maron I.A., Metody numeryczne cz. I, PWN, Warszawa, 1965 7 Kącki E., Małolepszy A., Romanowicz A., Metody numeryczne dla inżynierów, Wyższa Szkoła Informatyki w Łodzi, Łódź, 2005 8 Vetterling W.T., Teukolsky S.A., Press W.H., Flannery B.P., Numerical Recipes, Cambridge University Press, 2003 9 Wikipedia
Koniec? :-( Koniec wykładu 13