Dr. Michael O. Distler distler@kph.uni-mainz.de Mainz, 16. November 2009
2. Monte Carlo-Methoden 2.1 Zufallszahlen - Warum? 2.2 Zahlendarstellung im Rechner 2.3 Generatoren 2.3.1 Linear kongruente Generatoren (LCG) 2.3.2 Multiplikativ linear kongruente Generatoren (MLCG) 2.3.3 Kombination mehrerer MLCGs
2.4. Qualität von Generatoren 2.4.1 Spektraltest Bilde Paare aus benachbarten Zahlen (x j, x j+1 ) j = 0, 1,..., n 1 Darstellung als Punkte in einem 2dim kartesischen Koordinatensystem: a = 3, m = 7 : 1, 3, 2, 6, 4, 5, 1,... (1, 3), (3, 2), (2, 6), (6, 4), (4, 5), (5, 1) Punkte eines MLCG bilden regelmäßiges Gitter. Warum? Im Wertebereich 0 x j < m gibt es m 2 Zahlenpaare. MLCG liefert aber nur m 1 Zahlenpaare
Beispiele: Spektraltest 6 a=3 m=7 5 4 x i+1 3 2 1 0 0 1 2 3 4 5 6 x i
Beispiele: Spektraltest 90 a=29 m=97 80 70 60 x i+1 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 x i
Beispiele: Spektraltest 90 a=23 m=97 80 70 60 x i+1 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 x i
Beispiele: 1 Spektraltest a=29 m=97 0.8 0.6 x i+1 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 x i
Beispiele: 1 Spektraltest a=23 m=97 0.8 0.6 x i+1 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 x i
Umrechnung auf Gitter 0 x j m < 1. Voll besetztes Gitter hat Linienabstand d = 1 m Unser Gitter hat bei gleichmäßiger Verteilung bestenfalls: d m 1/2 für 2 Dimensionen Ungleichmäßige Abstände: d m 1/2 Theoretische Überlegungen liefern obere Grenzen für die kleinstmöglichen Gitterabstände in t Dimensionen: d t d t = c t m 1/t c 2 = 4 3/4, c 3 = 6 1/2, c 4 = 4 1/2, c 5 = 2 0,3
2.4.2 Test auf gleichmäßige Verteilung Das Intervall [0, 1] wird in k gleiche Unterintervalle der Länge 1/k unterteilt. N Zufallszahlen werden erzeugt. N i fallen in das Unterintervall i. k Ni = N, N i = N k, (N i N/k) 2 = χ 2 N/k i=1 sollte einer χ 2 -Verteilung mit (k 1) Freiheitsgraden folgen.
2.4.3 Sequenz-(up-down-)Test Vergleiche x i und x i+1 { 1 für xi < x Erzeuge Bitfolge mit i+1 0 für x i > x i+1 Zähle die Folgen von Nullen und Einser der Länge k: N(k) N k N(k) = N für N + 1 Zufallszahlen k=1 Für unkorrelierte Zufallszahlen erwartet man: N(1) = 5N+1 12 N(2) = 11N 14 60 N(3) = 19N 47 360 N(k) = (k 2 +3k+1)N (k 3 +3k 2 k 4) (k+3)!/2 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 1 2 2 2 2 3 N(1) = 5 (6,75) N(2) = 4 (2,75) N(3) = 1 (0,58)
2.4.4 Random Walk-Test Wähle ein kleine Zahl 0 < α 1. Bilde eine große Zahl von Zufallszahlen und registriere die Zahl r der Fälle, in denen eine Zufallszahl kleiner α erscheint. Man erwartet eine Binomialverteilung für r mit p = α. Diese Test sollte auch gemacht werden für Zufallszahlen, die größer als (1 α) sind.
2.4.5 Lücken-(gap)Test Wähle zwei Zahlen 0 α < β 1. Erzeuge (r + 1) Zufallszahlen im Intervall [0, 1]. Die Wahrscheinlichkeit, dass die ersten r Zahlen ausserhalb des Intervalls (α, β) liegen und die (r + 1)ste innerhalb, sollte sein: P r = p (1 p) r
2.4.6 Collision-Test Teile das Intervall [0, 1) in d gleiche Segmente. Teile entsprechend [0, 1) t in k = d t Hyperkuben. Erzeuge n zufällige Punkte in [0, 1) t. Wir definieren eine neue Zufallsvariable C, in dem wir zählen, wie oft wir eine Zahl in eine Hyperkubus füllen, der schon besetzt ist. Wir erwarten für C eine Poisson-Verteilung um den Mittelwert: λ C = n2 (k groß) 2k
2.4.7 Birthday-Spacing-Test Teile den Wertebereich in k gleich Intervalle (Hyperkuben). Definiere eine Ordnungsfunktion für die Zellen, damit für die gefüllten Zellen gilt: I (1) I (2)... I (n) Definiere den Abstand S j = I (j+1) I (j) j = 1,..., n 1. Die neue Zufallsvariable Y zählt die Fälle (Kollisionen), für die gilt: S (j+1) = S (j). Wir erwarten für Y eine Poisson-Verteilung um den Mittelwert: λ Y = n3 (k groß) 4k Der Name stammt von dem Geburtstagsparadoxon (n Personen, das Jahr hat k Tage). http://www.iro.umontreal.ca/~lecuyer/myftp/ papers/wsc01rng.pdf
2.5 Zufallszahlen für beliebige Verteilungen 2.5.1 Kontinuierliche Zufallsvariable f (x) dx = U(0, 1) du x f (t) dt = F(x) = u x = F ( 1) (u) 2.5.2 Diskrete Zufallsvariable Bei endlichem Wertebereich, kumulative Wahrscheinlichkeit tabellieren und anschließend binären Suchalgorithmus anwenden. 2.5.3 Verfahren mit roher Gewalt 2.5.4 Zufallszahlen für spezielle Verteilungen Übungen
2.6 Monte-Carlo Integration 2.6.1 Vergleich mit numerischer Integration - Trapezregel 2.6.2 Vergleich mit numerischer Integration - Simpson 2.6.3 Monte Carlo Integration in einer Dimension Varianzreduzierende Methoden: Importance Sampling Kontroll-Funktion Partitionierung 2.6.4 (MC-) Integration in mehreren Dimensionen
2.6.5 Quasi-Zufallszahlen (Sequenzen) Warum zeigen (echte und Pseudo-) Zufallszahlen ein so schlechte Konvergenzverhalten? Fehler bei Integration: n 1/2 1 0.8 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 Antwort: Zufallszahlen klumpen
Gibt es Sequenzen (von n-tupeln), die ein n-dimensionales Volumen besser füllen als (Pseudo-) Zufallszahlen? Quasi-Zufallszahlen (Sequenzen) Fehler bei Integration: n 1 Pseudo Random Sequence 1.0 Quasi Random Sequence 1.0 0.5 0.5 0.0 0.0 0.5 0.5 1.0 1.0 0.5 0.0 0.5 1.0 1.0 1.0 0.5 0.0 0.5 1.0 Eigenschaften: Neue Punkte fallen immer zwischen die vorherigen Punkte. Hier: Gleichmäßige Füllung der Fläche.
van der Corput-Sequenzen Publiziert 1935 von dem holländischen Mathematiker Johannes Gualtherus van der Corput (Rotterdam, September 4, 1890 - Amsterdam, September 16, 1975). Richtgröße: n = m j=0 a j(n) B j van der Corput-Sequenz, Basis n: x(n) = m j=0 a j(n) B j 1 Beispiel: Basis 3: 0, 1/3, 2/3, 1/9, 4/9, 7/9, 2/9, 5/9, 8/9, 1/27, 10/27, 19/27,...
Halton Sequenz Publiziert 1960 von John H. Halton, Professor an der University of North Carolina at Chapel Hill. van der Corput-Sequenzen mit anderer Primzahlbasis für jede Dimension. Primzahlen: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,... Nachteil: Sequenzlänge, um Intervall [0, 1] zu füllen, steigt für hohe Dimensionen extrem an.
Halton Sequenzen in hohen Dimensionen
Sobol Sequenzen Basis 2 für alle Dimensionen spezieller Algorithmus, um Bits zu mischen Beispiel: Gray-Code Siehe William H. Press et al.: Numerical recipes in C, Cambridge University Press (1992)
Arbeiten mit Quasi-Zufallssequenzen Nur für MC-Integration geeignet Benötigt große Disziplin des Programmierers Dimension des Problems kann nicht nachträglich verändert werden Um die Genauigkeit der Integration zu verbessern, muss die Sequenz an der Stelle fortgeführt werden, an der sie abgebrochen wurde Fehler n 1 statt n 1/2