14.01.2014 Aufrufe

Skript - Fakultät für Physik und Astronomie - Universität Würzburg

Skript - Fakultät für Physik und Astronomie - Universität Würzburg

Skript - Fakultät für Physik und Astronomie - Universität Würzburg

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Computational Physics<br />

Aktualisierte Version<br />

12. Dezember 2013<br />

Prof. Dr. Haye Hinrichsen<br />

Lehrstuhl <strong>für</strong> Theoretische <strong>Physik</strong> III<br />

<strong>Fakultät</strong> <strong>für</strong> <strong>Physik</strong> <strong>und</strong> <strong>Astronomie</strong><br />

<strong>Universität</strong> <strong>Würzburg</strong><br />

Wintersemester 12/13


Vorwort<br />

Dies ist die aktuelle Version des <strong>Skript</strong>s zur Vorlesung ’Computational Physics’ <strong>für</strong> den<br />

Bachelor-Studiengang. Da ich diese Vorlesung bereits mehrere Jahre halte, ist das <strong>Skript</strong><br />

umfangreicher als die Vorlesung. Andererseits werden in jedem Semester auch neue Themen<br />

behandelt, die noch nicht im <strong>Skript</strong> enthalten sind. Klausur- <strong>und</strong> prüfungsrelevant<br />

ist der jeweilige Vorlesungsinhalt.<br />

<strong>Skript</strong>e sind nie fehlerfrei. Bitte helfen Sie mit <strong>und</strong> benachrichtigen Sie mich bei Fehlern<br />

per Email:<br />

hinrichsen at physik uni-wuerzburg de, Betreff: CP-<strong>Skript</strong>.<br />

Vielen Dank <strong>für</strong> die vielen Hinweise, die geholfen haben, dieses <strong>Skript</strong> zu verbessern.<br />

H. Hinrichsen<br />

<strong>Würzburg</strong>, WS 13/14<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


Inhaltsverzeichnis<br />

1 Integration 1<br />

1.1 Einfache Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.1.1 Rechteckverfahren <strong>und</strong> Trapezregel . . . . . . . . . . . . . . . . . . 1<br />

1.1.2 Simpsonregel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.1.3 Newton-Cotes-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.1.4 Numerische Stabilität . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2 Differentialgleichungen 9<br />

2.1 Gewöhnliche Differentialgleichungen . . . . . . . . . . . . . . . . . . . . . 9<br />

2.1.1 Reduktion auf ein System erster Ordnung . . . . . . . . . . . . . . 9<br />

2.1.2 Diskretisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.1.3 Euler-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.1.4 Verfahren von Heun . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.1.5 Runge-Kutta-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.1.6 Fehlerabschätzung . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.1.7 Dynamische Schrittweitenkontrolle * . . . . . . . . . . . . . . . . . 14<br />

2.1.8 Anwendung auf physikalische Probleme . . . . . . . . . . . . . . . 15<br />

2.1.9 Die Rolle von Symmetrien <strong>und</strong> Erhaltungsgrößen . . . . . . . . . . 16<br />

2.1.10 Mehrschrittverfahren * . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.2 Partielle Differentialgleichungen . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

2.2.1 Konzept der Quantenmechanik kurz gefasst . . . . . . . . . . . . . 19<br />

2.2.2 Die Schrödingergleichung . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.2.3 Stationäre Schrödingergleichung . . . . . . . . . . . . . . . . . . . . 20<br />

2.2.4 Numerov-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

2.2.5 Zeitabhängige Schrödingergleichung – Modenzerlegung . . . . . . . 24<br />

2.2.6 Zeitabhängige Schrödingergleichung – Numerische Integration . . . 26<br />

2.3 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3 Chaos 37<br />

3.1 Chaotische mechanische Systeme . . . . . . . . . . . . . . . . . . . . . . . 39<br />

3.1.1 Mimimale Phasenraumdimension . . . . . . . . . . . . . . . . . . . 39<br />

3.1.2 Lyapunov-Exponenten . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

3.1.3 Getriebenes gedämpftes Pendel . . . . . . . . . . . . . . . . . . . . 42<br />

3.1.4 Attraktoren <strong>und</strong> Poincaré-Schnitte . . . . . . . . . . . . . . . . . . 43<br />

3.2 Fraktale Eigenschaften seltsamer Attraktoren * . . . . . . . . . . . . . . . 45<br />

3.3 Chaotische iterative Abbildungen . . . . . . . . . . . . . . . . . . . . . . . 45<br />

3.3.1 Quadratische Abbildung . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

3.3.2 Feigenbaumkonstante . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

3.3.3 Mandelbrotmenge . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br />

3.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


vi<br />

Inhaltsverzeichnis<br />

4 Zufallszahlen 57<br />

4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

4.1.1 Ganzzahlige Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . 57<br />

4.1.2 Fließkomma-Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . 59<br />

4.1.3 Korrelationsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

4.2 Pseudozufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

4.2.1 Algorithmische Implementierung . . . . . . . . . . . . . . . . . . . 61<br />

4.2.2 Ein (zu) einfacher Zufallszahlengenerator . . . . . . . . . . . . . . 62<br />

4.2.3 Verbesserte Zufallszahlengeneratoren . . . . . . . . . . . . . . . . . 63<br />

4.2.4 Zufallszahlengenerator von G. Marsaglia <strong>und</strong> A. Zaman . . . . . . 63<br />

4.2.5 Zufallszahlengenerator von R. M. Ziff . . . . . . . . . . . . . . . . . 64<br />

4.2.6 ’Echte’ Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

4.3 Zufallszahlen mit nichtkonstanter Verteilung . . . . . . . . . . . . . . . . . 65<br />

4.3.1 Transformation der Wahrscheinlichkeitsdichte durch Abbildung . . 65<br />

4.3.2 Sampling <strong>und</strong> Histogramme . . . . . . . . . . . . . . . . . . . . . . 67<br />

4.3.3 Normalverteilte Zufallszahlen . . . . . . . . . . . . . . . . . . . . . 68<br />

4.3.4 Box-Muller Transformation . . . . . . . . . . . . . . . . . . . . . . 69<br />

4.3.5 Verbesserte Box-Muller Transformation . . . . . . . . . . . . . . . 71<br />

4.3.6 Umgang mit Wahrscheinlichkeitsverteilungen in Mathematica R○ . . 72<br />

4.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

5 Zufallsbewegung 75<br />

5.1 Universalität der Gaußverteilung . . . . . . . . . . . . . . . . . . . . . . . 75<br />

5.1.1 Addition von Zufallsgrößen . . . . . . . . . . . . . . . . . . . . . . 75<br />

5.1.2 Faltungssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

5.1.3 Transformierte Wahrscheinlichkeitsdichte eines Standardgenerators 77<br />

5.1.4 Zentraler Grenzwertsatz . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

5.2 Die eindimensionale Zufallsbewegung . . . . . . . . . . . . . . . . . . . . . 80<br />

5.2.1 Bewegungsgleichung <strong>und</strong> Mastergleichung . . . . . . . . . . . . . . 81<br />

5.2.2 Kontinuumlimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

5.2.3 Skalierungseigenschaften der Diffusionsgleichung . . . . . . . . . . 83<br />

5.3 Diffusion in höheren Dimensionen . . . . . . . . . . . . . . . . . . . . . . . 84<br />

5.3.1 Entkopplung orthogonaler Freiheitsgrade . . . . . . . . . . . . . . . 84<br />

5.3.2 Rückkehrwahrscheinlichkeit . . . . . . . . . . . . . . . . . . . . . . 85<br />

5.3.3 Diffusionsbegrenztes Wachstum (DLA) . . . . . . . . . . . . . . . . 86<br />

5.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

6 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse 93<br />

6.1 Molekularfeldnäherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

6.1.1 Massenwirkungsgesetz . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

6.1.2 Chemische Oszillationen . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

6.1.3 Raumzeitliche Strukturbildung . . . . . . . . . . . . . . . . . . . . 95<br />

6.2 Gittermodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

6.2.1 Gittergeometrien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

6.2.2 Charakterisierung des Zustandsraums . . . . . . . . . . . . . . . . 98<br />

6.2.3 Dynamiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

6.3 Zelluläre Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

6.4 Systeme mit thermisch induzierten Übergängen . . . . . . . . . . . . . . . 102<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


Inhaltsverzeichnis<br />

vii<br />

6.5 Fluktuationseffekte im Koagulationsprozess . . . . . . . . . . . . . . . . . 103<br />

6.5.1 Experimenteller Hintergr<strong>und</strong> . . . . . . . . . . . . . . . . . . . . . 104<br />

6.5.2 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

6.5.3 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

6.5.4 Exakte Lösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

6.5.5 Dimensionsabhängigkeit . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

6.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

7 Phasenübergänge in Reaktions-Diffusionsprozessen 113<br />

7.1 Gerichtete Perkolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

7.1.1 Isotrope vs. gerichtete Perkolation . . . . . . . . . . . . . . . . . . 114<br />

7.1.2 Interpretation als Reaktions-Diffusionsprozess . . . . . . . . . . . . 115<br />

7.1.3 Algorithmische Implementierung . . . . . . . . . . . . . . . . . . . 116<br />

7.1.4 Epidemische Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

7.1.5 Potenzgesetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

7.2 Phänomenologische Skalentheorie . . . . . . . . . . . . . . . . . . . . . . . 122<br />

7.2.1 Skaleninvarianz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

7.2.2 Universalität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

7.3 Andere stochastische Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

7.3.1 Wachstumsprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

7.3.2 Voter Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

7.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

8 Fourier-Transformation 131<br />

8.1 Fourier-Transformation – kurz gefasst . . . . . . . . . . . . . . . . . . . . 131<br />

8.1.1 Kontinuierliche Fouriertransformationen . . . . . . . . . . . . . . . 132<br />

8.1.2 Fourier-Reihen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

8.1.3 Diskrete Fourier-Transformationen . . . . . . . . . . . . . . . . . . 135<br />

8.1.4 Invarianz des Skalarprodukts . . . . . . . . . . . . . . . . . . . . . 136<br />

8.1.5 Gleitende diskrete Fourier-Transformationen . . . . . . . . . . . . . 137<br />

8.1.6 Allgemeine Eigenschaften von Fourier-Transformationen . . . . . . 137<br />

8.1.7 Faltungssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

8.2 Klänge mit Mathematica R○ . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

8.2.1 Erzeugung eines Klanges mit Funktionen . . . . . . . . . . . . . . . 141<br />

8.2.2 Hochladen von Klangdateien . . . . . . . . . . . . . . . . . . . . . 141<br />

8.2.3 Manipulation von Klängen . . . . . . . . . . . . . . . . . . . . . . . 142<br />

8.2.4 Künstlicher Nachhall . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

8.3 Bildbearbeitung mit Mathematica R○ . . . . . . . . . . . . . . . . . . . . . 143<br />

8.3.1 Faltungsprodukte in der Bildbearbeitung . . . . . . . . . . . . . . . 144<br />

8.3.2 Scharfzeichnen <strong>und</strong> Weichzeichnen . . . . . . . . . . . . . . . . . . 144<br />

8.4 Fast-Fourier-Transform (FFT) . . . . . . . . . . . . . . . . . . . . . . . . . 145<br />

8.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


1 Integration<br />

Während das Differenzieren von Funktionen durch Anwendung<br />

von bestimmten Regeln auf systematische Weise durchgeführt<br />

werden kann, ist die exakte Integration einer Funktion weitaus<br />

schwieriger. Die bekannten Lösungen hat man deshalb in umfangreichen<br />

Tafelwerken wie z.B. dem “Gradshteyn-Ryzhik“ zusammengetragen.<br />

Heute übernehmen symbolische mathematisch<br />

orientierte Programmiersprachen wie z.B. Mathematica R○<br />

mehr <strong>und</strong> mehr die Funktion dieses kollektiven Wissen. Wenn<br />

aber eine Integration in geschlossener Form nicht möglich ist,<br />

ist man auf numerische Näherungsverfahren angewiesen. Um<br />

solche Näherungsverfahren wird es in diesem Kapitel gehen.<br />

Der “Gradshteyn-Ryzhik“<br />

Die numerische Integration von Funktionen ist ein eigenständiges Teilgebiet der numerischen<br />

Mathematik. Im Rahmen dieser Vorlesung wollen wir dieses Gebiet nur streifen<br />

<strong>und</strong> die gängigsten numerischen Integrationsverfahren exemplarisch behandeln. Dabei<br />

werden wir insbesondere die Genauigkeit, die benötigte Rechenzeit <strong>und</strong> den programmiertechnischen<br />

Aufwand miteinander vergleichen. Als benchmark verwenden wir da<strong>für</strong><br />

das Integral<br />

∫ 2<br />

e x dx = 3.0591165396459534079.... (1.1)<br />

x<br />

1<br />

1.1 Einfache Verfahren<br />

1.1.1 Rechteckverfahren <strong>und</strong> Trapezregel<br />

Das einfachste Integrationsverfahren ist das sogenannte Rechteckverfahren. Dazu wird das<br />

Integrationsintervall [a, b] in N äquidistante Intervalle der Breite h = (b − a)/N geteilt,<br />

die wir mit n = 0 . . . N − 1 indizieren wollen. In den Mittelpunkten x n = a + (n + 1/2)h<br />

dieser Intervalle, den sogenannten Stützstellen, berechnet man die Funktionswerte f n =<br />

f(x n ). Das Integral I = ∫ b<br />

a<br />

f(x)dx ist dann näherungsweise durch die Summe dieser<br />

Funktionswerte multipliziert mit h gegeben:<br />

I R<br />

N−1<br />

∑ (<br />

)<br />

= h f a + (n + 1/2)h , h = b − a<br />

N . (1.2)<br />

n=0<br />

Man kann sich leicht überzeugen, dass lineare Funktionen (also Geraden) unabhängig von<br />

h fehlerfrei integriert werden, während bei gekrümmten Kurven Abweichungen entstehen.<br />

Bei einer Parabel kann man I <strong>und</strong> I R sogar geschlossen ausrechnen. Man erhält<br />

I = b3 − a 3<br />

3<br />

, I R = b3 − a 3<br />

−<br />

3<br />

(b − a)3<br />

(b − a)3<br />

12N 2 , ∆ = |I − I R | =<br />

12N 2 ∼ h 2 . (1.3)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2 Integration<br />

Abbildung 1.1: Integrationsverfahren: Rechteck-, Trapez- <strong>und</strong> Simpsonregel (Quelle: Wikipedia).<br />

Das ’beweist’ man z.B. mit Mathematica R○ :<br />

f[x_]:=x^2;<br />

h=(b-a)/NN; (* N ist belegt *)<br />

soll=Integrate[f[x],{x,a,b}];<br />

ist=h*Sum[f[a+(n+1/2)h],{n,0,NN-1}];<br />

soll-ist//FullSimplify<br />

Eine Verbesserung könnte man sich erhoffen, indem man die Stützstellen durch stückweise<br />

Geraden miteinander verbindet. Bei dieser sogenannten Trapezregel trägt das approximierte<br />

Integral zwischen zwei Stützstellen x, x + h mit der Fläche h 2<br />

(f(x) + f(x + h)) bei.<br />

Wenn man alle Beiträge aufaddiert, erhält man<br />

I T<br />

( f(a)<br />

= h + f(b)<br />

2<br />

Für eine Parabel erhält man hier den Fehler<br />

∆ = |I − I T | =<br />

N−1<br />

2 + ∑<br />

n=1<br />

)<br />

f(a + nh)<br />

(1.4)<br />

(b − a)3<br />

6N 2 ∼ h 2 . (1.5)<br />

Obwohl die Trapezregel ‘besser aussieht’ (vgl. Abb. 1.1) produziert sie einen doppelt so<br />

großen Fehler.<br />

In der numerischen Mathematik ist ein solcher Faktor 2 im Fehler durchaus relevant,<br />

da er einen um √ 2 höheren Rechenaufwand bedeutet. Viel wichtiger ist jedoch, wie der<br />

numerische Fehler skaliert, mit welcher Potenz in h er also abnimmt im Limes h → 0.<br />

Die Rechteck- <strong>und</strong> Trapezmethode haben beide die gleiche Fehlerordnung da die Fehler<br />

in beiden Fällen wie h 2 skalieren.<br />

Die Rechteck- <strong>und</strong> die Trapezregel lassen sich in C wie folgt programmieren:<br />

double Integrate_R (double (*f) (double), double a, double b, int N) {<br />

double h = (b-a) / N;<br />

double sum = 0;<br />

for (int n=0; n


1.1 Einfache Verfahren 3<br />

1.1.2 Simpsonregel<br />

Die Simpsonregel beruht auf der Idee, die Funktion f(x)<br />

durch Parabelsegmente anstatt durch Geraden zu approximieren.<br />

Auf jedem Intervall [x, x + 2h] betrachtet man dazu<br />

die drei Funktionswerte an den Stützstellen x, x + h, x + 2h<br />

<strong>und</strong> bestimmt eine Parabel P (x), die durch diese drei Punkte<br />

verläuft. Die so bestimmte Parabel wird dann auf diesem<br />

Intervall integriert. Dieses analytische Problem löst man mit<br />

Mathematica R○ folgendermaßen:<br />

Drei-Punkte-Fit einer Parabel<br />

P[x_]:=c*x^2+d*x+e; (* Parabel mit Koeffizienten c,d,e *)<br />

lsg=Solve[{P[x]==f[x], P[x+h]==f[x+h], P[x+2h]==f[x+2h]}, {c,d,e}]<br />

P1[x_]:=P[x]/.lsg[[1]]; (* Loesung einsetzen *)<br />

Integrate[P1[s],{s,x,x+2*h}]//Simplify<br />

Das Resultat lautet (h*(f[x] + 4*f[x + h] + f[x + 2*h]))/3. Dieser Ausdruck ist<br />

noch über alle Stützstellen zu summieren. Als Ergebnis erhält man die Simpson-Regel<br />

I S = h [<br />

]<br />

f(a) + 4f(x 1 ) + 2f(x 2 ) + 4f(x 3 ) + 2f(x 4 ) + · · · + 4f(x n−1 ) + f(b) (1.6)<br />

3<br />

So könnte man die Simpson-Regel in C realisieren:<br />

double Integrate_S (double (*f) (double), double a, double b, int N) {<br />

double h = (b-a) / N / 2;<br />

double sum = (*f)(a) + (*f)(b);<br />

for (int j=1; j


4 Integration<br />

Die n Stützstellen in einem Intervall [x 0 , x 0 + nh] seien x i = x 0 + ih. Wir suchen nun<br />

ein Polynom n-ter Ordnung P n (x), das durch die n + 1 Punkte (x i , f(x i )) verläuft. Dazu<br />

betrachten wir zunächst die Hilfsfunktionen<br />

L k,n (x) =<br />

n∏<br />

j=0,j≠k<br />

x − x j<br />

x k − x j<br />

. (1.7)<br />

Man kann sich leicht überzeugen, dass diese Funktionen ebenfalls Polynome n-ten Grades<br />

sind. Außerdem gilt<br />

{<br />

1 falls i = k<br />

L k,n (x i ) =<br />

(1.8)<br />

0 falls i ≠ k<br />

oder kurz L k,n (x i ) = δ ik , denn <strong>für</strong> i = k sind alle Faktoren gleich 1, während <strong>für</strong> i ≠ k<br />

mindestens einer der Faktoren verschwindet. Mit diesen Basispolynomen ist es nun leicht<br />

zu zeigen, dass<br />

n∑<br />

P n (x) = f(x k )L k,n (x) (1.9)<br />

k=0<br />

das (eindeutig gegebene) Polynom mit der gewünschten Eigenschaft P n (x i ) = f(x i ) ist.<br />

Dieses Polynom ist nun auf dem Teilintervall [x 0 , x n ] zu integrieren:<br />

∫ xn<br />

x 0<br />

f(x)dx ≈ (x n − x 0 )<br />

n∑<br />

w k f(x k ) , (1.10)<br />

wobei die Konstanten w k die sogenannten Gewichte sind, die das jeweilige Verfahren<br />

charakterisieren. Die Gewichte sind gegeben durch<br />

k=0<br />

w k =<br />

1<br />

x n − x 0<br />

∫ xn<br />

x 0<br />

L k,n (x)dx (1.11)<br />

Dabei ist der Vorfaktor<br />

1<br />

x n−x 0<br />

so gewählt, dass die Gewichte bei äquidistanten Stützstellen<br />

nicht von der Breite es Intervalls abhängen. Mit diesem Mathematica R○ -Code kann man<br />

diese Zahlen ausrechnen:<br />

n=5; (* Ordnung des Verfahrens *)<br />

X[k_]:=x0+k*h;<br />

pi[x_]:=Product[(x-X[j]),{j,0,n}]<br />

L[k_,x_]:=pi[x]/pi’[X[k]]/(x-X[k]);<br />

Table[1/h/n*Integrate[L[k,x],{x,X[0],X[n]}],{k,0,n}]<br />

Hier einige Beispiele:<br />

Verfahren n w 0 , . . . , w n Fehlerordnung<br />

Trapez 1<br />

1<br />

2 , 1 2<br />

h 2<br />

Simpson 2<br />

1<br />

6 , 2 3 , 1 6<br />

h 4<br />

Boole 4<br />

7<br />

90 , 32<br />

90 , 12<br />

90 , 32<br />

90 , 7<br />

90<br />

h 6<br />

Weddle 6<br />

41<br />

840 , 9<br />

35 , 9<br />

280 , 34<br />

105 , 9<br />

280 , 9<br />

35 , 41<br />

840<br />

h 8<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


1.1 Einfache Verfahren 5<br />

n Trapez Simpson Bool Weddle<br />

1 0.147288 0.00154692 2.77024e-05 8.81973e-07<br />

2 0.0379823 0.000122653 7.25379e-07 7.769e-09<br />

4 0.00958756 8.34587e-06 1.38071e-08 4.23125e-11<br />

8 0.00240315 5.34561e-07 2.29e-10 1.83758e-13<br />

16 0.000601188 3.36247e-08 3.63571e-12 8.14886e-16<br />

32 0.000150322 2.10495e-09 5.73231e-14 7.97973e-17<br />

64 3.75822e-05 1.31613e-10 1.18156e-15 7.65447e-17<br />

128 9.39564e-06 8.22669e-12 3.03143e-16 7.58942e-17<br />

256 2.34892e-06 5.14214e-13 2.89916e-16 7.71952e-17<br />

512 5.87229e-07 3.21715e-14 2.87314e-16 8.04478e-17<br />

1024 1.46807e-07 2.04589e-15 2.85796e-16 7.00395e-17<br />

Tabelle 1.1: Fehler verschiedener Integrationsverfahren bei der Berechnung von (1.1).<br />

Zu guter letzt sind die Integrale der Teilintervalle noch aufzusummieren. Man erhält<br />

damit die Approximation<br />

∫ b<br />

a<br />

N−1<br />

∑<br />

f(x)dx ≈ nh<br />

j=0 k=0<br />

n∑<br />

w k f ( a + (nj + k)h ) . (1.12)<br />

Auch die komplizierteren Regeln sind also sehr einfach zu programmieren. Hier ist beispielsweise<br />

ein Programmfragment <strong>für</strong> die Weddle-Regel n = 6, das sehr leicht an andere<br />

Regeln angepasst werden kann:<br />

double Integrate_W (double (*f) (double), double a, double b, int N) {<br />

const int n=6; double sum=0, h = (b-a)/(N*n);<br />

double w[n+1]={41.0/840,9.0/35,9.0/280,34.0/105,9.0/280,9.0/35,41.0/840};<br />

for (int j=0; j


6 Integration<br />

Fehler<br />

10 -1<br />

10 -2<br />

10 -3<br />

10 -4<br />

10 -5<br />

10 -6<br />

10 -7<br />

10 -8<br />

10 -9<br />

10 -10<br />

10 -11<br />

10 -12<br />

10 -13<br />

10 -14<br />

10 -15<br />

Weddle<br />

Boole<br />

Simpson<br />

Trapez<br />

Trapez<br />

Simpson<br />

Boole<br />

Weddle<br />

10 -16<br />

1 10 100 1000 10000 100000<br />

N<br />

Abbildung 1.2: Absolute Fehler <strong>für</strong> eine glatter Funktion (grün) <strong>und</strong> eine Stufenfunktion (blau).<br />

des Integrationsintervalls ist (Übung). Die Simpsonregel kann also nicht nur Parabeln,<br />

sondern auch kubische Polynome fehlerfrei integrieren, die niedrigste Fehlerordnung ist<br />

also h 4 . Für n = 3 erhält man ein symmetrisches Differenzpolynom vierter Ordnung, so<br />

dass die Fehlerordnung hier ebenfalls h 4 ist. Für n = 4 greift dann wieder das Symmetrieargument.<br />

Aus diesem Gr<strong>und</strong> sind nur die Verfahren <strong>für</strong> geradzahliges n mit Namen<br />

belegt, weil die Verfahren <strong>für</strong> ungerades n keinen Vorteil bringen.<br />

1.1.4 Numerische Stabilität<br />

Ist nun ein Verfahren hoher Ordnung gr<strong>und</strong>sätzlich besser? Diese Frage hängt sehr von<br />

der betrachteten Funktion ab. Für hinreichend glatte Funktionen, die lokal durch eine<br />

Taylor-Reihe approximiert werden können, funktionieren die Verfahren um so besser, je<br />

höher die Fehlerordnung ist. Bei unstetigen Funktionen sieht es jedoch anders aus. So ist<br />

z.B. <strong>für</strong> die Sprungfunktion<br />

{<br />

0 x < 3/2<br />

g(x) = θ(x − 3/2) =<br />

(1.13)<br />

1 x ≥ 3/2<br />

das Integral<br />

∫ 2<br />

1<br />

g(x)dx = 1 2<br />

(1.14)<br />

trivial zu berechnen. Die oben beschriebenen numerischen Integrationsverfahren haben<br />

allerdings damit große Probleme. Zwar werden alle Intervalle, auf denen g(x) konstant<br />

ist, korrekt integriert, jedoch wird das Intervall, in dem die Unstetigkeit liegt, je nach<br />

Ordnung des Verfahrens durch ein mehr oder weniger wild oszillierendes Polynom approximiert,<br />

das in diesem Intervall ein völlig falsches Ergebnis produziert. Man erwartet<br />

deshalb, das der Gesamtfehler in diesem Fall mit 1/h oder sogar schlechter skaliert –<br />

unabhängig von der Ordnung des Verfahrens.<br />

Wie man in Abb. 1.2 sehen kann, ist dies auch tatsächlich der Fall. In dieser Abbildung<br />

sind die absoluten Fehler doppellogarithmisch über der Anzahl der Schritte N ∼ 1/h<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


1.1 Einfache Verfahren 7<br />

dargestellt. Die Fehler <strong>für</strong> die gutartige Funktion f(x) aus Tabelle 1.1 sind grün dargestellt.<br />

Man erkennt sehr schön die unterschiedlichen Potenzgesetze der Fehlerordnungen,<br />

die hier als Geraden mit unterschiedlicher Steigung in Erscheinung treten, sowie die limitierende<br />

Maschinengenauigkeit am unteren Rand. Die entsprechenden Daten <strong>für</strong> die<br />

Sprungfunktion g(x) sind dagegen blau dargestellt. Wie man sehen kann, liefern hier alle<br />

Verfahren in etwa gleich schlechte Ergebnisse mit einer Fehlerordnung h −1 .<br />

Noch problematischer ist die Integration von Funktionen mit Singulatitäten wie z.B.<br />

h(x) =<br />

1<br />

x − π/2 . (1.15)<br />

Das Integral ∫ 2<br />

1<br />

h(x)dx kann berechnet werden, indem man ausnutzt, dass der Integrand<br />

antisymmetrisch in bezug auf die Polstelle ist, d.h. im Intervall [π−2, 2] liefert das Integral<br />

keinen Beitrag, während der verbleibende Teil ∫ π−2<br />

1<br />

h(x)dx mit Mathematica R○ bestimmt<br />

werden kann <strong>und</strong> den numerischen Wert H = −1.012305533877 ergibt. Integriert man<br />

aber diese Funktion numerisch auf dem gesamten Intervall [1, 2], so beobachtet man, dass<br />

keines der Verfahren konvergiert, vielmehr erhält man in etwa konstante Abweichungen<br />

von der Größenordnung 1, die in der Abbildung rot dargestellt sind.<br />

Die numerische Integration von Funktionen ist ein eigenes Teilgebiet der numerischen<br />

Mathematik, das wir hier nur sehr oberflächlich gestreift haben. Mitnehmen sollten Sie<br />

jedoch, dass sich die Genauigkeit in der Regel mit nur geringem Aufwand erheblich<br />

verbessern lässt. Sind dagegen die Integranden unstetig oder gar singulär, ist äußerste<br />

Vorsicht geboten, selbst wenn ein Verfahren endliche stabile Werte liefert.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2 Differentialgleichungen<br />

Eine wichtige <strong>und</strong> vielleicht auch die älteste Anwendung<br />

des Computers in der <strong>Physik</strong> ist das<br />

numerische Lösen von Differentialgleichungen.<br />

Der erste vollelektronische Großrechner mit der<br />

Bezeichnung ENIAC, der noch über ein Steckfeld<br />

programmiert wurde, diente zur Lösung<br />

partieller Differentialgleichungen <strong>für</strong> Kernfusion<br />

<strong>und</strong> ermöglichte so die Entwicklung der<br />

Wasserstoffbombe. Die Amerikaner gewannen<br />

den Wettlauf zum Mond nicht wegen besserer<br />

Raketentechnologie, sondern weil sie die ersten<br />

waren, die einen leichten transistorisierten<br />

Bordrechner zur numerischen Iteration der<br />

Flugbahn bauen konnten.<br />

Electronic Numerical Integrator And Computer<br />

(ENIAC) aus dem Jahr 1942 mit 17500 Röhren<br />

2.1 Gewöhnliche Differentialgleichungen<br />

2.1.1 Reduktion auf ein System erster Ordnung<br />

Wir wollen uns zunächst mit gewöhnlichen Differentialgleichungen befassen. Eine gewöhnliche<br />

Differentialgleichung n-ter Ordnung <strong>für</strong> eine Funktion y(x) lässt sich schreiben<br />

als<br />

y (n) = f(x, y, y ′ , y ′′ , . . . , y (n−1) ) , (2.1)<br />

wobei y (n) <strong>für</strong> die n-te Ableitung steht <strong>und</strong> f eine im Allgemeinen nichtlineare Funktion<br />

ist. Diese Differentialgleichung n-ter Ordnung lässt sich auf ein System von Differentialgleichungen<br />

erster Ordnung zurückführen, indem man eine n-komponentige Funktion<br />

⃗Y (x) = (Y 1 (x), Y 2 (x), . . . , Y n (x)) durch Y n (x) := y (n−1) (x) definiert, also einen Vektor,<br />

in dem die ursprüngliche Funktion <strong>und</strong> ihre Ableitungen als Komponenten aufgelistet<br />

sind. Man wird so auf ein System von n Differentialgleichungen geführt, nämlich<br />

Y 1(x) ′ = Y 2 (x)<br />

Y 2(x) ′ = Y 3 (x) (2.2)<br />

· · · · ·<br />

(<br />

·<br />

)<br />

Y n(x) ′ = f x, Y 1 (x), Y 2 (x), . . . , Y n (x) ,<br />

das sich auch kurz in der Form<br />

⃗Y ′ (x) = F ⃗ (<br />

x, Y ⃗ )<br />

(x)<br />

(2.3)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


10 Differentialgleichungen<br />

schreiben lässt. Die ersten n − 1 Gleichungen sind trivial in dem Sinne, dass sie nichts<br />

weiter tun als Ableitungen sukzessive hintereinander zu schalten, um auf diese Weise<br />

höhere Ableitungen zu erzeugen, die in der letzten Gleichung als Argumente der Funktion<br />

f benötigt werden. Durch das Zurückführen auf ein System von Gleichungen erster<br />

Ordnung wird das Problem jedoch standardisiert, – spezielle Algorithmen <strong>für</strong> Differentialgleichungen<br />

höherer Ordnung werden also nicht unbedingt benötigt.<br />

Beispiel: Für eine gedämpfte Schwingung lässt sich die DGL zweiter Ordnung ÿ(t) +<br />

aẏ(t) + by(t) = 0 durch<br />

Y 1(t) := y(t) , Y 2(t) := ẏ(t) (2.4)<br />

auf das System<br />

Ẏ 1(t) = Y 2(t)<br />

Ẏ 2(t) = −bY 1(t) − aY 2(t) (2.5)<br />

von zwei DGLen erster Ordnung zurückführen. In diesem speziellen Fall ist das System<br />

sogar linear, so dass wir ˙⃗ Y (t) = AY (t) schreiben können, wobei A eine 2 × 2-Matrix ist.<br />

Durch Bestimmung der Eigenwerte <strong>und</strong> Eigenvektoren dieser Matrix lassen sich dann beide<br />

Gleichungen entkoppeln.<br />

Auf analoge Weise geht man vor, wenn ein System von m Gleichungen n-ter Ordnung<br />

vorgegeben ist, man erhält dann ein System von m × n Gleichungen erster Ordnung.<br />

Im folgenden wollen wir der Einfachheit halber eine einkomponentige gewöhnliche DGL<br />

erster Ordnung y ′ (x) = f(x, y(x)) betrachten. Die zu beschreibenden Verfahren können<br />

direkt auf Systeme mehrerer DGLen erster Ordnung verallgemeinert werden.<br />

2.1.2 Diskretisierung<br />

Rechner sind endliche Maschinen <strong>und</strong> können deshalb nur diskretisierte Probleme bearbeiten.<br />

Zunächst muss also die unabhängige Variable x (bzw. t in zeitabhängigen DGLen)<br />

diskretisiert werden. Liegen keine näheren Informationen zur betrachteten DGL vor, wird<br />

man zunächst mit einer äquidistanten Diskretisierung<br />

x = x 0 + jh j ∈ N (2.6)<br />

arbeiten. Dabei ist h die sogenannte Schrittweite bei der Iteration. Der Iterationsindex j<br />

übernimmt nun die Rolle der unabhängigen Variable, weshalb wir die Notation<br />

verwenden werden.<br />

x j := x 0 + jh , y j := y(x j ) , y ′ j := y ′ (x j ) (2.7)<br />

Bei der numerischen Integration von Differentialgleichungen unterscheidet man zwischen<br />

Einschrittverfahren <strong>und</strong> Mehrschrittverfahren, wobei man sich auf die Anzahl der bereits<br />

berechneten Stützstellen bezieht, deren Kenntnis notwendig ist, um die jeweils nächste<br />

Stützstelle zu berechnen. Ein Einschrittverfahren berechnet y j+1 allein auf der Gr<strong>und</strong>lage<br />

der vorherigen Stützstelle y j . Beispiele da<strong>für</strong> sind die im folgenden besprochenen<br />

Euler- <strong>und</strong> Runge-Kutta-Verfahren. Ein Zweischrittverfahren benötigt dagegen <strong>für</strong> die<br />

Berechnung von y j+1 zwei zuvor berechnete Stützstellen y j <strong>und</strong> y j−1 . Solche mehrstufigen<br />

werden am Ende dieses Kapitels besprochen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.1 Gewöhnliche Differentialgleichungen 11<br />

2.1.3 Euler-Verfahren<br />

Die Gr<strong>und</strong>lage eines Iterationsverfahrens ist in der Regel die Taylorentwicklung<br />

y j+1 =<br />

∞∑<br />

k=0<br />

h k<br />

k! y(k) j<br />

= y j + hy ′ j + h2<br />

2 y′′ j + . . . . (2.8)<br />

Wären alle Ableitungen bekannt, könnte man die DGL ‘exakt’ iterieren, – aber leider<br />

kennt man nur die erste Ableitung, die durch y j<br />

′ = f(x j, y j ) berechnet werden kann.<br />

Als einfachstes Verfahren bietet es sich deshalb an, die Entwicklung nach der ersten<br />

Ordnung abzubrechen, was zu einem Iterationsfehler der Ordnung O(h 2 ) führt. 1 Dies ist<br />

das sogenannte Euler-Verfahren:<br />

y j+1 = y j + hf(x j , y j ) + O(h 2 ). (2.9)<br />

Das Euler-Verfahren ist wegen seiner Anschaulichkeit sehr beliebt, aber<br />

Euler-Verfahren sind ungenau.<br />

Mit einem geringen Aufwand lässt sich, wie Sie im folgenden sehen werden, eine erhebliche<br />

Verbesserung erreichen.<br />

2.1.4 Verfahren von Heun<br />

Eine intuitiv naheliegende Verbesserung erhält man, wenn man die Tangente im Euler-<br />

Verfahren durch ein Trapez ersetzt, d.h.<br />

y j+1 = y j + h 2<br />

(<br />

f(xj , y j ) + f(x j+1 , y j+1 ) ) + O(h 3 ). (2.10)<br />

Allerdings erscheint auf der rechten Seite die zu berechnende Stützstelle j + 1, die noch<br />

nicht bekannt ist. Das Verfahren von Heun umgeht dieses Problem, indem der Funktionswert<br />

y j+1 an der rechten Stützstelle zunächst mit dem Euler-Verfahren durch einen<br />

näherungsweisen Prädikator abgeschätzt wird:<br />

p j+1] := y j + hf(x j , y j ) . (2.11)<br />

Dieser Prädikator wird in die obige Trapezregel eingesetzt <strong>und</strong> mit dem Ergebnis anschließend<br />

eine verbesserte Abschätzung, der sogenannte Korrektor, berechnet:<br />

y j+1 := y j + h 2<br />

(<br />

f(xj , y j ) + f(x j+1 , p j+1 ) ) (2.12)<br />

p j+1 := f(x j+1 , y j+1 ) . (2.13)<br />

Diese beiden Schritte werden so lange wiederholt, bis die Zahlenwerte der beteiligten<br />

Größen stationär sind, sich also nicht weiter verändern.<br />

1 Diese Notation drückt aus, dass der Fehler <strong>für</strong> h → 0 asymptotisch wie h 2 skaliert. Dieser Fehler<br />

bezieht sich auf einen einzigen Integrationsschritt mit Schrittweite h. Der akkumulierte Fehler auf<br />

einem Integrationsintervall konstanter Breite skaliert mit einer um 1 geringeren Potenz.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


12 Differentialgleichungen<br />

Abbildung 2.1: Euler- <strong>und</strong> Runge-Kutta-Iteration zweiter Ordnung. Die schwarze Kurve stellt die<br />

gesuchte (wirkliche) Lösungsfunktion y(x) dar. Die Iteration startet bei einer Stützstelle<br />

(x j, y j) <strong>und</strong> berechnet (x j+1, y j+1). Beim Euler-Verfahren (links) wird im linken<br />

Punkt die Steigung der Tangente (rote gestrichelte Linie) bestimmt <strong>und</strong> ein linearer<br />

Vorwärtsschritt (roter Pfeil) entlang der Tangente vorgenommen. Wie man sehen<br />

kann, ergibt sich bei gekrümmten Lösungsfunktionen ein erheblicher Fehler (gelber<br />

Balken). Beim Runge-Kutta-Verfahren zweiter Ordnung (rechts) wird zunächst eine<br />

Euler-Iteration mit halber Schrittweite (roter Pfeil) vorgenommen <strong>und</strong> im Zielpunkt<br />

die Steigung ermittelt (blaue gestrichelte Linie). Danach wird diese Steigung <strong>für</strong> den<br />

Iterationsschritt mit voller Schrittweite verwendet (blauer Pfeil). Wie man sehen kann,<br />

ist die Genauigkeit dieses Verfahrens erheblich größer.<br />

2.1.5 Runge-Kutta-Verfahren<br />

Das Verfahren von Heun gehört zur Gruppe der sogennanten Runge-Kutta-Verfahren.<br />

Diese Gruppe umfasst nicht nur das Euler-Verfahren (RK1), sondern auch weitere Standardverfahren<br />

(RK2,RK4,...), die ohne eine Iterationsschleife auskommen <strong>und</strong> mit denen<br />

man mit nur sehr geringem Aufwand die Genauigkeit <strong>und</strong> Effizienz einer numerischen<br />

Iteration erheblich steigern kann. Je nach Skalierungsverhalten des Fehlers unterscheidet<br />

man Runge-Kutta-Verfahren unterschiedlicher Ordnungen. Der einfachste Fall ist das<br />

Runge-Kutta-Verfahren 2. Ordnung RK2, das bereits erheblich genauer als das Euler-<br />

Verfahren ist.<br />

Dem Runge-Kutta-Verfahren 2. Ordnung liegt anschaulich die Idee zugr<strong>und</strong>e, die Steigung<br />

der Sekante von Stützstelle zu Stützstelle nicht wie beim Euler-Verfahren durch die<br />

Tangente im linken Punkt zu nähern, sondern die Steigung in der Mitte der beiden Stützstellen<br />

zu benutzen. Dazu tastet man sich zunächst um einen halben Iterationsschritt h/2<br />

bis zur Mitte vorwärts, ermittelt dort mit Hilfe der Funktion f die Steigung der Tangente<br />

<strong>und</strong> benutzt diese als Näherung <strong>für</strong> die Steigung der Sekante. Dieses Vorgehen ist<br />

schematisch in Abb. 2.3 dargestellt.<br />

Das Runge-Kutta-Verfahren 2. Ordnung ist mit der Iterationsvorschrift<br />

y j+1<br />

(<br />

= y j + hf x j + h 2 , y j + h )<br />

2 f(x j, y j ) + O(h 3 ). (2.14)<br />

nur unwesentlich komplizierter als das Euler-Verfahren. Die Iteration kostet etwas mehr<br />

Zeit, da insbesondere die Funktion f zweimal ausgewertet werden muss, da<strong>für</strong> skaliert<br />

der Fehler jedoch mit der Ordnung O(h 3 ). Es kann also bei gleicher Genauigkeit mit<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.1 Gewöhnliche Differentialgleichungen 13<br />

größeren Schrittweiten gearbeitet werden. Das Runge-Kutta-Verfahren – wie das Euler-<br />

Verfahren in nur einer Zeile zu schreiben – bringt also einen erheblichen Genauigkeits<strong>und</strong><br />

Geschwindigkeitsgewinn.<br />

Auf ähnliche Weise kann man Runge-Kutta-Verfahren höherer Ordnungen definieren.<br />

Ein Runge-Kutta-Verfahren k-ter Ordnung konvergiert bei abnehmender Schrittweite mit<br />

einem Fehler O(h k+1 ). Allerdings sind solche Verfahren höherer Ordnung nicht eindeutig<br />

definiert, es gibt also nicht das Runge-Kutta-Verfahren k-ter Ordnung, sondern eine<br />

Vielzahl solcher Näherungen.<br />

In der Praxis bringt die Erhöhung der Ordnung zunächst eine deutliche Verbesserung<br />

mit sich. Erhöht man die Ordnung aber zu stark, erhöht sich einerseits die Komplexität<br />

des Algorithmus, andererseits kann es zu numerischen Instabilitäten bei zu großer<br />

Schrittweite kommen. Ein guter Kompromiss, der sich in der Praxis bewährt hat, ist das<br />

Runge-Kutta-Verfahren 4. Ordnung, das auch als klassisches Runge-Kutta-Verfahren bekannt<br />

ist:<br />

)<br />

k 1 := h f<br />

(x j , y j<br />

(<br />

k 2 := h f x j + h 2 , y j + k )<br />

1<br />

2<br />

(<br />

k 3 := h f x j + h 2 , y j + k )<br />

2<br />

(2.15)<br />

2<br />

)<br />

k 4 := h f<br />

(x j + h, y j + k 3<br />

y j+1 := y j + k 1<br />

6 + k 2<br />

3 + k 3<br />

3 + k 4<br />

6<br />

Bei einem Differentialgleichunssystem sind y j , k i , f mit Vektorpfeilen zu versehen.<br />

2.1.6 Fehlerabschätzung<br />

Der Fehler eines numerischen Runge-Kutta-Integrators ist leicht zu bestimmen, wenn<br />

man bereits die exakte Lösung der Differentialgleichung kennt. Wie aber kann man den<br />

Fehler abschätzen, wenn die exakte Lösung nicht bekannt ist?<br />

Eine sehr einfache Methode ist das Halbschrittverfahren. Dazu wird ein ganzer Iterationsschritt<br />

y j+1 = RK h (y j ) mit zwei Halbschritten ỹ j+1 = RK h/2 (RK h/2 (y j )) verglichen.<br />

Bezeichnet man die entsprechenden Fehler mit<br />

∆ = |y j+1 − y exakt<br />

j+1 | , ˜∆ = |ỹj+1 − y exakt<br />

j+1 | , (2.16)<br />

so ist offenbar ˜∆ wegen der feineren Schrittweite vom Betrag kleiner als ∆. Man nutzt nun<br />

aus, dass die Fehler bei einem Runge-Kutta-Verfahren k-ter Ordnung wie h k+1 skalieren,<br />

d.h.<br />

∆ ≃ a h k+1 , ˜∆ ≃ 2a (h/2) k+1 , (2.17)<br />

wobei a eine unbekannte Proportionalitätskonstante ist. Mit den beiden Gleichungen<br />

lässt sich wegen<br />

y j − ỹ j = ∆ − ˜∆ = a(1 − 2 −k )h k+1 = (1 − 2 −k )∆ (2.18)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


14 Differentialgleichungen<br />

der Proportionalitätsfaktor a eliminieren <strong>und</strong> man erhält:<br />

∆ =<br />

y j − ỹ j<br />

. (2.19)<br />

1 − 2−k Eine einfache Möglichkeit der Fehlerkontrolle besteht also darin, in regelmäßigen Abständen,<br />

etwa bei jedem h<strong>und</strong>ertsten Iterationsschritt, den Fehler mit der beschriebenen<br />

Methode abzuschätzen <strong>und</strong> ggf. bei Überschreitung eines vorgegebenen Maximalfehlers<br />

die Schrittweite zu halbieren.<br />

2.1.7 Dynamische Schrittweitenkontrolle *<br />

Oft ist es so, dass in bestimmten Regionen des Phasenraums sehr genau iteriert werden<br />

muss, während in anderen Regionen eine großzügige Schrittweite ausreicht. Dies ist<br />

schon der Fall bei der Iteration einer stark exzentrischen Planetenumlaufbahn: In der<br />

Nähe des Zentralgestirns (Perihel) benötigt man eine sehr kleine Schrittweite, weil sich<br />

der Planet sehr schnell bewegt <strong>und</strong> stark beschleunigt wird, während im Aphel eine grobe<br />

Schrittweite ausreicht. Wünschenswert ist hier ein Algorithmus, der die Schrittweite dynamisch<br />

anpasst. Außerdem soll die Anpassung schnell erfolgen <strong>und</strong> nicht nur in großen<br />

Abständen, wie z.B. in dem oben beschrieben Fehlerabschätzungsverfahren. Andererseits<br />

möchte man aber auch nicht in jedem Update das Halbschrittverfahren anwenden, da es<br />

den Rechenaufwand verdreifachen würde.<br />

Ein Verfahren, das den Fehler unmittelbar aus den berechneten Hilfswerten k i berechnet<br />

<strong>und</strong> dynamisch die Schrittweite anpasst, ist das Runge-Kutta-Fehlberg-Verfahren 4.<br />

Ordnung (auch RKF45 genannt):<br />

)<br />

k 1 := h f<br />

(x j , y j<br />

(<br />

k 2 := h f x j + 1 4 h, y j + 1 )<br />

4 k 1<br />

(<br />

k 3 := h f x j + 3 8 h, y j + 3 32 k 1 + 9 )<br />

32 k 2<br />

(<br />

k 4 := h f x j + 12<br />

13 h, y j + 1932<br />

2197 k 1 − 7200<br />

2197 k 2 + 7296 )<br />

2197 k 3<br />

(2.20)<br />

(<br />

k 5 := h f x j + h, y j + 439<br />

216 k 1 − 8k 2 + 3680<br />

513 k 3 − 845 )<br />

4104 k 4<br />

(<br />

k 6 := h f x j + 1 2 h, y j − 8 27 k 1 + 2k 2 − 3544<br />

2565 k 3 + 1859<br />

4104 k 4 − 11 )<br />

40 k 5<br />

y j+1 := y j + 25<br />

216 k 1 + 1408<br />

2565 k 3 + 2197<br />

4104 k 4 − 1 5 k 5<br />

Da man mehr Zwischenwerte hat, als man zur Berechnung von y j+1 braucht, kann man<br />

eine bessere Abschätzung 5. Ordnung ausrechnen:<br />

z j+1 := y j + 16<br />

135 k 1 + 6656<br />

12825 k 3 + 28561<br />

56430 k 4 − 9 50 k 5 + 2 55 k 6 . (2.21)<br />

Ist ɛ die voreingestellte Sollfehlertoleranz, so führt man nach dem Update eine Anpassung<br />

der Schrittweite mit der Zuweisung<br />

(<br />

ɛh<br />

) 1/4<br />

h := h<br />

(2.22)<br />

2|z j+1 − y j+1 |<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.1 Gewöhnliche Differentialgleichungen 15<br />

Abbildung 2.2: Euler-Iteration (rot) <strong>und</strong> Runge-Kutta-Iteration 2. Ordnung (grün) des Zweikörperproblems.<br />

Gezeigt ist in beiden Fällen eine Iteration von 10 6 Zeitschritten mit Schrittweite<br />

h = 0.1. Die dimensionslosen Parameter sind g = 100, ⃗r(0) = (400, 0) <strong>und</strong><br />

⃗v(0) = (0, 0.2). Wie man sehen kann, führt das Euler-Verfahren zu erheblichen Fehlern<br />

<strong>und</strong> insbesondere zu einer stetigen Zunahme der Energie, während die Fehler des<br />

Runge-Kutta-Verfahrens mit dem bloßen Auge nicht zu erkennen sind.<br />

durch, wobei mit entsprechenden Abfragen sicherzustellen ist, dass der Nenner ungleich<br />

Null ist <strong>und</strong> h einen bestimmten Maximalwert nicht überschreitet.<br />

2.1.8 Anwendung auf physikalische Probleme<br />

Eine einfache physikalische Anwendung ist die Iteration einer Planetenbewegung. Zwei<br />

Himmelskörper bewegen im R 3 im wechselseitigen Gravitationspotential<br />

V (r) = −G m 1m 2<br />

r<br />

, (2.23)<br />

wobei G = 6.67 × 10 −11 m 3 s −2 kg −1 die Newtonsche Gravitationskonstante ist. Die Bewegungsgleichung<br />

<strong>für</strong> den Relativvektor ⃗r = ⃗r 2 − ⃗r 1 lautet<br />

µ¨⃗r(t) = −G m 1m 2 ⃗r(t)<br />

r 3 , (2.24)<br />

wobei µ = m 1 m 2 /(m 1 + m 2 ) die reduzierte Masse ist. Indem man die Konstanten auf die<br />

rechte Seite bringt <strong>und</strong> zusammenfasst, hat man also die Bewegungsgleichung<br />

¨⃗r(t) = −g ⃗r(t)<br />

r 3 (2.25)<br />

zu lösen. Da man weiß, dass Bewegungen in Zentralpotentialen in einer Ebene stattfinden,<br />

reicht es aus, das Problem im R 2 zu behandeln.<br />

Zunächst überführen wir die obige Differentialgleichung zweiter Ordnung in ein System<br />

von zwei (jeweils zweikomponentigen) Differentialgleichungen erster Ordnung, indem<br />

wir {⃗r(t), ˙⃗r(t)} = {⃗r(t), ⃗v(t)} als einen vierkomponentigen Vektor auffassen. Ein<br />

Euler-Zeitschritt wird dann durch die Iterationsvorschrift<br />

⃗r(t + h) := ⃗r(t) + h⃗v(t) (2.26)<br />

⃗v(t + h) := ⃗v(t) − hg⃗r(t)/|⃗r(t)| 3<br />

beschrieben. Das Ergebnis ist <strong>für</strong> eine bestimmte Parameterwahl in Abb. 2.2 dargestellt.<br />

Wie man sehen kann, bewegt sich der Planet nicht auf der theoretisch vorhergesagten<br />

geschlossenen ellipsenförmigen Bahn, sondern entfernt sich zunehmend.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


16 Differentialgleichungen<br />

Ein sehr viel besseres Ergebnis mit nur geringem Mehraufwand erzielt man mit dem<br />

Runge-Kutta-Verfahren 2. Ordnung. Für das Planetenproblem lautet die Iterationsvorschrift<br />

⃗ k1 := h⃗v(t) (2.27)<br />

⃗ l1 := −hg ⃗r(t)<br />

|⃗r(t)| 3<br />

⃗ k2 := h<br />

(⃗v(t) + 1 2 ⃗ )<br />

l 1<br />

⃗ l2 := −hg ⃗r(t) + 1⃗ 2k 1<br />

∣<br />

∣⃗r(t) + 1⃗ ∣ ∣∣<br />

3<br />

2k 1<br />

(2.28)<br />

⃗r(t + h) := ⃗r(t) + ⃗ k 2 (2.29)<br />

⃗v(t + h) := ⃗v(t) + ⃗ l 2<br />

Wie man in Abb. 2.2 sehen kann, ist das Ergebnis im Vergleich zum Euler-Verfahren<br />

erheblich besser. Natürlich weist aber auch dieses Verfahren noch erhebliche Fehler auf.<br />

Eine Mondlandung sollte man damit lieber nicht vorausberechnen, sondern sich die Mühe<br />

machen, RKF45 zu implementieren.<br />

2.1.9 Die Rolle von Symmetrien <strong>und</strong> Erhaltungsgrößen<br />

Auch bei anderen Zentralpotentialen, welche im Gegensatz zu 1/r- <strong>und</strong> r 2 -Potentialen<br />

zu nicht geschlossenen Trajektorien führen, würde man die durch das Euler-Verfahren<br />

erzeugten Fehler sofort erkennen können. Der Planet entfernt sich nämlich vom Zentralgestirn,<br />

nimmt also Energie auf, was der Energieerhaltung widerspricht.<br />

Es ist eine empirische Tatsache, dass bei physikalischen Fragestellungen vor allem jene<br />

numerischen Fehler eines Iterationsverfahren zu Problemen führen, welche die Erhaltungsgrößen<br />

<strong>und</strong> Symmetrien des Systems verletzen. Das ist plausibel, denn physikalisch<br />

interessante Eigenschaften werden ja in der Regel gerade durch diese Symmetrien <strong>und</strong><br />

Erhaltungsgrößen bestimmt. Daraus ergibt sich folgende empirische Faustregel:<br />

Für die numerische Iteration physikalischer<br />

Probleme sind gr<strong>und</strong>sätzlich Iterationsalgorithmen<br />

zu bevorzugen, welche die Erhaltungsgrößen <strong>und</strong><br />

Symmetrien des Systems respektieren.<br />

Iterationsvorschriften, welche die Erhaltungsgrößen <strong>und</strong> Symmetrien eines Systems respektieren,<br />

werden oft als symplektische Algorithmen bezeichnet. Die Bezeichnung stammt<br />

aus der klassischen Mechanik, da die Hamiltonschen Bewegungsgleichung unter der Gruppe<br />

der symplektischen Transformationen invariant sind.<br />

Ein bekanntes Beispiel ist der sogenannte leapfrog-Algorithmus <strong>für</strong> die Iteration von<br />

Newtonschen Bewegungsgleichungen. Er unterscheidet sich von einer einfachen Euler-<br />

Iteration nur dadurch, dass die Geschwindigkeiten zu halben Zeitschritten, die Position<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.1 Gewöhnliche Differentialgleichungen 17<br />

Abbildung 2.3: Einschritt- <strong>und</strong> Mehrschrittverfahren. Iterationsalgorithmen kann man sich als gleitende<br />

Automaten vorstellen, die auf einer Zahlenfolge {y j} den jeweils nächsten Wert<br />

(hier y 4) erzeugen. Bei einem Einschrittverfahren wie z.B. dem Runge-Kutta-Verfahren<br />

zweiter Ordnung (RK2) benötigt dieser Automat nur den jeweils vorangegangenen y-<br />

Wert, ruft aber da<strong>für</strong> die Funktion f mehrfach auf. Ein Mehrschrittverfahren wie die<br />

Adams-Bashforth-Methode (AB) benötigt mehrere y-Werte der Folge, ruft aber da<strong>für</strong><br />

die Funktion f nur einmal auf.<br />

dagegen zu ganzen Zeitschritten iteriert wird. Die Iterationsvorschrift lautet:<br />

⃗r(t + h) := ⃗r(t) + h⃗v(t + h/2) (2.30)<br />

⃗v(t + h/2) := ⃗v(t − h/2) − hg⃗r(t)/|⃗r(t)| 3<br />

Im Gegensatz zum Euler-Verfahren ist dies jedoch bereits ein Iterationsverfahren zweiter<br />

Ordnung (Übung). Man kann zeigen, dass der leapfrog-Algorithmus als exakte Symmetrie<br />

das differentielle Phasenraumvolumen erhält. Die Energie ist allerdings, wie man sich<br />

leicht überzeugen kann, nicht exakt erhalten, jedoch kann man zeigen, dass die Energie<br />

nach jeweils einem Umlauf des Planeten wieder an den ursprünglichen Wert zurückkehrt.<br />

Die Energie oszilliert also nur geringfügig um den konstanten Sollwert. In diesem Sinne<br />

ist der leapfrog-Algorithmus <strong>für</strong> geschlossene Bahnen auch energieerhaltend.<br />

Iteriert man die oben beschriebene Planetenbewegung numerisch, so erhält man in der Tat<br />

ellipsenförmige Bahnen, deren Halbachsen ihre Länge nicht ändern. Allerdings wandert<br />

die Ellipse langsam um das Zentralgestirn herum. Der Runge-Lenz-Vektor rotiert also.<br />

Das ist nicht allzu überraschend, denn dieser Vektor repräsentiert eine weitere wichtige<br />

Erhaltungsgröße der Bahnbewegung im 1/r-Potential, die aber offenbar von dem leapfrogupdate<br />

nicht respektiert wird.<br />

2.1.10 Mehrschrittverfahren *<br />

Die bisher behandelten numerischen Verfahren zur Lösung von Differentialgleichungen<br />

sind sogenannte Einschrittverfahren, d.h. zur Berechnung der nächsten Stützstelle y j+1<br />

muss man nur die jeweils zuletzt berechnete Stützstelle y j kennen. Bei Verfahren höherer<br />

Ordnung steigt der Rechenaufwand durch mehrfache Aufrufe der Funktion f(x, y),<br />

z.B. wird bei einem Runge-Kutta-Verfahren k-ter Ordnung diese Funktion <strong>für</strong> jeden Iterationsschritt<br />

genau k-mal aufgerufen. Einschrittverfahren sind also besonders effizient,<br />

wenn die Funktion f(x, y) nur wenig CPU-Zeit verbraucht.<br />

Oft verschlingt aber gerade die Funktion f(x, y) besonders viel Rechenzeit, insbesondere<br />

wenn trigonometrische Funktionen, Logarithmen, Rekursionen oder approximierte Reihen<br />

darin vorkommen. In diesem Fall bieten sich sogenannte Mehrschrittverfahren an.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


18 Differentialgleichungen<br />

Hier wird die Funktion f(x, y) pro Iterationsschritt nur einmal aufgerufen, während die<br />

Fehlerordnung dadurch verbessert wird, dass man nicht nur die jeweils letzte Stützstelle<br />

y j , sondern auch die vorangehenden y j−1 , y j−2 , . . . , y j−M+1 bzw. die Funktionswerte von<br />

f an diesen Stellen <strong>für</strong> den Update mit einbezieht, wobei M > 0 eine ganze Zahl ist.<br />

Diese Werte müssen nicht neu berechnet, sondern lediglich zwischengespeichert werden.<br />

Eine wichtige Rolle spielen lineare Mehrschrittverfahren, die sich in der generischen Form<br />

M−1<br />

∑<br />

k=0<br />

a k y j−k<br />

M−1<br />

∑<br />

= h b k f(x j−k , y j−k ) (2.31)<br />

k=0<br />

schreiben lassen, wobei die Koeffizienten a i , b i das Verfahren bestimmen. Diese müssen<br />

konsistent sein in dem Sinne, dass das Verfahren <strong>für</strong> h → 0 gegen die exakte Lösung<br />

konvergiert. Wenn man die obige Iterationsformel nach y j auflösen kann, spricht man<br />

von einem expliziten, andernfalls von einem impliziten Mehrschrittverfahren. Eines der<br />

bekanntesten expliziten Verfahren ist die Adams-Bashforth-Methode mit zwei oder drei<br />

Schritten:<br />

3<br />

y j+1 = y j + h(<br />

2 f(x j, y j ) − 1 )<br />

2 f(x j−1, y j−1 )<br />

(2.32)<br />

( 23<br />

y j+1 = y j + h<br />

12 f(x j, y j ) − 16<br />

12 f(x j−1, y j−1 ) + 5 )<br />

12 f(x j−2, y j−2 ) . (2.33)<br />

2.2 Partielle Differentialgleichungen<br />

Partielle Differentialgleichungen treten immer dann auf, wenn ein Problem durch mehrere<br />

unabhängige Variablen beschrieben wird. In der <strong>Physik</strong> ist das immer der Fall, wenn<br />

Funktionen wie z.B. Felder oder Dichten auf dem dreidimensionalen Raum oder auf der<br />

3+1-dimensionalen Raumzeit untersucht werden. Formal erkennt man partielle Differentialgleichungen<br />

an partiellen Ableitungen. Ein klassisches Beispiel ist die Wellengleichung<br />

∂ 2<br />

∂t 2 φ(⃗x, t) − c2 ∇ 2 φ(⃗x, t) = 0 (2.34)<br />

oder kurz (∂ 2 t + c 2 ∇ 2 )φ = 0, wobei ∇ = (∂ x , ∂ y , ∂ z ) der Gradient, ∇ 2 = ∂ 2 x + ∂ 2 y + ∂ 2 z<br />

der Laplacian, φ(⃗x, t) ein skalares Feld <strong>und</strong> c die Lichtgeschwindigkeit ist. Ein weiteres<br />

Beispiel ist die Wärmeleitungsgleichung<br />

∂<br />

∂t ϱ(⃗x, t) = D∇2 ϱ(⃗x, t) (2.35)<br />

mit der Diffusionskonstanten D, die erster Ordnung in der Zeit <strong>und</strong> damit irreversibel<br />

ist. Formal äquivalent bis auf ein komplexes i ist die Schrödingergleichung<br />

i ∂ 2<br />

ψ(⃗x, t) = −<br />

∂t 2m ∇2 ψ(⃗x, t) (2.36)<br />

die ebenfalls erster Ordnung in der Zeit ist, jedoch unter Komplexkonjugation reversibel<br />

ist.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 19<br />

Im Gegensatz zu gewöhnlichen Differentialgleichungen, deren Lösung durch Anfangswerte<br />

vollständig determiniert ist, benötigen partielle Differentialgleichungen analoge Restriktionen<br />

in den räumlichen Freiheitsgraden, die als Randwerte bezeichnet werden. Man<br />

muss also in der Regel sowohl die Anfangs- als auch die Randbedingungen spezifizieren.<br />

Der Ton eine Trommel hängt eben nicht nur vom Schlag, sondern auch von ihrer Form<br />

ab. 2<br />

2.2.1 Konzept der Quantenmechanik kurz gefasst<br />

In der klassischen Mechanik ist ein System zu jeder Zeit in einem definitiven Zustand.<br />

Beispielsweise befindet sich ein Punktteilchen zu jeder Zeit t an einem ganz bestimmten<br />

Ort ⃗x(t) <strong>und</strong> besitzt einen bestimmten Impuls ⃗p(t). Der Systemzustand (also Ort <strong>und</strong><br />

Impuls) ist objektive Realität, also zu jeder Zeit eine unabhängig vom Beobachter existierende<br />

Wirklichkeit. Kern der Quantentheorie ist dagegen eine radikale Abkehr vom<br />

Konzept der objektiven Realität. Die beobachterunabhängige Wirklichkeit gibt es nicht<br />

mehr, vielmehr entsteht Wirklichkeit erst im Moment der Beobachtung, also der Messung<br />

einer Eigenschaft. Ein Teilchen ist also erst dann an einem bestimmten Ort, wenn ich die<br />

entsprechende Frage an das Teilchen stelle, also eine Ortsmessung durchführe.<br />

Aber was heißt es, nicht an einem bestimmten Ort zu sein?<br />

Könnte es nicht sein, dass das Teilchen in Wirklichkeit doch<br />

immer an einem bestimmten Ort ist, dass man vor der Messung<br />

nur nicht weiss, wo es ist? Nein, denn das wäre ledigleich<br />

eine unvollständige Kenntnis des Beobachters. Die<br />

quantenmechanische Unbestimmtheit ist dagegen eine Eigenschaft<br />

des Teilchens selbst, ein potentielles nicht-realsein.<br />

Keine Sorge: Wenn Sie damit Verständnisprobleme haben,<br />

sind Sie in bester Gesellschaft.<br />

Quelle: Uni Oldenburg<br />

In der klassischen Mechanik geht man davon aus, dass man Ort <strong>und</strong> Impuls eines Teilchen<br />

messen kann ohne dabei das Teilchen zu beeinflussen, dass man also den Systemzustand<br />

rückwirkungsfrei bestimmen kann. In der Quantenmechanik ist das im Allgemeinen nicht<br />

möglich. Wird nämlich das System durch Messung gezwungen, eine Frage zu beantworten,<br />

so muss es sich <strong>für</strong> eine Antwort entscheiden <strong>und</strong> wird durch diesen Entscheidungsprozess<br />

selbst verändert.<br />

Hat sich das System erstmal <strong>für</strong> eine Antwort entschieden, also eine Realität bezüglich<br />

einer Frage hergestellt, wird es bei dieser Entscheidung bleiben, wenn man unmittelbar<br />

darauf die gleiche Frage noch einmal stellt. Findet man beispielsweise das Teilchen<br />

durch Ortsmessung am Ort ⃗x, wird es bei einer unmittelbar darauf folgenden zweiten<br />

Ortsmessung immer noch am Ort ⃗x sein. Stellt man aber eine andere Frage, so wird<br />

die zuvor geschaffene Realität teilweise oder ganz zerstört. Durch eine Impulsmessung<br />

vergisst das Teilchen seinen Aufenthaltsort, durch eine Ortsmessung seinen Impuls. Man<br />

sagt in diesem Fall, dass die Messungen nicht kommutieren.<br />

2 “Can One Hear the Shape of a Drum?” , fragte der Mathematiker Mark Kac im Jahre 1966. Zweifellos<br />

bestimmt die Form der Trommel deren Klang, aber können wir am Klangspektrum die Form rekonstruieren?<br />

Erst 1992 gelang der Beweis: Falls die Form konvex <strong>und</strong> analytisch ist, ist die Antwort<br />

positiv, im allgemeinen trifft die Behauptung aber nicht zu.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


20 Differentialgleichungen<br />

Bemerkung: In der Praxis wird der Impuls nur mit einer endlichen Auflösung ∆p gemessen.<br />

In diesem Fall vergisst das Teilchen seinen Aufenthaltsort nur teilweise in einem<br />

Toleranzbereich ∆x, gegeben durch die Heisenbergsche Unschärferelation ∆x∆p = /2.<br />

2.2.2 Die Schrödingergleichung<br />

Zum Glück wird die Quantenmechanik trotz ihrer begrifflichen Schwierigkeiten durch<br />

einen recht einfachen mathematischen Formalismus beschrieben. Der quantenmechanische<br />

Zustand eines Punktteilchens wird durch eine komplexwertige Wellenfunktion<br />

ψ(⃗x) ∈ C charakterisiert. Bei einer Messung des Aufenthaltsortes ist die Wahrscheinlichkeit<br />

(genauer: Wahrscheinlichkeitsdichte) <strong>für</strong> das Messergebnis ⃗x durch<br />

ρ(⃗x) = ψ ∗ (⃗x)ψ(⃗x) (2.37)<br />

gegeben. Die Wellenfunktion stellt die maximale Kenntnis dar, die man über ein System<br />

besitzen kann, ist also eine vollständige Beschreibung des quantenmechanischen Zustands<br />

des Systems.<br />

Ähnlich wie sich ein klassisches Teilchen bewegt, sich also sein Zustand (⃗x, ⃗p) als Funktion<br />

der Zeit verändert, unterliegt auch der quantenmechanische Zustand ψ(⃗x, t) einer<br />

Zeitentwicklung. Diese Zeitentwicklung wird durch eine partielle Differentialgleichung beschrieben.<br />

Man erhält sie per Kochrezept, indem man in der Energie-Impuls-Beziehung<br />

die formale Ersetzung<br />

E → i∂ t , ⃗p → −i∇ (2.38)<br />

durchführt <strong>und</strong> dann beide Seiten auf die Wellenfunktion wirken lässt. Für die Energie-<br />

Impuls-Beziehung eines Teilchens in einem Potential<br />

erhält man so die (zeitabhängige) Schrödingergleichung<br />

i∂ t ψ(⃗x, t) =<br />

E = p2<br />

+ V (⃗x) (2.39)<br />

2m<br />

(− 2 ∇ 2<br />

2m + V (⃗x) )<br />

ψ(⃗x, t) . (2.40)<br />

Es handelt sich um eine lineare partielle Differentialgleichung von 1. Ordnung in der Zeit<br />

<strong>und</strong> 2. Ordnung in den räumlichen Koordinaten. Bis auf das i ist sie formal äquivalent<br />

zur Wärmeleitungsgleichung. Wenn Ihnen die physikalischen Gr<strong>und</strong>lagen noch nicht so<br />

vertraut sind, können Sie in den folgenden Abschnitten diese Gleichung auch als ein<br />

gegebenes mathemtisches Problem betrachten, das es zu lösen gilt.<br />

2.2.3 Stationäre Schrödingergleichung<br />

Zunächst werden wir den Fall betrachten, in dem die Wahrscheinlichkeitsdichte ρ(x, t) =<br />

ψ ∗ (x, t)ψ(x, t), ein Teilchen am Ort ⃗x zu finden, stationär, also zeitunabhängig ist. In<br />

diesem Fall muss die gesamte Zeitabhängigkeit der Wellenfunktion in einem konstant<br />

rotierenden Phasenfaktor zum Ausdruck kommen, d.h.<br />

ψ(⃗x, t) = e −iωt ψ(⃗x) . (2.41)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 21<br />

Setzt man diesen Ansatz in die Schrödingergleichung ein, wird man auf die zeitunabhängige<br />

Schrödingergleichung<br />

(− 2<br />

)<br />

2m ∇2 + V (⃗x) ψ(⃗x) = Eψ(⃗x) (2.42)<br />

geführt, wobei E = ω ist.<br />

Vom mathematischen Standpunkt aus gesehen ist die stationäre Schrödingergleichung ein<br />

Eigenwertproblem, d.h. wir suchen die Eigenwerte E <strong>und</strong> die Eigenfunktionen ψ(⃗x) des<br />

linearen Operators − 2<br />

2m ∇2 + V (⃗x). Für bestimmte Spezialfälle wie z.B. <strong>für</strong> den harmonischen<br />

Oszillator V (⃗x) = 1 2 mω2 x 2 oder das Coulombpotential V (⃗x) ∝ 1/x kann dieses<br />

Eigenwertproblem exakt gelöst werden. Solche exakt lösbaren Systeme (auch integrable<br />

Systeme genannt) sind aber eher die Ausnahme als die Regel. Schon ein harmonischer<br />

Oszillator mit einer anharmonischen Störung<br />

V (⃗x) = 1 2 mω2 x 2 + λx 4 (2.43)<br />

kann nicht exakt gelöst werden. Hier schlägt die St<strong>und</strong>e der numerischen Integration<br />

per Computer, denn numerische Methoden sind unabhängig von der Integrabilität eines<br />

Systems.<br />

Der Einfachheit halber betrachten wir im Folgenden einen eindimensionalen Raum <strong>und</strong><br />

skalieren die Größen so um, dass die stationäre Schrödingergleichung dimensionslos wird:<br />

( )<br />

ψ ′′ (x) + 2 E − V (x) ψ(x) = 0 ,<br />

} {{ }<br />

V (x) = 1 2 x2 + λx 4 (2.44)<br />

K(x)<br />

Durch die Zeitunabhängigkeit <strong>und</strong> Beschränkung auf nur eine Raumdimension haben wir<br />

das Problem auf eine gewöhnliche Differentialgleichung reduziert. Man könnte also z.B.<br />

direkt eines der oben beschriebenen Runge-Kutta-Verfahren einsetzen. Doch wie wählt<br />

man dabei die Anfangsbedingungen?<br />

Hier hilft uns die Symmetrie des Problems. Da das Potential spiegelsymmetrisch ist (d.h.<br />

V (x) = V (−x)) müssen auch die Lösungen der Differentialgleichung bestimmte Symmetrieeigenschaften<br />

erfüllen. Naiv würde man erwarten, dass dann auch ψ(x) symmetrisch<br />

sein müsse. Es ist aber in der Quantentheorie so, dass auch antisymmetrische Wellenfunktionen<br />

möglich sind.<br />

Beweis: Die Spiegelsymmetrie des Potentials impliziert, dass <strong>für</strong> jede Lösung ψ(x) auch<br />

die reflektierte Wellenfunktion ψ(−x) eine Lösung der DGL sein muss. Da normierte Eigenfunktionen<br />

nur bis auf einen Phasenfaktor definiert sind, können sich die beiden Wellenfunktionen<br />

nur durch einen Phasenfaktor unterscheiden, d.h. ψ(x) = e iφ ψ(−x). Wenn<br />

man nun x = 0 setzt, ist folglich entweder φ = 0 oder ψ(0) = 0. Differenziert man die<br />

Gleichung dagegen erst nach x <strong>und</strong> setzt dann x = 0, so erhält man φ = π oder ψ ′ (0) = 0.<br />

Das ergibt vier Kombinationen:<br />

φ = 0 ∧ φ = π unmöglich<br />

φ = 0 ∧ ψ ′ (0) = 0 symmetrische Lösung<br />

φ = π ∧ ψ(0) = 0 antisymmetrische Lösung<br />

ψ(0) = 0 ∧ ψ ′ (0) = 0 ergäbe eine verschwindende Wellenfunktion ψ(x) ≡ 0<br />

Die Symmetrie des Potentials erzwingt also, dass die Lösungen entweder symmetrisch oder<br />

antisymmetrisch sind. In der Tat wechseln sich beim harmonischen Oszillator bei steigender<br />

Energiequantenzahl diese beiden Lösungstypen ab.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


22 Differentialgleichungen<br />

Für symmetrische Wellenfunktionen ist also die “Anfangsbedingung” ψ(0) > 0, ψ ′ (0) = 0<br />

zu wählen, während man bei einer antisymmetrischen Lösung mit ψ(0) = 0, ψ ′ (0) > 0<br />

beginnt. Am Schluss ist das Ergebnis korrekt zu normieren. Mit diesem Vorwissen könnte<br />

man nun eine Runge-Kutta-Integration durchführen. Effizienter ist jedoch das speziell<br />

<strong>für</strong> die Schrödingergleichung angepasste Numerov-Verfahren, das im nächsten Abschnitt<br />

besprochen wird.<br />

2.2.4 Numerov-Verfahren<br />

Das Numerov-Verfahren benutzt zwei unterschiedliche äquidistante Diskretisierungen,<br />

nämlich<br />

• x n := (n − 1 2<br />

)h bei symmetrischen Wellenfunktionen<br />

• x n := nh bei antisymmetrischen Wellenfunktionen<br />

Ziel ist die Lösung der Differentialgleichung<br />

ψ ′′ (x) + K(x)ψ(x) = 0 , (2.45)<br />

wobei in K(x) = E−V (x) der zu bestimmende Energieeigenwert E steckt, siehe Gl. (2.44).<br />

Für die Diskretisierung benutzen wir die Notation<br />

k n := K(x n ) , ψ n := ψ(x n ) , ψ ′ n := ψ ′ (x n ) , ψ ′′<br />

n := ψ ′′ (x n ) usw. (2.46)<br />

Ausgangspunkt des Numerov-Verfahrens ist die Taylor-Entwicklung<br />

Daraus folgt<br />

ψ n±1<br />

= ψ n ± hψ n ′ + h2<br />

2 ψ′′ n ± h3<br />

6 ψ′′′ n + h4<br />

24 ψ′′′′ n + O(h 5 ) (2.47)<br />

ψ n+1 + ψ n−1 = 2ψ n + h 2 ψ ′′<br />

n + h4<br />

12 ψ′′′′<br />

n + O(h 6 ) (2.48)<br />

In dieser Formel müssen die zweite <strong>und</strong> die vierte Ableitung geeignet durch ψ n , ψ n±1<br />

ausgedrückt werden. Für die zweite Ableitung kann man einfach die Schrödingergleichung<br />

ψ ′′<br />

n = −k n ψ n (2.49)<br />

benutzen. Um die vierte Ableitung auszudrücken, setzt man zunächst ebenfalls die Schrödingergleichung<br />

ein (also ψ n<br />

′′′′ = −(k n ψ n ) ′′ ) <strong>und</strong> nähert die verbleibende zweite Ableitung<br />

durch den entsprechenden Differenzenquotienten<br />

ψ ′′<br />

n<br />

Dies führt auf die Näherung<br />

= ψ n+1 − 2ψ n + ψ n−1<br />

h 2 + O(h 2 ) . (2.50)<br />

ψ ′′′′<br />

n = (−k n ψ n ) ′′ ≃ − k n+1ψ n+1 − 2k n ψ n + k n−1 ψ n−1<br />

h 2 . (2.51)<br />

Diese Näherung wird nun in die Gleichung (2.48) eingesetzt, wobei die Terme O(h 6 )<br />

vernachlässigt werden. Man erhält auf diese Weise<br />

ψ n+1 + ψ n−1<br />

= 2ψ n − h 2 k n ψ n − h2<br />

12 (k n+1ψ n+1 + k n−1 ψ n−1 ) + h2<br />

6 k nψ n + O(h 6 ) , (2.52)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 23<br />

Abbildung 2.4: Suchen der Gr<strong>und</strong>zustandsenergie eines anharmonischen Oszillators mit Hilfe des<br />

Numerov-Verfahrens. Je genauer der Eigenwert eingegrenzt wird, desto später divergiert<br />

die Wellenfunktion. Durch den Vorzeichenwechsel kann der Eigenwert iterativ<br />

eingegrenzt werden, wobei die Maschinengenauigkeit Grenzen setzt.<br />

also eine Gleichung, die nach ψ n+1 – den in einer Iteration jeweils nächsten zu berechnenden<br />

Wert – aufgelöst werden kann:<br />

ψ n+1<br />

≃ 2ψ n (1 − 5h2<br />

12 k n) − ψ n−1 (1 + h2<br />

12 k n−1)<br />

1 + h2<br />

12 k n+1<br />

(2.53)<br />

Das Numerov-Verfahren ist also eine zweistufige lineare Iteration. Als Anfangsbedingungen<br />

wählt man<br />

ψ 0 = 1, ψ 1 = 1<br />

<strong>für</strong> symmetrische Lösungen<br />

ψ 0 = 0, ψ 1 = h <strong>für</strong> antisymmetrische Lösungen (2.54)<br />

Die erste Anfangsbedingung beschreibt eine symmetrische Lösung mit ψ(0) = 1 <strong>und</strong><br />

ψ ′ (0) = 0 während die zweite Anfangsbedingung eine Lösung mit ψ(0) = 0 <strong>und</strong> der<br />

Steigung ψ ′ (0) = 1 beschreibt. Mit diesen Anfangsbedingungen generiert der Algorithmus<br />

eine approximative Lösung der Schrödingergleichung, die anschließend noch normiert<br />

werden muss. Man beachte außerdem, dass die erzeugten ψ n reell sind. Das ist nicht<br />

überraschend, da die zeitunabhängige Schrödingergleichung kein i mehr enthält, also<br />

selbst reell ist <strong>und</strong> damit reelle Lösungsfunktionen zulassen muss.<br />

Woraus ergibt sich aber nun die Quantisierung der Energie E in Potentialen wie z.B. in<br />

Gl. (2.43)? Hier kommt die Randbedingung ins Spiel, derzufolge die Wellenfunktion <strong>für</strong><br />

große x verschwinden muss, weil dort die Wahrscheinlichkeit ein Teilchen zu finden gegen<br />

Null geht:<br />

lim ψ(x) = 0 . (2.55)<br />

x→±∞<br />

Da das Numerov-Verfahren als solches diese Randbedingung nicht kennt, kommt es zu<br />

einer Verletzung der Randbedingung, sobald die Energie E nicht genau auf einen Eigenwert<br />

eingestellt ist, <strong>und</strong> zwar divergiert in diesem Fall ψ n <strong>für</strong> große n exponentiell. In der<br />

Praxis ist es auf einem Computer sogar unmöglich, den Eigenwert genau zu treffen: Jede<br />

geringste Abweichung in den Nachkommastellen wird irgendwann so stark verstärkt, dass<br />

ψ n exponentiell divergiert.<br />

Allerdings ändert sich das Vorzeichen der Divergenz in Abhängigkeit von E. Für Energien<br />

unterhalb der Gr<strong>und</strong>zustandsenergie 0 < E < E 0 strebt ψ n → +∞, im Intervall<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


24 Differentialgleichungen<br />

E 0 < E < E 1 dann nach −∞, im nächsten Intervall wieder nach +∞ <strong>und</strong> so fort.<br />

Man kann dieses alternierende Vorzeichen benutzen, um so die Eigenwerte sukzessive zu<br />

approximieren (siehe Abb. 2.4).<br />

Bemerkung: Die approximative Bestimmung der Eigenwerte geschieht ähnlich wie die<br />

numerische Bestimmung von Nullstellen einer Funktion. Sei dazu sgn(E) das Vorzeichen der<br />

Divergenz in Abhängigkeit von E. Zunächst wählt man ein Energieintervall [E min, E max],<br />

in dem genau ein Vorzeichenwechsel stattfindet, d.h. sgn(E min) = −sgn(E max). Dieses<br />

Intervall wird halbiert bei E c<br />

:= (E min + E max)/2 <strong>und</strong> das Vorzeichen an dieser Stelle<br />

ermittelt. Ist sgn(E min) = sgn(E c), so liegt der Eigenwert nicht in der linken Hälfte <strong>und</strong><br />

wir setzen E min := E c, andernfalls setzen wir E max := E c. Dieser Prozess wird so lange<br />

wiederholt, bis die Größe des Intervalls die Maschinengenauigkeit erreicht.<br />

Der eindimensionale harmonische Oszillator eignet sich hervorragend, um die abgeschätzten<br />

Energieeigenwerte zu überprüfen. Für gerade Wellenfunktionen erwartet man die<br />

Eigenwerte 1 2 , 5 2 , 9 2 , . . . <strong>und</strong> entsprechend <strong>für</strong> die ungeraden Wellenfunktionen 3 2 , 7 2 , 11 2 . . . .<br />

2.2.5 Zeitabhängige Schrödingergleichung – Modenzerlegung<br />

Im vorherigen Abschnitt haben wir die stationären Lösungen der Schrödingergleichung<br />

bestimmt, bei denen die Wahrscheinlichkeitsdichte, also das Betragsquadrat der Wellenfunktion,<br />

zeitunabhängig ist. Noch interessanter ist es aber, die zeitabhänige Schrödingergleichung<br />

i ˙ψ(x, t) = ( − 2<br />

2m ∇2 + V (x) ) ψ(x, t) . (2.56)<br />

mit einem gegebenen Anfangszustand ψ(x, t)| t=0 := ψ(x, 0) zu untersuchen. Was passiert<br />

mit einem Teilchen, das als Wellenpaket mit einem bestimmten mittleren Impuls dem<br />

Potential ausgesetzt wird? Wird es näherungsweise schwingen wie ein klassisches Teilchen?<br />

Wie wird es an den Potentialwänden reflektiert? Eine numerische Methode, mit<br />

der diese Fragen beantwortet werden können, ist die sogenannte Modenzerlegung. Diese<br />

Methode setzt voraus, dass das zuvor behandelte stationäre Problem lösbar ist, dass also<br />

die Energieeigenwerte E i <strong>und</strong> die dazugehörigen stationären Wellenfunktionen ψ i (x) zur<br />

Verfügung stehen. Eine andere Methode, die von dieser Voraussetzung unabhängig ist,<br />

wird im folgenden Abschnitt besprochen.<br />

Methode der Modenzerlegung<br />

Die Methode der Modenzerlegung 3 (engl. mode decomposition) funktioniert folgendermaßen.<br />

Wiederum beschränken wir uns weiterhin auf ein Teilchen in einem eindimensionalen<br />

Potential <strong>und</strong> setzen voraus, dass das stationäre Eigenwertproblem Hψ = Eψ<br />

gelöst ist, dass also die Eigenfunktionen ψ n (x) <strong>und</strong> die dazugehörigen Energieeigenwerte<br />

E n bekannt sind. Die Idee besteht nun darin, dass man den Anfangszustand ψ(x, 0) als<br />

Linearkombination der Eigenfunktionen<br />

ψ(x, 0) = ∑ n<br />

a n ψ n (x) (2.57)<br />

3 Unter einer Mode versteht man in der <strong>Physik</strong> eine Eigenfunktionen, man spricht z.B. von den Schwingungsmoden<br />

eines mechanischen Systems. Eine Nullmode ist eine Eigenfunktion zum Eigenwert Null.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 25<br />

mit zu bestimmenden Koeffizienten a n ∈ C darstellt. Weil die Zeitabhängigkeit jeder<br />

Eigenfunktion (vgl. Gl. (2.41)) durch ψ(⃗x, t) = e −iωt ψ(⃗x) gegeben ist, ist dann die volle<br />

zeitabhängige Lösung durch<br />

ψ(x, t) = ∑ n<br />

a n e −iωnt ψ n (x) (2.58)<br />

gegeben, wobei E n = ω n ist. Diese Lösung erfüllt automatisch die Randbedingungen,<br />

da bereits jede der stationären Wellenfunktionen die Randbedingungen respektiert. Hat<br />

man also die Koeffizienten a n bestimmt, so steht einem sofort die zeitabhängige Lösung<br />

in Form einer Summe bzw. Reihe über die Eigenmoden zur Verfügung.<br />

Bestimmung der Koeffizienten a n<br />

Gl. (2.57) kann als lineares Gleichungssystem <strong>für</strong> die Koeffizienten a n interpretiert werden.<br />

Die Lösung dieses linearen Gleichungssystems ist allerdings sehr einfach. Da H<br />

hermitesch ist, sind nicht nur die Eigenwerte reell, sondern auch die (normierten) Eigenvektoren<br />

paarweise orthogonal: 4<br />

Daraus folgt<br />

∫ +∞<br />

−∞<br />

dx ψ ∗ n(x)ψ m (x) = δ n,m . (2.59)<br />

∫ +∞<br />

−∞<br />

dx ψ ∗ (x, 0)ψ m (x) = ∑ n<br />

∫ +∞<br />

−∞<br />

dx a n ψ ∗ n(x)ψ m (x) = ∑ n<br />

a n δ n,m , (2.60)<br />

also<br />

a n =<br />

∫ +∞<br />

−∞<br />

dx ψ ∗ (x, 0)ψ n (x) . (2.61)<br />

Beispiel Potentialtopf<br />

Wir demonstrieren nun die Modenzerlegung am Beispiel des eindimensionalen unendlich<br />

hohen Potentialtopfs<br />

{<br />

0 falls |x| <<br />

1<br />

2<br />

V (x) =<br />

. (2.62)<br />

∞ falls |x| ≥ 1 2<br />

Die Eigenfunktionen lauten<br />

ψ n (x) =<br />

{ √<br />

2 cos(nπx) wenn n ungerade<br />

√<br />

2 sin(nπx) wenn n gerade<br />

(2.63)<br />

mit den dimensionslosen Eigenenergien<br />

E n = n 2 π 2 n = 1, 2, . . . . (2.64)<br />

4 Der Einfachheit halber nehmen wir hier an, dass keine Entartungen vorliegen. Bei Entartungen sind die<br />

Eigenvektoren in den entsprechenden Unterräumen zu orthogonalisieren, z.B. mit dem Schmidt’schen<br />

Verfahren.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


26 Differentialgleichungen<br />

Die Eigenfunktionen sind reell, so dass man nicht komplex konjugieren muss. Bestimmt<br />

man mit Hilfe von Gl. (2.61) die Koeffizienten a n , so ist die zeitabhängige Lösung durch<br />

ψ(x, t) =<br />

+<br />

∞∑<br />

a 2m exp ( −iπ 2 (2m) 2 t ) sin ( 2mπx )<br />

m=1<br />

∞∑<br />

a 2m−1 exp ( −iπ 2 (2m − 1) 2 t ) cos ( (2m − 1)πx )<br />

m=1<br />

gegeben, wobei gerade <strong>und</strong> ungerade Anteile getrennt wurden. In der Praxis bestimmt<br />

man allerdings nicht unendlich viele Koeffizienten a n , sondern bricht die Reihe nach<br />

einem bestimmten n max ab <strong>und</strong> approximiert auf diese Weise den Anfangszustand durch<br />

eine Superposition endlich vieler Fourier-Moden. Im folgenden Mathematica R○ -Fragment<br />

werden beispielsweise die ersten 25 Moden eines Wellenpakets berücksichtigt:<br />

psi[n_, x_] := Sqrt[2]*If[EvenQ[n], Sin[n Pi x], Cos[n Pi x]];<br />

Energie[n_] := n^2 Pi^2;<br />

sigma = 0.03; k = 10; nmax = 25;<br />

psi0[x_] := E^(I k x) E^(-(x^2/(2 sigma^2)));<br />

Do[a[n] = Integrate[psi0[x]*psi[n, x], {x, -(1/2), 1/2}], {n, 1, nmax}];<br />

Psi[x_, t_] := Sum[(a[n]*psi[n, x])*E^(I*Energie[n]*t), {n, 1, nmax}];<br />

Plot3D[Abs[Psi[x, t]]^2, {x, -(1/2), 1/2}, {t, 0, 0.022},<br />

PlotRange -> All, PlotPoints -> 30]<br />

In diesem Beispiel wurde die Anfangsbedingung<br />

ψ(x, 0) = e ikx e − 1<br />

2σ 2 x2 (2.65)<br />

benutzt. Der zweite Faktor beschreibt ein bei x = 0 zentriertes Wellenpaket in Form<br />

einer Gausßglocke mit der Breite σ. Durch Multiplikation mit einer ebenen Welle (erster<br />

Faktor) bekommt das Teilchen einen Impuls p = k, also eine Geschwindigkeit v = k/m.<br />

Mit Hilfe der Modenzerlegung lässt sich also untersuchen, wie ein solches Wellenpaket,<br />

das als quantenmechanisches Pendant eines lokalisierten klassischen Teilchens aufgefasst<br />

werden kann, an der Wand des Potentialtopfs reflektiert wird.<br />

Die Ausgabe des oben angegebenen Codes ist in Abb. 2.5 zu sehen. Es ist erstaunlich,<br />

dass ein so einfaches Problem derart komplexe Lösungen besitzt. Klar zu erkennen ist das<br />

anfängliche Wellenpaket bei t = 0. Weil verschiedene Fourier-Komponenten dieses Wellenpakets<br />

mit verschiedenen Geschwindigkeiten propagieren, zerfließt dieses Wellenpaket<br />

<strong>und</strong> wird schließlich durch ein Interferenzphänomen an den Wänden reflektiert.<br />

2.2.6 Zeitabhängige Schrödingergleichung – Numerische Integration<br />

Die zuvor beschriebene Methode der Eigenmodenzerlegung setzt zum einen voraus, dass<br />

man die Eigenfunktionen der stationären Schrödingergleichung kennt <strong>und</strong> zum zweiten,<br />

dass man die Anfangsbedingung in diesen Eigenfunktionen entwickeln kann, also das<br />

lineare Problem auf praktische Weise lösbar ist. Nur wenige Beispiele, unter ihnen der<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 27<br />

Abbildung 2.5: Lösung der zeitabhängigen Schrödingergleichung mit Hilfe der Modenzerlegung <strong>für</strong> ein<br />

freies Teilchen in einem Potentialtopf, das anfangs als Wellenpaket mit einem Impuls<br />

in der Mitte des Topfes platziert wird.<br />

Potentialtopf <strong>und</strong> der harmonische Oszillator, lassen sich so behandeln. Um allgemeinere<br />

Probleme zu behandeln sind numerische Verfahren erforderlich, mit der die Zeitentwicklung<br />

in diskretisierter Form direkt konstruiert wird.<br />

Direkte Bestimmung mit Mathematica R○<br />

Die neueren Versionen von Mathematica R○<br />

Differentialgleichungen direkt zu lösen<br />

sind in der Lage, bestimmte lineare partielle<br />

Man erhält eine Interpolationsfunktion, also eine Menge diskreter Punkte, die untereinander<br />

durch geeignete interpolierende Kurvensegmente verb<strong>und</strong>en sind. Eine 3D-Ausgabe<br />

wie in Abb. 2.5 erhält man dann mit dem Befehl<br />

Plot3D[Abs[f[t, x] /. erg[[1]]]^2, {x, -(1/2), 1/2}, {t, 0, 0.022},<br />

PlotPoints -> 100, PlotRange -> {0, 1}]<br />

Der Vorteil einer solchen direkten Bestimmung ist die einfache Bedienung. Demgegenüber<br />

steht eine gewisse Undurchschaubarkeit der internen Abläufe <strong>und</strong> damit eine erschwerte<br />

Beurteilung der Ergebnisse.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


28 Differentialgleichungen<br />

Abbildung 2.6: Integration der zeitabhängigen Schrödingergleichung in einem eindimensionalen Potentialtopf.<br />

Links: Bei Vorgabe einer Anfangsbedingung (rot) <strong>und</strong> einer Randbedigung<br />

(blau) beschreibt die Schrödingergleichung die Zeitentwicklung der Wellenfunktion<br />

(gelber Farbverlauf). Rechts: Diskretisierung des Problems auf einem Rechner.<br />

Die diskretisierte Differentialgleichung setzt sechs benachbarte Stützstellen, die wie<br />

ein 3x2-Legostein angeordnet sind, in eine lineare Beziehung. Dieser ‘Legostein’ kann<br />

beliebig verschoben werden.<br />

Unitärer Integrationsalgorithmus<br />

Wie integriert man die dimensionslose Schrödingergleichung<br />

i∂ t ψ(x, t) = (−∂ 2 x + V (x))ψ(x, t) (2.66)<br />

numerisch? Zunächst diskretisiert man die Wellenfunktion<br />

ψ(x, t) −→ ψ j←Ortsindex<br />

n←Zeitindex := ψ(j dx, n dt) (2.67)<br />

wobei dx = 1/N <strong>und</strong> dt die (nicht-infinitesimalen) Diskretisierungsintervalle in Raum<br />

<strong>und</strong> Zeit sind. Dabei laufe der Ortsindex j von 0 bis N, man hat also N + 1 Stützstellen<br />

pro Reihe.<br />

Danach ist die DGL auf geeignete Weise zu diskretisieren. Der erste cheap guess wäre<br />

die Ersetzung der partiellen Ableitungen durch<br />

∂ t ψ(x, t) −→ ψj n+1 − ψj n<br />

+ O(dt 2 ) (2.68)<br />

dt<br />

∂xψ(x, 2 t) −→ ψj+1 n − 2ψn j + ψn<br />

j−1<br />

dx 2 + O(dx 3 ) (2.69)<br />

Die so diskretisierte DGL verknüpft die Stützstellen (n, j), (n + 1, j), (n, j ± 1) <strong>und</strong><br />

(n + 1, j ± 1), gleitet also wie ein 3x2 Legostein über das Gitter (siehe Abb. 2.6). Diese<br />

naive Herangehensweise führt aber zu erheblichen Problemen:<br />

(a) Im Gegensatz zu den am Anfang dieses Kapitels behandelten gewöhnlichen Differentialgleichungen<br />

liegt hier kein reines Anfangswert, sondern ein kombiniertes<br />

Anfangs- <strong>und</strong> Randwertproblem vor (siehe Abb. 2.6). Um eine neue horizontale<br />

Reihe zu berechnen, die aus N + 1 Stützstellen von 0..N numerierten Punkten besteht,<br />

kann dieser Legostein N − 2 Positionen einnehmen; da man also nur N − 1<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 29<br />

Gleichungen pro Zeitschritt zur Verfügung hat, müssen zwei Werte vorgegeben werden,<br />

<strong>und</strong> dies geschieht durch die Dirchlet-Bedingung ψj 0 = ψN j = 0 am linken <strong>und</strong><br />

am rechten Rand. Das Problem besteht darin, dass die beiden Stützstellen weit<br />

voneinander entfernt sind, man kann deshalb nicht die neue Reihe durch einfaches<br />

Rastern von links nach rechts erzeugen.<br />

(b) Die Schrödingergleichung −iψ(x, t) = Hψ(x, t) hat die besondere Eigenschaft,<br />

dass die Wahrscheinlichkeitsdichte ρ(x, t) = ψ(x, t)ψ ∗ (x, t) mit ∫ ∞<br />

−∞<br />

dx ρ(x, t) = 1<br />

normiert bleibt. Diese Normierung hat den Rang einer Erhaltungsgröße <strong>und</strong> wird<br />

durch die Hermitezität des Hamiltonoperators H = H † gewährleistet. In der formalen<br />

Lösung <strong>für</strong> einen endlichen Zeitschritt<br />

ψ(x, t + dt) = U(dt)ψ(x, t) mit U(dt) = exp(−iHt) (2.70)<br />

entspricht dieser Eigenschaft die Unitarität des Zeitentwicklungsoperators U, d.h.<br />

UU † = U † U = 1. Beim Euler-Verfahren werden nun die höheren Terme der Exponentialfunktion<br />

vernachlässigt, also<br />

U(dt) = exp(−iHt) ≃ (1 − iHdt) + O(dt 2 ). (2.71)<br />

Wie man sich aber leicht überzeugen kann, ist diese Taylornäherung nicht unitär,<br />

denn (1−iHdt)(1−iHdt) † = 1−H 2 dt 2 ≠ 1. Folglich wird die Normierung während<br />

der Integration weglaufen <strong>und</strong> zu ernsthaften Schwierigkeiten führen. Ähnliches gilt<br />

auch <strong>für</strong> andere Runge-Kutta-Verfahren.<br />

Wir benötigen also einen speziellen Algorithmus, der diese beiden Probleme löst (siehe<br />

[1]). Das Problem der Wahrscheinlichkeitserhaltung bekommt man dadurch in den<br />

Griff, dass man die exakte Zeitentwicklung in zwei Halbschritte aufteilt <strong>und</strong> diese dann<br />

separat entwickelt:<br />

exp(−iHdt) = ( exp(iHdt/2) ) −1 exp(−iHdt/2) (2.72)<br />

≃ (1 + iHdt/2) −1 (1 − iHdt/2) + O(dt 3 ) , (2.73)<br />

also U(dt) ≃ A −1 A † mit A = 1 + iHdt/2. Wegen [A, A † ] = 0 gilt<br />

UU † = (A −1 A † ) † (A −1 A † ) = A(A −1 ) † A −1 A † = (A −1 ) † AA −1 A † = 1. (2.74)<br />

d.h. der so konstruierte diskrete Zeitschritt ist exakt unitär, also auf dem Rechner nur<br />

durch die Maschinengenauigkeit begrenzt. Schließlich kann man die inverse Matrix in der<br />

Gleichung U(dt) ≃ A −1 A † durch Multiplikation mit A von links loswerden <strong>und</strong> erhält<br />

AUψ = A † ψ, also ein lineares Gleichungssystem der Form<br />

(1 + iHdt/2)ψ j n+1 = (1 − iHdt/2)ψj n . (2.75)<br />

Das Problem der Randbedingungen löst man folgendermaßen. Man diskretisiert zunächst<br />

den Hamiltonoperator durch<br />

(Hψ) j n = − 1<br />

dx 2 (ψj+1 n − 2ψn j + ψn j−1 + V j ψn) j (2.76)<br />

<strong>und</strong> setzt das Ergebnis in die Formel (2.75) ein. Man erhält<br />

(<br />

ψ j+1<br />

n+1 + 2i dx2<br />

)<br />

dt − V j dx 2 − 2 ψ j n+1 + ψj−1 n+1 = (2.77)<br />

−ψn j+1 +<br />

(2i dx2<br />

)<br />

dt + V j dx 2 + 2 ψn j − ψn j−1 .<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


30 Differentialgleichungen<br />

Bezeichnet man die rechte Seite dieser Gleichung als Ω n j <strong>und</strong> interpretiert man den oberen,<br />

also den räumlichen Index als Komponente eines N + 1-dimensionalen Vektors, so lässt<br />

sich diese Gleichung kompakt in der Form<br />

T ⃗ ψ n+1 = ⃗ Ω n (2.78)<br />

schreiben, wobei T eine tridiagonale (N + 1) × (N + 1)-Matrix ist. Um das Problem zu<br />

lösen, muss T invertiert werden. Da<strong>für</strong> gibt es in der linearen Algebra Standardverfahren,<br />

die auf folgende Weise algorithmisch umgesetzt werden:<br />

Zunächst beginnt man mit einem linearen Ansatz<br />

ψ j+1<br />

n+1 = aj ψ j n+1 + bj n (2.79)<br />

<strong>für</strong> alle zulässigen n, j mit Koeffizienten a j <strong>und</strong> b j n, die man als einen zeitunabhängigen<br />

Vektor ⃗a <strong>und</strong> einen zeitabhängigen Vektor ⃗ b n interpretieren kann. Einsetzen dieses<br />

Ansatzes in Gl. (2.77) führt auf<br />

[<br />

] −1<br />

ψ j n+1 = 2 + V j dx 2 − 2i dx2 [<br />

]<br />

dt − aj ψ j−1<br />

n+1 + bj n − Ω j n . (2.80)<br />

Diese Gleichung ist linear in ψ j n+1<br />

wir den Index von j nach j − 1:<br />

<strong>und</strong> ψj−1 n+1 . Um sie mit Gl. (2.79) zu vergleichen, shiften<br />

ψ j n+1 = aj ψ j−1<br />

n+1 + bj−1 n (2.81)<br />

Durch einen Koeffizientenvergleich dieser beiden Gleichungen gelangt man zu<br />

a j = 2 + V j dx 2 − 2i dx2<br />

dt − 1<br />

a j−1 (2.82)<br />

b j = Ω j n + bj−1 n<br />

. (2.83)<br />

aj−1 Es handelt sich dabei um zwei Rekursionsformeln. Die erste ist autonom <strong>und</strong> ermöglicht<br />

die Bestimmung von a j . Die zweite Rekursionsformel setzt dieses Ergebnis voraus<br />

<strong>und</strong> ermöglicht damit die Bestimmung von b j n. Was noch fehlt ist die Verankerung der<br />

Rekursion, also Werte <strong>für</strong> a 1 <strong>und</strong> b 1 n.<br />

Um diese Werte zu erhalten, setzt man den Legostein an den linken Rand <strong>und</strong> nutzt aus,<br />

dass ψ 0 n = 0 ist. Die entsprechende Gleichung lautet<br />

ψn+1 2 +<br />

(2i dx2<br />

)<br />

dt − V 1 dx 2 − 2 ψn+1 1 = Ω 1 n. (2.84)<br />

Ein enerneuter Vergleich mit dem Ansatz liefert<br />

a 1 = 2 + V 1 dx 2 − 2i dx2<br />

dt , b1 n = Ω 1 n. (2.85)<br />

Mit diesen Startwerten können alle a j <strong>und</strong> b j n rekursiv berechnet werden. Die gesuchte<br />

Wellenfunktion ist dann durch<br />

ψ j n+1 = ψj+1 n+1 − bj n<br />

a j (2.86)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.2 Partielle Differentialgleichungen 31<br />

gegeben. Es handelt sich hier ebenfalls um eine Rekursionsformel, die aber im Gegensatz<br />

zu den vorherigen Rerkursionsformeln von rechts nach links läuft <strong>und</strong> am rechten Rand<br />

mit ψn<br />

N = 0 verankert ist. Durch die gegenläufigen Rekursionen wird gewissermaßen eine<br />

Kommunikation der beiden Ränder ermöglicht.<br />

Ein C++-Programm könnte folgendermaßen aussehen. Zunächst benötigt man eine Funktion,<br />

die aus dem aktuellen ⃗ ψ den aktuellen Vektor ⃗ Ω berechnet:<br />

void BerechneOmega (void)<br />

{<br />

for (int j=2; j


32 Differentialgleichungen<br />

von der Wellenzahl ab. Da ein Wellenpaket eine Superposition von Anteilen mit verschiedener<br />

Wellenzahl ist, besteht es aus Komponenten mit verschiedenen Geschwindigkeiten,<br />

die folglich auseinanderlaufen. Je stärker das Teilchen am Anfang lokalisiert ist, desto<br />

größer ist die Unschärfe im Impuls, also in der Geschwindigkeitsvariation der sich überlagernden<br />

Bestandteile.<br />

Lichtblitze zerfließen nicht, da die Gruppengeschwindigkeit von Licht im Vakuum unabhängig<br />

von der Wellenzahl immer gleich c ist. Alle überlagerten Komponenten bewegen<br />

sich also gleich schnell.<br />

2.3 Aufgaben<br />

Aufgabe 2.1<br />

(Einfaches Beispiel einer Runge-Kutta-Integration)<br />

Betrachten Sie einen Spiegel, der ein von rechts entlang der x-Achse einfallendes paralleles<br />

Licht exakt in den Ursprung des Koordinatensystems reflektiert. Der Spiegel schneidet<br />

die y-Achse bei (x, y) = (0, 1).<br />

a) Bestimmen Sie die Differentialgleichung <strong>und</strong> lösen Sie das Problem analytisch. Wegen<br />

der Radialsymmetrie kann man sich dabei auf die xy-Ebene beschränken.<br />

b) Schreiben Sie ein C-Programm. das eine Euler-Iteration von x=0 bis x=1 durchführt.<br />

c) Führen Sie das Programm <strong>für</strong> Schrittweiten h=1, 0.1, 0.01 <strong>und</strong> 0.001 aus <strong>und</strong><br />

bestimmen Sie den absoluten Fehler im Vergleich zum analytischen Ergebnis.<br />

d) Wiederholen Sie b) <strong>und</strong> c) mit einem Runge-Kutta-Verfahren 2. Ordnung.<br />

Aufgabe 2.2 (Vergleich verschiedener Runge-Kutta-Verfahren)<br />

Gegeben sei die gewöhnliche Differentialgleichung 1. Ordnung<br />

ẏ(t) = −y(t) 3<br />

mit der Anfangsbedingung y(0) = 1.<br />

(a) Lösen Sie die Differentialgleichung analytisch. Wie groß ist y(4) ?<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.3 Aufgaben 33<br />

(b) Iterieren Sie die DGL mit den Verfahren RK1 (=Euler), RK2 <strong>und</strong> RK4. Tragen<br />

Sie die gemessenen Abweichungen vom analytischen Resultat zur Zeit t = 4 als<br />

Funktion der Schrittweite h doppellogarithmisch auf (bitte Grafikdatei abgeben).<br />

Aufgabe 2.3<br />

(Runge-Kutta-Integration eines Pendels)<br />

Integrieren Sie mit Hilfe des Runge-Kutta-Verfahrens zweiter Ordnung die Bewegungsgleichung<br />

eines Pendels<br />

¨ϕ(t) + sin ϕ(t) = 0.<br />

• (a)] Bestimmen Sie mit einer hinreichend kleinen konstanten Schrittweite h die<br />

Schwingungsperiode T eines anfänglich horizontal ausgelenkten Pendels, d.h.<br />

˙ϕ(0) = 0,<br />

ϕ(0) = π/2.<br />

(b) Numerische Fehler des Runge-Kutta-Algorithmus führen zu einer Verletzung der<br />

Energieerhaltung. Vergleichen Sie die Energien (hier E = 1 2 ˙ϕ2 − cos ϕ) zum Startzeitpunkt<br />

(horizontal ausgelenkt) <strong>und</strong> nach einer Schwingungsperiode <strong>und</strong> tragen<br />

Sie die festgestellte Energiedifferenz grafisch als Funktion der Schrittweite h doppellogarithmisch<br />

auf.<br />

(c) Starten Sie nun das Pendel in der Nähe des oberen Totpunkts ϕ(0) = π − ɛ <strong>und</strong><br />

finden Sie numerisch heraus, wie die Schwingungsperiode T im Limes ɛ → 0 divergiert.<br />

Passen Sie dazu die Schrittweite während der Iteration dynamisch an <strong>und</strong><br />

begründen Sie Ihr Vorgehen.<br />

Aufgabe 2.4<br />

(Lorenz-Attraktor (Vorübung zu chaotischen Systemen))<br />

Gegeben sei das folgende nichtlineare Differentialgleichungssystem 1. Ordnung<br />

Ẋ(t) = a(Y (t) − X(t))<br />

Ẏ (t) = X(t)(b − Z(t)) − Y (t) (2.87)<br />

Ż(t) = X(t)Y (t) − cZ(t)<br />

mit den Konstanten a = 10, b = 28, c = 8/3.<br />

a) Schreiben Sie ein Programm lorenz.cc, das dieses System mit der Runge-Kutta-<br />

Methode zweiter Ordnung integriert <strong>und</strong> während der Integration die Werte von<br />

X(t) <strong>und</strong> Z(t) in eine Datei mit dem Namen kurve.dat schreibt.<br />

b) Lassen Sie dieses Programm mit der Anfangsbedingung X(0) = Y (0) = Z(0) =<br />

0.001 <strong>und</strong> der Schrittweite h = 0.01 bis zur Zeit t = 100 laufen.<br />

c) Stellen Sie die in kurve.dat gespeicherte Kurve mit Hilfe eines Grafikprogramms,<br />

z.B. mit xmgrace dar. Abgabe: Grafikdatei, z.B. kurve.jpg<br />

d) Wiederholen Sie nun Teil b) mit der ’infinitesimal’ geänderten Anfangsbedingung<br />

X(0) = Y (0) = Z(0) = 0.001000000001 <strong>und</strong> untersuchen Sie, wie sich das Ergebnis<br />

ändert. Zu welcher Zeit t ist die Abweichung dem Betrag nach zum ersten Mal<br />

größer als 1 ?<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


34 Differentialgleichungen<br />

Aufgabe 2.5<br />

(Leapfrog-Algorithmus)<br />

Zeigen Sie, dass das in Gl. (2.30) beschriebene leapfrog-Iterationsverfahren im Gegensatz<br />

zur formal sehr ähnlichen Euler-Iteration ein Verfahren zweiter Ordnung ist. Zeigen Sie<br />

außerdem, dass dieser Algorithmus symplektisch ist, also das differentielle Phasenraumvolumen<br />

bei einem Iterationsschritt exakt erhalten bleibt.<br />

Aufgabe 2.6<br />

(Fehlerbestimmung eines Mehrschrittverfahrens)<br />

Schreiben Sie ein Programm zur Integration der gewöhnlichen Differentialgleichung<br />

ẏ(t) = −y(t)<br />

mit der Anfangsbedingung y(0) = 1 mit Hilfe des Dreischrittverfahrens nach Adams <strong>und</strong><br />

Bashforth (siehe Gl. 2.32):<br />

y j+1<br />

( 23<br />

= y j + h<br />

12 f(x j, y j ) − 16<br />

12 f(x j−1, y j−1 ) + 5 )<br />

12 f(x j−2, y j−2 )<br />

Untersuchen Sie mit diesem Programm die Abweichungen von der analytischen Lösung<br />

in Abhängigkeit von der Schrittweite. Welche Fehlerordnung besitzt das Verfahren, d.h.<br />

mit welcher Potenz von h skaliert der Fehler?<br />

Aufgabe 2.7<br />

(Spektrum des Wasserstoffatoms)<br />

Die dreidimensionale zeitunabhängige Schrödingergleichung ( − 2<br />

2m ∇2 + V (r) ) ψ(⃗x) =<br />

Eψ(⃗x) geht mit dem Produktansatz ψ(⃗x) = u(r)<br />

r<br />

Y (θ, φ) in die Radialgleichung<br />

[<br />

∂r 2 l(l + 1)<br />

−<br />

r 2 + 2m ( )]<br />

2 E − V (r) u(r) = 0<br />

über. Dabei ist l = 0, 1, 2, . . . die Drehimpulsquantenzahl, {r, θ, φ} sind Kugelkoordinaten<br />

<strong>und</strong> Y (θ, φ) bezeichnet die sogenannten Kugelflächenfunktionen Y l,m . Ziel ist der Aufgabe<br />

ist es, die dimensionslose Radialgleichung im Coulomb-Potential V (r) = −1/r, d.h.<br />

mit Hilfe des Numerov-Verfahrens zu lösen.<br />

[<br />

∂r 2 l(l + 1)<br />

−<br />

r 2 + 2 ]<br />

r + 2E u(r) = 0<br />

(a) Betrachten Sie den Fall l = 0 (s-Orbitale). Wie verhält sich die Wellenfunktion u(r)<br />

<strong>für</strong> r → 0, wenn 2E gegenüber dem Potentialterm vernachlässigt werden kann?<br />

Lösen Sie dazu die DGL <strong>für</strong> E = 0 mit Mathematica R○ <strong>und</strong> führen Sie eine Taylor-<br />

Entwicklung erster Ordnung um r = 0 durch (z.B. mit dem Befehl Series[]).<br />

(b) Schreiben Sie ein Programm zur Integration der dimensionslosen Radialgleichung<br />

nach dem Numerov-Verfahren mit der Diskretisierung r n = hn, indem Sie die Stützstellen<br />

u 1 , u 2 gemäß der in (a) ermittelten Näherung initialisieren. Bestimmen Sie<br />

die ersten vier Energieeigenwerte.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


2.3 Aufgaben 35<br />

Betrachten Sie danach den Fall l = 1, 2, 3 (pdf-Orbitale). Wie Sie sehen werden, ist in<br />

diesem Fall der Schritt (a) in Aufgabe 6 nicht mehr durchführbar 5 . Um dieses Problem<br />

zu umgehen, startet man die Integration <strong>für</strong> große r <strong>und</strong> iteriert dann mit dem Numerov-<br />

Verfahren rückwärts von rechts nach links.<br />

(a) Berechnen Sie zunächst, wie die Wellenfunktion u(r) <strong>für</strong> große r → ∞ abfällt.<br />

(b) Initialisieren Sie nun die beiden letzten Stützstellen u N−1 <strong>und</strong> u N−2 gemäß dieser<br />

asymptotischen Lösung.<br />

(c) Iterieren Sie rückwärts von n = N − 3 bis n = 1 <strong>und</strong> bestimmen Sie das Vorzeichen<br />

von u 1 . Ähnlich wie beim Vorwärtsalgorithmus wechselt dieses Vorzeichen, sobald<br />

E einen Eigenwert passiert. Bestimmen Sie mit diesem Kriterium die ersten 4 − l<br />

Energieeigenwerte.<br />

5 Zwar geht die Wellenfunktion <strong>für</strong> r → 0 immer noch gegen Null, oszilliert dabei aber auf ungewöhnliche<br />

weise, wobei die Nullstellen wie log(r) angeordnet sind. In diesem Fall lässt sich eine Taylor-Näherung<br />

wie in Aufgabe 6a nicht mehr durchführen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3 Chaos<br />

Chaos (griechisch χαoζ) bezeichnet einen Zustand vollständiger Unordnung <strong>und</strong> steht<br />

damit im Gegensatz zu Kosmos, dem griechischen Begriff <strong>für</strong> Ordnung.<br />

In der klassischen <strong>Physik</strong> benutzt man diesen Begriff im Zusammenhang mit nichtlinearen<br />

dynamischen Systemen, welche die Eigenschaft haben, dass kleine Änderungen in<br />

den Anfangsbedingungen exponentiell verstärkt werden, so dass solche Änderungen schon<br />

nach kurzer Zeit einen makroskopischen <strong>und</strong> in der Regel nicht vorhersagbaren Effekt haben.<br />

Diese unvorhersehbare Reaktion auf kleine Änderungen in den Anfangsbedingungen<br />

wird in der populären Literatur oft als Schmetterlingseffekt bezeichnet: Bereits der Flügelschlag<br />

eines Schmetterlings reicht demnach aus, um das zukünftige Wettergeschehen<br />

global zu verändern.<br />

Bei der Untersuchung chaotischer Systeme unterscheidet man im wesentlichen zwei Forschungsgebiete:<br />

• Deterministisches Chaos:<br />

Hier untersucht man klassische chaotische Systeme, die einer deterministischen<br />

Zeitentwicklung gehorchen. Dazu gehören nichtlineare Bewegungsgleichungen <strong>und</strong><br />

iterative chaotische Abbildungen, aber auch Modellsysteme, deren Geometrie der<br />

Randbedingungen zu einem chaotischen Verhalten führen.<br />

• Quantenchaos:<br />

Diese Forschungsrichtung befasst sich mit Quantensystemen, die im klassischen<br />

Grenzfall chaotisch wären. Dabei stellt man die Frage, wie sich diese chaotischen<br />

Eigenschaften im Verhalten des Quantensystems niederschlagen, fragt also nach<br />

den Signaturen des Chaos im Rahmen der Quantenmechanik.<br />

Die unterschiedliche Herangehensweise lässt sich am besten am Beispiel eines sogenannten<br />

Billards illustrieren (siehe Abb. 3.1). Unter einem Billard (engl. billiard) versteht<br />

man in der Chaosforschung eine Wand mit einer vorgegebenen Form, an der Teilchen<br />

Abbildung 3.1: Deterministische Trajektorie eines Teilchens in einem Stadion-Billard.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


38 Chaos<br />

Abbildung 3.2: Quantenbillard: Hochangeregte Lösungen der stationären Schrödingergleichung in einem<br />

Stadionbillard mit Dirichlet-Randbedingungen.<br />

nach der üblichen Regel “Einfallswinkel=Ausfallswinkel” reflektiert werden. Schon bei<br />

einem Billard, das die Form eines Fußballstadions hat, ist die Trajektorie eines solchen<br />

Teilchens im allgemeinen hochgradig irregulär. Die Klassifikation solcher Bahnen wäre<br />

eine mögliche Fragestellung im Rahmen des deterministischen Chaos.<br />

Als quantenmechanisches Pendant betrachtet man einen unendlichen Potentialtopf, der<br />

die Form des Billards hat, löst also die stationäre Schrödingergleichung mit der Randbedingung<br />

ψ(x, t) = 0 auf dem Rand des Billards. Die Gr<strong>und</strong>zustandswellenfunktion <strong>und</strong><br />

die ersten angeregten Zustände mit niedriger Energie lassen zunächst nicht erkennen,<br />

ob das entsprechende klassische System chaotisch ist, sie sehen optisch wie “normale”<br />

Wellenfunktionen aus. Die hochangeregten Zustände (siehe Abb. 3.2) lassen jedoch leicht<br />

erkennen, ob das betreffende System chaotisch ist oder nicht. Dabei gilt folgende Faustregel:<br />

Nichtchaotische Systeme haben meist hochsymmetrische Wellenfunktionen, während<br />

chaotische Systeme wie Quantenbillards durch Wellenfunktionen mit einer irregulären<br />

Struktur gekennzeichnet sind.<br />

Quantenchaos lässt sich auch am Spektrum des Hamiltonoperators erkennen. Dabei untersucht<br />

man vor allem die statistische Verteilung der Differenzen ∆E i = E i+1 −E i aufeinanderfolgender<br />

Energieeigenwerte. Nichtchaotische Systeme verhalten sich so, als wären<br />

die Energieniveaus statistisch unabhängig voneinander, d.h. man erhält eine Poisson-<br />

Verteilung. In chaotischen Systemen scheinen sich dagegen die Energieniveaus gegenseitig<br />

abzustoßen, so dass man andere Statistiken erhält. Der Unterschied tritt besonders auffällig<br />

zutage, wenn das Spektrum von einem Parameter (z.B. dem Längenverhältnis der<br />

Billardseiten) abhängt. Bei Variation dieses Parameters beobachtet man in einem nichtchaotischen<br />

System Niveaukreuzungen (engl. level crossings), in chaotischen Systemen<br />

dagegen eine Niveauabstoßung (engl. level repulsion).<br />

Es stellt sich heraus, dass die Statistik der Energiedifferenzen nicht von den Details des<br />

jeweils untersuchten chaotischen Systems abhängt, sondern nur von dessen Symmetrien,<br />

insbesondere der Zeitumkehrinvarianz. Die gleichen Statistiken erhält man auch, wenn<br />

man völlig zufällige Matrizen mit diesen Symmetrieeigenschaften auswürfelt <strong>und</strong> deren<br />

Eigenwertdifferenzen untersucht. Auf diese Weise unterscheidet man verschiedene Uni-<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.1 Chaotische mechanische Systeme 39<br />

versalitätsklassen wie z.B. das Gaußsche orthogonale Ensemble (GOE) <strong>und</strong> das Gaußsche<br />

unitäre Ensemble (GUE). Die Theorie der Zufallsmatrizen ist ein eigenes Teilgebiet des<br />

Quantenchaos, auf das hier nicht näher eingegangen werden soll. Vielmehr wollen wir<br />

uns im folgenden auf einfache klassische Systeme aus der Mechanik beschränken.<br />

Wie wir sehen werden, gibt es auch Systeme mit gemischten Eigenschaften, die in bestimmten<br />

Bereichen ihres Phasenraums chaotisch, in anderen dagegen nichtchaotisch<br />

sind.<br />

3.1 Chaotische mechanische Systeme<br />

3.1.1 Mimimale Phasenraumdimension<br />

In diesem Abschnitt wollen wir uns mit mechanischen Systemen befassen, die eine chaotische<br />

Dynamik aufweisen. Solche Systeme können wie üblich im Rahmen der Lagrangeschen<br />

oder Hamiltonschen Mechanik beschrieben werden. Dabei haben die Hamiltonschen<br />

Bewegungsgleichungen<br />

˙q i = ∂H(p 1, . . . , p N , q 1 , . . . , q N )<br />

∂p i<br />

, ṗ i = − ∂H(p 1, . . . , p N , q 1 , . . . , q N )<br />

∂q i<br />

(3.1)<br />

als Differentialgleichungen erster Ordnung in der Zeit den Vorteil, dass man sich die<br />

Dynamik als eine Trajektorie im 2N-dimensionalen Phasenraum vorstellen kann, die<br />

dem durch die partiellen Ableitungen von H gegebenen Vektorfeld<br />

( ) ( )<br />

d ⃗q ∇p<br />

= H (3.2)<br />

dt ⃗p −∇ q<br />

folgt, d.h. jedem Punkt im Phasenraum ist eine eindeutige Richtung zugeordnet, entlang<br />

der sich die Trajektorie bei fortschreitender Zeit bewegen wird. Trajektorien können sich<br />

also nicht schneiden (mit Ausnahme von Endpunkten der Dynamik, wo das System zum<br />

Stillstand kommt). Chaotisches Verhalten, also das Ausfüllen des Phasenraums durch<br />

irreguläre Trajektorien, ist deshalb in einem zweidimensionalen Phasenraum unmöglich,<br />

weil sich dazu die Trajektorien schneiden müssten. Mechanische Systeme mit nur einem<br />

Freiheitsgrad können aus diesem Gr<strong>und</strong> kein Chaos aufweisen. Erst in einem dreidimensionalen<br />

Phasenraum hat die Dynamik genügend Freiheit, um ein irreguläres Knäuel von<br />

sich nicht schneidenden Trajektorien bilden zu können.<br />

3.1.2 Lyapunov-Exponenten<br />

Das vielleicht bekannteste <strong>und</strong> einfachste mechanische System mit chaotischen Eigenschaften<br />

ist das Doppelpendel. Bei genügend starker anfänglicher Auslenkung weist es<br />

ein unvorhersehbares irreguläres Verhalten auf. Wie man in Abbildung 3.3 sehen kann,<br />

werden selbst kleinste Variationen in der Anfangsbedingung nach kurzer Zeit exponentiell<br />

verstärkt. Für einen solchen exponentiellen Verstärkungsmechanismus ist es typisch,<br />

dass die Abweichungen <strong>für</strong> eine gewisse Zeitspanne praktisch nicht wahrnehmbar sind,<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


40 Chaos<br />

Abbildung 3.3: Chaotische Bewegung eines Doppelpendels. Die Abbildung zeigt den Winkel θ 1 als<br />

Funktion der Zeit <strong>für</strong> zwei fast identische Anfangsbedingungen, die sich um eine relative<br />

Abweichung von 10 −4 voneinander unterscheiden. Wie man sehen kann, sind<br />

die beiden Trajektorien (rot <strong>und</strong> blau) <strong>für</strong> eine gewisse Zeit nahezu identisch, bis sie<br />

plötzlich stark unterschiedlich werden. Zur besseren Sichtbarkeit ist die Differenz blau<br />

unterlegt.<br />

dann aber sehr plötzlich so stark werden, dass die Trajektoren auseinanderlaufen <strong>und</strong><br />

kurz darauf völlig unabhängig voneinander werden.<br />

Wie quantifiziert man die Chaotizität eines gegebenen Systems? Dies geschieht mit den<br />

sogenannten Lyapunov-Exponenten. Ein Lyapunov-Exponent λ hat die Dimension [s −1 ]<br />

<strong>und</strong> definiert die Zeitskala, auf der sich eine Variation in den Anfangsbedinungen exponentiell<br />

wie e λt als Funktion der Zeit entwickelt. Ein positiver Lyapunov-Exponent steht<br />

<strong>für</strong> exponentielle Verstärkung, also chaotisches Verhalten, während ein negativer Wert<br />

anzeigt, dass benachbarte Trajektorien konvergieren.<br />

Ein gegebenes System hat nicht nur einen einzigen, sondern im allgemeinen ein ganzes<br />

Spektrum von Lyapunov-Exponenten {λ 1 , λ 2 , . . .}. Dies lässt sich am besten am Beispiel<br />

eines 2N-dimensionalen Hamiltonschen System erklären, dessen Phasenraum zur besseren<br />

Anschaulichkeit in Abb. 3.4 zweidimensional dargestellt wird. Zu sehen ist links<br />

oben ein kleiner Kreis (d.h. eigentlich eine 2N-dimensionale Kugel), der eine Menge infinitesimal<br />

unterschiedlicher Anfangsbedingungen symbolisieren soll. Die Hamiltonschen<br />

Gleichungen transportieren nun während der Zeitentwicklung jeden Punkt dieser Kugel<br />

auf einer wohldefinierten Trajektorie. Wie wird sich die Form dieser Kugel ändern?<br />

Offenbar wird sie kontinuierlich deformiert werden <strong>und</strong> nach längerer ein kompliziertes<br />

Aussehen annehmen. Allerdings wird das entstehende Gebilde stets zusammenhängend<br />

bleiben. Darüber hinaus ist aufgr<strong>und</strong> des Satzes von Lioville das Volumen erhalten.<br />

Bemerkung: Satz von Liouville: In der Hamiltonschen Mechanik spielt die symplektische<br />

Gruppe der kanonischen Transformationen eine zentrale Rolle. Ähnlich wie das normale<br />

Skalarprodukt unter Drehungen im R 3 invariant ist, gibt es im Phasenraum das sogenannte<br />

symplektische Produkt, das unter kanonischen Transformationen invariant ist. Die von<br />

den Hamiltonschen Bewegungsgleichungen vorgegebene Zeitentwicklung ist ebenfalls eine<br />

kanonische Transformation. Da sich das Phasenraumvolumen als symplektisches Produkt<br />

schreiben lässt, ist es deshalb eine Erhaltungsgröße.<br />

Für kleine Zeiten ist die Deformation der Kugel Taylor-entwickelbar. In niedrigster Ordnung<br />

dieser Multipolentwicklung nimmt die Kugel deshalb zunächst die Form eines El-<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.1 Chaotische mechanische Systeme 41<br />

Abbildung 3.4: Vereinfachte Darstellung der Zeitentwicklung eines infinitesimalen anfangs kugelförmigen<br />

Phasenraumvolumens (siehe Text).<br />

lipsoiden an. Dieser Ellipsoid besitzt bestimmte senkrecht aufeinander stehenden Hauptachsen,<br />

die in der Abbildung als gestrichelte Linien angedeutet sind. Die Ausdehnung<br />

ξ i (t) des Ellipsoiden entlang der i-ten Hauptachse nimmt mit der Zeit exponentiell zu<br />

bzw. ab:<br />

ξ(t) = ξ(0)e λ it . (3.3)<br />

wobei die λ i die Lyapunov-Exponenten sind. Ein positiver Lyapunov-Exponentent zeigt<br />

divergente, also auseinanderlaufende Trajektorien an, während ein negativer Lyapunov-<br />

Exponent Konvergenz signalisiert. Da das Phasenraumvolumen V ∝ ∏ i ξ i erhalten ist,<br />

muss die Summe aller Lyapunov-Exponenten verschwinden.<br />

Wie bereits erwähnt gibt es also nicht nur einen, sondern ein ganzes Spektrum von<br />

Lyapunov-Exponenten. Wenn man im üblichen Jargon von dem Lyapunov-Exponenten<br />

spricht, so meint man in der Regel den größten <strong>und</strong> damit dominierenden Exponenten<br />

in diesem Spektrum. Ein positiver maximaler Lyapunov-Exponent gilt als Indikator <strong>für</strong><br />

chaotisches Verhalten.<br />

Die Definition des Lyapunov-Exponenten ist lokal, da sie sich auf eine infinitesimale Deformation<br />

des Phasenraumvolumens bezieht. Die Lyapunov-Exponenten können also an<br />

verschiedenen Orten im Phasenraum unterschiedliche Werte annehmen <strong>und</strong> dadurch <strong>für</strong><br />

eine gegebene Trajektorie implizit zeitabhängig werden. Da die Trajektorie in chaotischen<br />

Systemen nicht vorhersagbar ist <strong>und</strong> bei fortschreitender Zeit große Teile des Phasenraums<br />

gleichmäßig überstreicht, bietet es sich an, den mittleren Lyapunov-Exponenten<br />

als Zeitmittel über die chaotische Trajektorie zu definieren<br />

1<br />

λ i := lim<br />

t→∞ t ln dl i<br />

dr , (3.4)<br />

wobei dl i die Änderung entlang der i-ten Hauptachse bei Variation der Anfangsbedingung<br />

um dr ist. Für die mittelere Divergenz der Trajektorien ist der größte dieser Mittelwerte<br />

ausschlaggebend.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


42 Chaos<br />

Abbildung 3.5: Skizze eines getriebenen gedämpften Pendels.<br />

3.1.3 Getriebenes gedämpftes Pendel<br />

Das einfachste mechanische System mit chaotischen Eigenschaften ist ein getriebenes gedämpftes<br />

Pendel (siehe Abb. 3.5). Die Dynamik dieses Systems ist durch die gewöhnliche<br />

Differentialgleichung<br />

¨φ(t) + r ˙φ(t) + sin φ(t) = a cos ω D t (3.5)<br />

vorgegeben. Dabei ist φ(t) der Auslenkungswinkel, r der dimensionslose Reibungskoeffizient,<br />

a die Antriebsamplitude <strong>und</strong> ω D die Antriebsfrequenz. In diesem System konkurrieren<br />

drei unterschiedliche Zeitskalen, nämlich die Reibungszeit 1/r, die Schwingungsdauer<br />

des freien ungedämpften Pendels 2π/ω 0 <strong>und</strong> die Umdrehungsdauer des Antriebs 2π/ω D .<br />

Der Systemzustand wird nicht nur allein durch φ(t) <strong>und</strong> ˙φ(t) charakterisiert, sondern auch<br />

durch die Phasenlage bezogen auf den äußeren Antrieb. Der resultierende Phasenraum ist<br />

also nicht zwei- sondern dreidimensional, eine notwendige Voraussetzung <strong>für</strong> chaotisches<br />

Verhalten. Als dritte Dimension des Phasenraums kann man das Argument des Cosinus<br />

auf der rechten Seite der Differentialgleichung wählen, d.h.<br />

θ := ω D t . (3.6)<br />

Mit der Definition ω(t) := ˙φ(t) überführen wir nun die Differentialgleichung 2. Ordnung<br />

in ein System von Differentialgleichungen erster Ordnung:<br />

⎛ ⎞ ⎛<br />

⎞<br />

φ(t)<br />

ω(t)<br />

d<br />

⎝ ⎠ = ⎝<br />

⎠ (3.7)<br />

dt<br />

ω(t)<br />

θ(t)<br />

−rω(t) − sin φ(t) + a cos θ(t)<br />

ω D<br />

Wegen der Dämpfung “vergisst” das System nach einer gewissen Zeit seine eigene Geschichte<br />

<strong>und</strong> geht deshalb in ein von den Anfangsbedinungen unabhängiges Verhalten<br />

über, so dass man ohne Beschränkung der Allgemeinheit von einem anfangs ruhenden<br />

Pendel ausgehen kann. Iteriert man diese Differentialgleichung beispielsweise <strong>für</strong> r = 0.24<br />

<strong>und</strong> ω D = 2 3 ω 0, so zeigt das System <strong>für</strong> kleine Antriebsamplituden 0 < a < 0.5 nach einiger<br />

Zeit ein reguläres Verhalten, indem es der äußeren Anregung mit einer bestimmten<br />

Phasenverschiebung folgt. Die Lösung ist in diesem Fall einfach-periodisch <strong>und</strong> besitzt<br />

eine in der (φ, ω)-Ebene ellipsenförmige Trajektorie. Bei größeren Werten a ≈ 0.63 beobachtet<br />

man zunächst eine Symmetriebrechung mit einer plötzlich geänderten Phasenlage,<br />

d.h. das Pendel schwingt zwar noch im Takt mit der äußeren Angerung, aber die<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.1 Chaotische mechanische Systeme 43<br />

Abbildung 3.6: Zweidimensionale Projektion des Phasenraums eines getriebenen gedämpften Pendels<br />

mit ω D = 2 ω0. Für kleine Antriebsamplituden folgt das Pendel der äußeren Kraft<br />

3<br />

<strong>und</strong> beschreibt eine kreisförmige Trajektorie im Phasenraum (hier nicht gezeigt). Für<br />

größere Amplituden kommt es zu einer Periodenvervielfachung mit Überschwingern,<br />

hier auf der linken Seite am Beispiel einer Periodenverdreifachung <strong>für</strong> a = 0.73 gezeigt.<br />

Erhöht man die Amplitude nur geringfügig, wird die Dynamik chaotisch, wobei die<br />

Trajektorien (blaue Kurven) den Phasenraum kompakt ausfüllen (siehe rechte Abbildung).<br />

Die entsprechenden Poincaré-Schnitte sind als rote Punkte dargestellt.<br />

Spiegelsymmetrie bezüglich φ → −φ wird spontan gebrochen, d.h. die Ellipse wird deformiert.<br />

Erhöht man a weiter, beobachtet man bei a ≈ 0.66 eine Periodenverdopplung,<br />

d.h. das Pendel folgt der äußeren Anregung periodisch nach jeweils zwei Umdrehungen.<br />

Bei a ≈ 0.67 wird die Trajektorie schließlich chaotisch <strong>und</strong> füllt einen schmalen Streifen<br />

im Phasenraum aus. Bei a ≈ 0.68 kommt es zu Überschlägen des Pendels <strong>und</strong> der<br />

Phasenraum wird kompakt ausgefüllt.<br />

Man könnte meinen, dass dieses voll entwickelte Chaos bei einer weiteren Erhöhung<br />

der Amplitude a erhalten bleibt. Dies ist jedoch nicht so, vielmehr geht das System<br />

bei a ≈ 0.73 wieder in ein reguläres dreifach-periodisches Verhalten über. Bei weiterer<br />

Erhöhung von a finden weitere Periodenverdopplungen statt (6,12,...) bis man wieder<br />

ein chaotisches Fenster erreicht. Bei a = 0.85 befindet sich beispielsweise ein siebenfachperiodisches<br />

Fenster.<br />

Dieser Wechsel zwischen mehrfach-periodischen <strong>und</strong> chaotischen Parameterbereichen ist<br />

sehr typisch <strong>für</strong> nichtlineare Systeme mit wenigen Freiheitsgraden.<br />

3.1.4 Attraktoren <strong>und</strong> Poincaré-Schnitte<br />

Unter voll entwickeltem Chaos versteht man eine Dynamik im Phasenraum ohne Periodizität,<br />

sodass die Trajektorie immer neue Gebiete des Phasenraums überstreicht <strong>und</strong><br />

diesen mehr <strong>und</strong> mehr ausfüllt. Stellt man den Phasenraum in einer zweidimensionalen<br />

Projektion auf dem Bildschirm dar, erreicht die Trajektorie auf diese Weise nach <strong>und</strong> nach<br />

alle Pixel in einem bestimmten Bereich <strong>und</strong> füllt diesen flächig aus (siehe blaue Punkte<br />

auf der rechten Seite von Abb. 3.6). An dieser kompakt ausgefüllten Projektion lässt sich<br />

allerdings nicht erkennen, ob der ursprüngliche (höherdimensionale) Phasenraum kompakt<br />

ausgefüllt wird oder nicht, denn selbst ein sehr luftiges Knäuel von Trajektorien<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


44 Chaos<br />

Abbildung 3.7: Poincaré-Schnitt: Durch periodische stroboskopische Blitze wird der dreidimensionale<br />

Phasenraum in zweidimensionale Flächen “geschnitten”. Die als blaue Linie dargestellte<br />

Trajektorie des Systems durchdringt diese Flächen an bestimmten Punkten, die rot<br />

markiert sind. Die Menge aller im Limes t → ∞ erzeugten roten Punkte ist das Bild<br />

des Attraktors im Poincaré-Schnitt (siehe Text).<br />

kann einen kompakten Schatten werfen.<br />

Um diese Frage zu beantworten, eigenen sich sogenannte Poincaré-Schnitte. Die Idee<br />

dabei ist, nicht die komplette Trajektorie des Teilchens in der Projektionsebene zu zeichnen,<br />

sondern nur einzelne Projektionsbilder zu bestimmten periodischen Zeitpunkten,<br />

vergleichbar mit der stroboskopischen Beleuchtung durch eine Blitzlampe. Zu welchen<br />

Zeitpunkten der Blitz ausgelöst wird, ist frei wählbar <strong>und</strong> vom jeweiligen Problem abhängig.<br />

Im Fall des gedämpften Pendels eignet sich die Kreisfrequenz des äußeren Antriebs<br />

ω D mit frei wählbarer Phasenlage, während man bei anderen Problemen beispielsweise<br />

den Nulldurchgung einer Phasenraumkoordinate wählen könnte. Durch diese Wahl wird<br />

festgelegt, in welcher Weise der Phasenraum stroboskopisch “durchgeschnitten” wird.<br />

Löst man im Fall des gedämpften Pendels den Blitz jeweils beim Phasenwinkel Null des<br />

äußeren Antriebs aus <strong>und</strong> markiert die entsprechenden Punkte der Trajektorie als rote<br />

Pixel auf dem Bildschirm, erhält man bei voll entwickeltem Chaos ein eigenartiges Gebilde,<br />

das auf der rechten Seite von Abb. 3.6 zu sehen ist. Dieses Gebilde bezeichnet man<br />

als Poincaré-Schnitt. Ein Poincaré-Schnitt dient also zur effektiven Dimensionsreduktion<br />

der Projektion des Phasenraums durch stroboskopische Beleuchtung.<br />

Startet man das Programm erneut mit anderen Anfangsbedinungen, so stellt man fest,<br />

dass sich (abgesehen von vereinzelten roten Punkten) sehr schnell immer wieder das selbe<br />

Gebilde von roten Punkten entsteht. Der Poincaré-Schnitt zeigt also, dass<br />

• selbst bei voll entwickeltem Chaos der Phasenraum nicht kompakt ausgefüllt wird.<br />

• dass die von den Trajektorien ausgefüllte Teilmenge im Limes t → ∞ unabhängig<br />

von den Anfangsbedingungen ist.<br />

Das bedeutet, dass das System seine Anfangsbedingung nach einiger Zeit “vergisst” <strong>und</strong><br />

seine Trajektorie nach hinreichend langer Zeit von einer Teilmenge von Trajektorien “angezogen”<br />

wird. Diese Teilmenge wird wegen dieser anziehenden Eigenschaft als Attraktor<br />

bezeichnet. Der Poincaré-Schnitt dient dazu, die Struktur dieses Attraktors qualitativ zu<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.2 Fraktale Eigenschaften seltsamer Attraktoren * 45<br />

Abbildung 3.8: Chaotische Abbildung: Die Trajektorie eines mechanischen Systems (blaue Linie) lässt<br />

sich interpretieren als sequentielle Anwendung einer Abbildungen f von Poincaré-<br />

Schnitt zu Poincaré-Schnitt (rote Pfeile). Es zeigt sich, dass schon sehr einfache nichtlineare<br />

Abbildungen wie z.B. die quadratische Abbildung ausreichen, um chaotisches<br />

Verhalten zu erzeugen.<br />

visualisieren. Anhand des Erscheinungsbildes unterscheiden folgende Arten von Attraktoren:<br />

Bewegungstyp Attraktortyp Poincaré-Schnitt<br />

einfach periodisch einfach geschlossene Trajektorie einzelner Punkt<br />

n-fach periodisch mehrfach geschlossene Trajektorie n Punkte<br />

chaotisch chaotischer Attraktor eindimensionale Kurve<br />

chaotisch seltsamer Attraktor fraktales Gebilde<br />

Insbesondere die seltsamen Attraktoren (engl. strange attractors) faszinieren die Chaosforscher.<br />

Der Poincaré-Schnitt ist in diesem Fall ein fraktales Gebilde, also eine Menge,<br />

die mehr ist als eine eindimensionale Linie, jedoch weniger als eine zweidimensionale<br />

Fläche.<br />

3.2 Fraktale Eigenschaften seltsamer Attraktoren *<br />

Ein Fraktal ist eine in den R n eingebettete Menge von Punkten mit einer nichttrivialen<br />

Struktur, die selbstähnliche Eigenschaften besitzt. Vergrößert man einen kleinen<br />

Teilbereich einer solchen Menge, erhält man immer wieder ein qualitativ ähnliches Erscheinungsbild.<br />

Die Menge ist also vereinfacht ausgedrückt invariant gegenüber Zoom-<br />

Operationen. Dies bedeutet, dass sie abgesehen von der Gesamtabmessung <strong>und</strong> ggf. einem<br />

unteren Cutoff (z.B. der Pixelgröße) keine typische Skala besitzt.<br />

... wird fortgesetzt.<br />

3.3 Chaotische iterative Abbildungen<br />

Die Bestimmung des Attraktors eines mechanischen Systems ist numerisch durchaus anspruchsvoll,<br />

denn man benötigt Tausende oder gar Millionen von Poincaré-Schnitten, die<br />

jeweils durch Runge-Kutta-Integration der Trajektorie zwischen den einzelnen Schnitten<br />

erzeugt werden müssen. Es stellt sich deshalb die Frage, ob diese komplizierte Prozedur<br />

wirklich notwendig ist, um Chaos zu erzeugen, oder ob es vereinfachte Modellsysteme<br />

gibt, die zwar nicht mit den bereits diskutierten identisch sind, jedoch qualitativ<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


46 Chaos<br />

gleichwertige Eigenschaften besitzen. Besonders elegant wäre es, wenn man zwischen den<br />

Poincaré-Schnitten keine DGL iterieren muss, sondern durch eine einfache Abbildung<br />

direkt von Schnitt zu Schnitt gelangt, also den jeweils nächsten roten Punkt als Funktion<br />

des vorherigen erhält (siehe Abb. 3.8). Die Frage ist nicht, ob eine solche chaotische<br />

iterative Abbildung existiert, denn die Integration nach Runge-Kutta selbst ist ja bereits<br />

eine wenn auch komplizierte Abbildung. Das Ziel ist es vielmehr, eine möglichst<br />

einfache (<strong>und</strong> damit numerisch schnelle) Abbildung zu finden, welche die Eigenschaften<br />

eines chaotischen Systems qualitativ reproduziert. Es zeigt sich, dass bereits eine einfache<br />

quadratische Abbildung dazu ausreicht.<br />

3.3.1 Quadratische Abbildung<br />

Fixpunkte<br />

Als einfachestes Beispiel einer solchen iterativen Abbildungsvorschrift betrachten wir die<br />

quadratische Abbildung<br />

f : R ↦→ R : f(x) = a − x 2 , (3.8)<br />

wobei a > 0 ein frei wählbarer reeller Parameter ist. Mit dieser Abbildung untersuchen<br />

die durch<br />

x n+1 = f(x n ) (3.9)<br />

vorgegebene Sequenz x 0 , x 1 , x 1 , . . . mit dem Startwert x 0 . Im Gegensatz zum gedämpften<br />

Pendel, welches zweidimensionale Poincaré-Schnitte mit den Koordinaten (φ n , ˙φ n )<br />

besitzt, hat man hier eindimensionale “Poincaré-Schnitte” mit der Koordinate x n . Wir<br />

wollen zunächst die einfach periodischen Lösungen identifizieren, die Fixpunkten (engl.<br />

fixed point) im Poincaré-Schnitt entsprechen, d.h. wir suchen die Fixpunkte der Gleichung<br />

f(x) = x . (3.10)<br />

Dazu ist lediglich eine quadratische Gleichung zu lösen. Die beiden Lösungen x ∗ ±, die wir<br />

mit einem Stern kennzeichnen wollen, lauten<br />

x ∗ ± = 1 2 (−1 ± √ 1 + 4a) . (3.11)<br />

Stabilitätsanalyse<br />

Zu jeder Fixpunktbestimmung gehört eine Stabilitätsanalyse, denn der beste Fixpunkt<br />

ist wertlos, wenn er unter dem Einfluss kleiner Abweichungen instabil ist, ähnlich wie ein<br />

auf der Spitze balancierender Bleistift.<br />

Eine Stabilitätsanalyse untersucht, wie sich eine infinitesimale Abweichung zu niedrigster<br />

nichtverschwindender Ordnung im Rahmen einer Taylor-Näherung zeitlich entwickelt, ob<br />

sie also gegen Null geht (stabiles Verhalten) oder verstärkt wird (instabiles Verhalten).<br />

In der Regel reicht es aus, die erste Ordnung der Taylor-Reihe zu untersuchen, womit<br />

man lineare, also lösbare Gleichungssysteme erhält. Wenn die betrachtete Ordnung keine<br />

Antwort liefert, also Abweichungen weder verstärkt noch dämpft, muss zur jeweils<br />

nächsthöheren Ordnung übergegangen werden.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.3 Chaotische iterative Abbildungen 47<br />

2<br />

2<br />

1<br />

f(x)=x<br />

1<br />

f(f(x))=x<br />

x*<br />

0<br />

x*<br />

0<br />

-1<br />

-1<br />

-2<br />

0 0,5 1 1,5<br />

a<br />

-2<br />

0 0,5 1 1,5<br />

a<br />

Abbildung 3.9: Fixpunkte der Abbildung f(x) = a − x 2 . Das linke Tableau zeigt die Lage der einfachen<br />

Fixpunkte f(x ∗ ) = x ∗ als Funktion des Parameters a im Bereich a > − 1 4 , in<br />

dem die Lösungen reell sind. Stabile Lösungen sind als durchgezogene Linien, instabile<br />

Lösungen dagegen gestrichelt in roter Farbe dargestellt. Das rechte Tableau zeigt<br />

die entsprechenden Lösungen der zweifach iterierten Abbildung f(f(x ∗ )) = x ∗ (siehe<br />

Text).<br />

Im Fall der quadratischen Abbildungen betrachten wir also nun eine infinitesimale Abweichung<br />

ɛ vom Fixpunkt x ∗ + bzw. x ∗ −:<br />

f(x ∗ ± + ɛ) = f(x ∗<br />

} {{<br />

±) + f ′ (x ∗<br />

}<br />

±)ɛ +O(ɛ 2 ) . (3.12)<br />

} {{ }<br />

=x ∗ ± ɛ ′<br />

Nach einer Iteration ist also aus der Abweichung ɛ in 1. Ordnung die Abweichung ɛ ′<br />

geworden. Offenbar ist der Fixpunkt stabil wenn |ɛ ′ | < |ɛ| ist, wenn also<br />

|f ′ (x ∗ ±)| < 1 (3.13)<br />

ist (ein häufiger Anfängerfehler besteht darin, die Betragsstriche zu vergessen). Im Fall<br />

der quadratischen Abbildung erhalten wir <strong>für</strong> den Fixpunkt x ∗ − die Ableitung<br />

f ′ (x ∗ −) = 1 + √ 1 + 4a > 1 , (3.14)<br />

d.h. dieser Fixpunkt ist immer instabil. Für den anderen Fixpunt erhalten wir entsprechend<br />

f ′ (x ∗ +) = 1 − √ 1 + 4a < 0 . (3.15)<br />

Hier ist die Ableitung also stets negativ. Sie ist außerdem vom Betrage kleiner als 1,<br />

sofern a < 3 4<br />

ist. Diese Resultate sind grafisch auf der linken Seite von Abb. 3.9 zusammengefasst.<br />

Bemerkung: Bei Fixpunkten mehrdimensionaler Abbildungen ⃗ f(⃗x) = ⃗x wird die Stabilitätsanalyse<br />

analog durchgeführt: Ist ⃗ɛ eine infinitesimale Abweichung vom Fixpunkt, so<br />

gilt in erster Näherung ⃗ f(⃗x ∗ + ⃗ɛ) = x ∗ + J⃗ɛ + O(ɛ 2 ), wobei J die Jacobi-Matrix mit den<br />

Matrixelementen J ij = ∂f i<br />

∂x j<br />

ausgewertet an der Stelle ⃗x = ⃗x ∗ ist. Ob die Abbildung stabil<br />

oder instabil ist, hängt dabei von der Orientierung von ⃗ɛ ab. Stellt man ⃗ɛ als Linearkombination<br />

der Eigenvektoren von J dar, so sind die Anteile, deren Eigenwerte vom Betrage<br />

kleiner als 1 sind, stabil, während die anderen Anteile instabil oder marginal sind. Die<br />

Stabilitätsanalyse besteht also darin, dass man die Eigenwerte der Jacobimatrix bestimmt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


48 Chaos<br />

Mehrfachiteration<br />

Für a > 3 4<br />

wird der einzige stabile Fixpunkt der quadratischen Abbildung instabil. Ein<br />

ähnliches Phänomen hatten wir bereits beim gedämpften getriebenen Pendel beobachtet,<br />

– auch dort wurde bei Erhöhung der Anregungsamplitude die einfach periodische Lösung<br />

instabil, wobei es zu einer Periodenverdopplung kam. Im Poincaré-Schnitt führt dies zu<br />

einem alternierenden Springen zwischen zwei Punkten, d.h. die Dynamik kehrt erst nach<br />

zwei Schnitten zu ihrem Ausgangspunkt zurück.<br />

Um herauszufinden, ob die quadratische Abbildung ähnliche phänomenologische Eigenschaften<br />

besitzt, suchen wir nun nach Fixpunkten der zweifach iterierten Abbildung, also<br />

nach Lösungen der Gleichung<br />

f(f(x)) = x , (3.16)<br />

die, wie man leicht zeigen kann, einem Polynom vierten Grades entspricht:<br />

Dieses Polynom hat vier Nullstellen, nämlich<br />

x ∗ 1,2 = 1 2<br />

x 4 − 2ax 2 + x + a 2 − a = 0 (3.17)<br />

(<br />

−1 ±<br />

√<br />

1 + 4a<br />

)<br />

, x<br />

∗<br />

3,4 = 1 2<br />

(<br />

+1 ±<br />

√<br />

−3 + 4a<br />

)<br />

. (3.18)<br />

Die ersten beiden Lösungen sind mit den Fixpunkten (3.11) identisch, da jede Lösung<br />

von f(x ∗ ) = x ∗ auch eine Lösung von f(f(x ∗ )) = x ∗ mit gleichen Stabilitätseigenschaften<br />

sein muss. Hinzu kommen zwei neue Lösungen x ∗ 3,4 , die auf der rechten Seite von<br />

Abb. 3.9 dargestellt sind. Genau dort, wo der obere Ast der ursprünglichen Parabel instabil<br />

wird, kommt es zu einer Verzweigung in zwei neue Parabeln, zwischen denen das<br />

dynamische System hin <strong>und</strong> her springt. Eine solche Verzweigung wird als Bifurkation<br />

bezeichnet. Wegen ihrer typischen Form wird sie auch als Heugabel-Bifurkation (engl.<br />

pitchfork bifurcation) bezeichnet.<br />

Bemerkung: Es gibt neben dieser sogenannten Heugabel-<br />

Bifurkation weitere Bifurkationstypen wie z.B. die Sattelpunktsbifurkation,<br />

die Hopf-Bifurkation, die transkritische Bifukation oder<br />

die Flip-Bifurkation, auf die hier aber nicht näher eingegangen wird.<br />

Auch bei den Fixpunkten der zweifach iterierten Abbildung ist nun eine Stabilitätsanalyse<br />

durchzuführen. Man verfährt dabei genau so wie oben beschrieben mit dem einzigen<br />

Unterschied, dass nun die Ableitung der zweifach iterierten Abbildung f(f(x)) zu untersuchen<br />

ist. Eine einfache Rechnung ergibt<br />

∣<br />

d ∣∣∣x<br />

dx f(f(x)) = ( 1 ± √ 1 + 4a ) ∣<br />

2 d ∣∣∣x<br />

,<br />

∗ dx f(f(x)) = 4(1 − a) . (3.19)<br />

∗<br />

1,2 3,4<br />

Die Ableitungen an der Stelle x ∗ 1,2 sind die Quadrate der entsprechenden einfachen Ableitung<br />

in Gl. (3.14) <strong>und</strong> (3.15) <strong>und</strong> somit hat die zweifach iterierte Abbildung <strong>für</strong> diese<br />

Fixpunkte wie erwartet die gleichen Stabilitätseigenschaften wie die einfach iterierte Abbildung.<br />

Die Ableitungen <strong>für</strong> x ∗ 3,4 zeigen, dass die neuen Lösungen nur <strong>für</strong> a < 1.25 stabil<br />

sind. In der Tat werden wir sehen, dass an der Stelle a = 1.25 eine weitere Bifurkation<br />

stattfindet, die mit einer Periodenvervierfachung einhergeht.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.3 Chaotische iterative Abbildungen 49<br />

Grafische Darstellung der Bifurkationen<br />

Man kann die Bifurkationsfolge sehr einfach auf dem Bildschirm darstellen, indem man<br />

die Abbildung iteriert, die Werte x n gegen den Parameter a aufträgt <strong>und</strong> dabei a sehr<br />

langsam im Vergleich zur Stabilisierungszeitskala, also adiabatisch erhöht. Dies leistet<br />

der folgende kurze einfache Code:<br />

#include "standard"<br />

#include "xwindows"<br />

int main (void)<br />

{<br />

double a1=0.7, a2=2.0, a=a1, x=0.5; // Parameterbereich, Startwert<br />

const int F = 500;<br />

// Fenstergroesse<br />

XWindow W; W.Open(F,F,"Logistische Abbildung");<br />

while (a


50 Chaos<br />

Abbildung 3.10: Abstand ∆a n = a ∞−a n der n-ten Bifurkationsposition a n zum abgeschätzten Grenzwert<br />

a ∞ als Funktion von n. Die Datenpunkte liegen auf einer Geraden womit das<br />

exponentielle Verhalten bestätigt wird. Die Steigung der Regressionsgeraden (rot) ist<br />

m = −1.54.<br />

Sofort fällt auf, dass die Differenzen zwischen aufeinanderfolgenden Werten sehr schnell<br />

abnehmen, <strong>und</strong> zwar in etwa um einen konstanten Faktor. Das legt nahe, dass die Folge<br />

a 1 , a 2 , a 3 , . . . exponentiell gegen einen bestimmten Grenzwert a ∞ strebt. Diesen Grenzwert<br />

kann man näherungsweise ermitteln, indem man ∆a n = a ∞ − a n gegen n aufträgt<br />

<strong>und</strong> dabei a ∞ so einstellt, dass man eine Gerade erhält (siehe Abb. 3.10). Auf diese<br />

Weise kann man den Grenzwert anhand der obigen Daten mit a ∞ = 1.401155189092(1)<br />

abschätzen. Für die Steigung der Regressionsgerade erhält man m = −1.54.<br />

Die Tatsache, dass die Datenpunkte mit hoher Genauigkeit im log-lin-Plot auf einer<br />

Geraden liegen, legt nahe, dass die Bifurkationspunkte a n <strong>für</strong> große n in der Tat einem<br />

Exponentialgesetz folgen:<br />

a n ≃ a ∞ − ce mn = a ∞ − cδ −n , (3.20)<br />

wobei δ = e −m ≈ 4.65 ist. Die Zahl δ wird in der Literatur als Feigenbaum-Konstante<br />

bezeichnet.<br />

Bestimmung durch Differenzenquotienten<br />

Die oben beschriebene Abschätzung liefert drei Konstanten, nämlich den Grenzwert a ∞ ,<br />

die Amplitude c <strong>und</strong> die Feigenbaumkonstante δ. Setzt man allerdings die exponentielle<br />

Gesetzmäßigkeit (3.20) voraus, so kann man die Feigenbaumkonstante auch allein<br />

abschätzen. Dazu betrachtet man zunächst Differenzen der Form<br />

lim (a n+1 − a n ) = cδ −n−1 (1 − δ) , (3.21)<br />

n→∞<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.3 Chaotische iterative Abbildungen 51<br />

in denen der Offset a ∞ herausfällt. Weiterhin kann man die Amplitude c eliminieren,<br />

indem man aus diesen Differenzen <strong>für</strong> aufeinanderfolgende n einen Quotienten bildet:<br />

a n − a n−1<br />

lim<br />

=<br />

n→∞ a n+1 − a n<br />

δ(1 − δ)<br />

1 − δ<br />

= δ . (3.22)<br />

Die Feigenbaumkonstante δ lässt sich also abschätzen, indem man diese Quotienten gegen<br />

n aufträgt <strong>und</strong> die Daten <strong>für</strong> n → ∞ extrapoliert. Die Feigenbaumkonstante ist<br />

also nichts anderes als das asymptotische Verhältnis der Längen aufeinanderfolgender<br />

Parameterintervalle unterschiedlicher Periode.<br />

Universalität der Feigenbaumkonstante<br />

Entdeckt wurde die Feigenbaumkonstante nicht etwa von Mitchell Feigenbaum, sondern<br />

1977 von dem Marburger Theoretiker Siegfried Großmann (den viele von Ihnen von seinem<br />

Mathematischen Einführungskurs <strong>für</strong> die <strong>Physik</strong> kennen) <strong>und</strong> Stefan Thomae von<br />

der Uni Duisburg-Essen. Die wirkliche Bedeutung dieser Zahl wurde allerdings erst von<br />

dem amerikanischen Chaosforscher Mitchell Feigenbaum erkannt. Man erhält diese Zahl<br />

nämlich nicht nur <strong>für</strong> die quadratische Abbildung, sondern <strong>für</strong> jede eindimensionale nichtlineare<br />

Abbildung mit genau einem quadratischen (d.h. durch eine Parabel approximierbaren)<br />

Maximum. Der Wert der Feigenbaumkonstante ist also weitgehend unabhängig<br />

von der Wahl der Abbildung. Dieses Phänomen wird in der <strong>Physik</strong> mit dem Begriff der<br />

Universalität umschrieben. Die Feigenbaumkonstante ist heute mit hoher Genauigkeit<br />

bekannt:<br />

δ = 4.66920160910299067185320382... (3.23)<br />

Es wird bisweilen sogar behauptet, dass δ <strong>für</strong> die Chaosforschung eine ähnlich wichtige<br />

Rolle spiele wie π in der Geometrie.<br />

Bemerkung: Die beiden anderen Konstanten a ∞ <strong>und</strong> c sind dagegen nichtuniversell, d.h.<br />

sie nehmen <strong>für</strong> jede Abbildung andere Werte an.<br />

Verwandte Abbildungen<br />

In diesem Kapitel haben wir bislang die quadratische Abbildung x n+1 = a − x 2 n untersucht.<br />

Durch Umskalierung mittels x n = a˜x n erhält man die Abbildung<br />

˜x n+1 = 1 − a˜x 2 n , (3.24)<br />

die ebenfalls in zahlreichen Lehrbüchern untersucht wird. Eine andere populäre quadratische<br />

Abbildung ist die sogenannte logistische Abbildung, die ursprünglich ein demografisches<br />

Modell eingeführt wurde <strong>und</strong> in ihrer dimensionslosen Form durch<br />

˜x n+1 = r˜x n (1 − ˜x n ) (3.25)<br />

gegeben ist, wobei r der Kontrollparameter ist. Durch eine einfache lineare Transformation<br />

˜x n = xn r<br />

+ 1 2 geht diese Gleichung in (3.24) über, wobei a = r 2 ( r 2<br />

− 1) ist.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


52 Chaos<br />

Abbildung 3.11: Mandelbrotmenge (Apfelmännchen) in der komplexen Ebene. Die farbliche Abstufung<br />

außerhalb des schwarzen Konvergenzbereichs visualisiert, wie schnell die iterierte<br />

quadratische Abbildung divergiert [Quelle: Wikimedia].<br />

Nichtquadratische Abbildungen<br />

Die vielleicht einfachste eindimensionale nichtquadratische Abbildung mit chaotischen<br />

Eigenschaften lautet<br />

x n+1 = a − |x| µ (3.26)<br />

mit einem frei wählbaren Exponenten µ. Diese Gleichung geht <strong>für</strong> µ = 2 in die zuvor<br />

betrachtete quadratische Gleichung über. Für µ ≠ 2 erhält man eine ähnliche chaotische<br />

Phänomenologie, jedoch mit einer anderen Feigenbaumkonstante, die jezt von µ abhängig<br />

ist, da das Maximum der Funktion nicht mehr durch eine Parabel approximierbar ist.<br />

3.3.3 Mandelbrotmenge<br />

Die Mandelbrotmenge ist die Menge der komplexen Zahlen<br />

c ∈ C, <strong>für</strong> welche die durch die Abbildung<br />

z n+1 = c + z 2 n (3.27)<br />

iterierte Folge von komplexen Zahlen konvergent ist. Man<br />

erhält das sogenannte Apfelmännchen, das einen fraktalen<br />

Rand besitzt. Die Abbildung ist mit der oben untersuchten<br />

quadratischen Abbildung bis auf Vorzeichenwechsel z n =<br />

−x n identisch. Die Mandelbrotmenge ist also gewissermaßen<br />

die Erweiterung des Feigenbaum-Problems auf die komplexe<br />

Ebene (siehe nebenstehende Abbildung).<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.4 Aufgaben 53<br />

3.4 Aufgaben<br />

Aufgabe 3.1<br />

(Integration einer chaotischen Differentialgleichung)<br />

(a) Schreiben Sie ein Programm zur Integration der in der Vorlesung behandelten Differentialgleichung<br />

des chaotischen Pendels<br />

¨φ + r ˙φ + sin φ = a cos(ω D t).<br />

mit einem Runge-Kutta-Verfahren zweiter Ordnung (oder höher).<br />

(b) Iterieren Sie die Differentialgleichung <strong>für</strong> r = 1/4 <strong>und</strong> ω D = 2/3 <strong>und</strong> plotten Sie<br />

den Poincaré-Schnitt, d.h. die Punkte (φ(t j ), ˙φ(t j )) <strong>für</strong> t j = 2πj/ω D <strong>und</strong> j ∈ N <strong>für</strong><br />

die Amplitude a = 0.7.<br />

(c) Starten Sie nun das Programm mit a = 0 <strong>und</strong> erhöhen Sie während der Iteration die<br />

Amplitude a adiabatisch (d.h. extrem langsam im Vergleich zur Pendeldynamik,<br />

indem Sie a bei jedem Iterationsschritt um einen sehr kleinen Wert erhöhen), bis Sie<br />

den Wert a = 2 erreichen. Tragen Sie währenddessen die Punkte (x, y) = (a, φ(t j ))<br />

grafisch auf. In dieser Darstellung sollte der Wechsel von chaotischem <strong>und</strong> nichtchaotischem<br />

Verhalten als Funktion von a erkennbar werden.<br />

Aufgabe 3.2<br />

(Doppelpendel)<br />

Gegeben sei ein reibungsfreies Doppelpendel mit gleichen Massen m 1 = m 2 = m <strong>und</strong><br />

gleichen Längen l 1 = l 2 = l. Der Einfachheit halber können Sie den dimensionslosen Fall<br />

m = 1, l = 1 betrachten.<br />

(a) Geben Sie die Lagrangefunktion L(φ 1 , ˙φ 1 , φ 2 , ˙φ 2 ) an, stellen Sie die entsprechenden<br />

Bewegungsgleichungen auf <strong>und</strong> lösen Sie diese Gleichungen nach ¨φ 1 <strong>und</strong> ¨φ 2 auf.<br />

(b) Überführen Sie dieses System von zwei gekoppelten Differentialgleichungen zweiter<br />

Ordnung in ein System von vier Differentialgleichungen erster Ordnung <strong>und</strong><br />

schreiben Sie ein Programm zur Integration mit Runge-Kutta 4. Ordnung.<br />

(c) Integrieren Sie diese Differentialgleichungen mit den Anfangsbedingungen<br />

φ 1 (0) = π , φ 2 (0) = π/2 , ˙φ1 (0) = ˙φ 2 (0) = 0<br />

mit der Schrittweite h = 0.01 <strong>und</strong> plotten Sie die Lösung von φ 1 (t) <strong>und</strong> φ 2 (t) als<br />

zwei Kurven in einer Abbildung im Bereich von t = 0 bis t = 50.<br />

(d) Chaotisches Verhalten äußert sich in einer exponentiellen Verstärkung von kleinen<br />

Abweichungen in den Anfangsbedingungen. Um dies zu überprüfen, verändern Sie<br />

nun die Anfangsbedingung φ 1 (0) = π + 0.001 <strong>und</strong> vergleichen das Ergebnis mit<br />

(c). Schätzen Sie grob die Zeit ab, zu der die Trajektorien beginnen, erheblich<br />

voneinander abzuweichen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


54 Chaos<br />

(e) Erstellen Sie mit den Anfangsbedingungen aus (c) drei Poincaré-Schnitte, die durch<br />

die Nulldurchgänge von φ 1 getriggert werden, d.h. immer wenn das obere Pendel<br />

durch die Ruhelage geht, wird ein Punkt in der ( ˙φ 1 , φ 2 )-Ebene, in der ( ˙φ 1 , ˙φ 2 )-<br />

Ebene bzw. in der (φ 2 , ˙φ 2 )-Ebene geplottet (dazu ist eine längere Laufzeit erforderlich).<br />

Aufgabe 3.3 (Lorenz-Attraktor)<br />

Gegeben sei das Differentialgleichungssystem erster Ordnung<br />

ẋ = a(y − x)<br />

ẏ = x(b − z) − y<br />

ż = xy − cz<br />

wobei a, b, c Parameter sind. Simulieren Sie dieses DGL-System <strong>für</strong> die Parameter<br />

a = 10 , b = 28 , c = 8/3<br />

mit Hilfe eines Runge-Kutta-Verfahrens vierter Ordnung <strong>und</strong> stellen Sie die Trajektorie<br />

in der xz- oder yz-Ebene grafisch dar. Starten Sie mit zwei geringfügig verschiedenen<br />

Anfangsbedingungen <strong>und</strong> überzeugen Sie sich, dass die dazugehörigen Trajektorien<br />

auseinanderlaufen (Die Gesamtlaufzeit sollte dabei mindestens so gross sein, dass der<br />

chaotische Charakter des Lorenz-Systems sichtbar wird).<br />

Siehe auch: http://de.wikipedia.org/wiki/Lorenz-Attraktor.<br />

Edward N. Lorenz hat übrigens mit der Lorentz-Transformation nichts zu tun!<br />

Aufgabe 3.4<br />

(Abschätzung der Feigenbaum-Konstanten)<br />

Die Iteration der Abbildung x n+1 = a − x 2 n konvergiert <strong>für</strong> a < 3/4 gegen einen einzigen<br />

Fixpunkt, ab a 1 = 3/4 kommt es zur Periodenverdopplung, ab a 2 ≈ 1.25 zur Periodenvervierfachung<br />

usw., bis bei a ∞ ein nichtperiodisches (chaotisches) Verhalten einsetzt.<br />

Bestimmen Sie die ersten Bifurkationspunkte a 1 , a 2 , a 3 . . . so weit wie Sie können mit<br />

einem numerischen Suchverfahren <strong>und</strong> berechnen Sie die Quotienten<br />

δ n =<br />

a n+1 − a n<br />

a n+2 − a n+1<br />

.<br />

Diese Quotienten sollten <strong>für</strong> n → ∞ gegen die sogenannte Feigenbaum-Konstante δ konvergieren.<br />

Schätzen Sie δ <strong>und</strong> a ∞ ab.<br />

Aufgabe 3.5<br />

(Synchronisation zweier chaotischer Abbildungen)<br />

(a) Betrachten Sie wie in der Vorlesung besprochen zwei identische quadratische Abbildungen<br />

x n+1 = a − x 2 n<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


3.4 Aufgaben 55<br />

y n+1 = a − y 2 n<br />

mit 0 ≤ a < 2 bei infinitesimal unterschiedlichen Anfangsbedingungen y 0 = x 0 + ɛ.<br />

Überzeugen Sie sich, dass die beiden Abbildungen <strong>für</strong> a = 1.8 auseinanderlaufen<br />

<strong>und</strong> eine chaotische Dynamik entfalten. Wenn Sie die Möglichkeit einer grafischen<br />

Darstellung haben, wird es hilfreich sein, wenn Sie dazu y n gegen x n auftragen.<br />

(b) Koppeln Sie nun die beiden Abbildungen durch einen Kopplungsparameter c, indem<br />

Sie die modifizierten Abbildungen<br />

x n+1 = a − ((1 − c)x n + c y n ) 2<br />

y n+1 = a − ((1 − c)y n + c x n ) 2<br />

iterieren, wobei 0 ≤ c ≤ 1 ist. Iterieren Sie diese Abbildungen <strong>für</strong> a = 1.8 mit infinitesimal<br />

verschiedenen Anfangsbedingungen, indem Sie den Parameter c von Null<br />

aus langsam hochfahren. Dabei werden Sie sehen, dass das gekoppelte System zwischen<br />

chaotischen <strong>und</strong> periodischen Verhaltensweisen wechselt. Bei welchem Wert<br />

von c tritt vollständige Synchronisierung (x n = y n <strong>für</strong> n → ∞) ein?<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4 Zufallszahlen<br />

Tübinger Studenten beim Billardspiel, frühes 19. Jhdt.<br />

Viele Vorgänge in der Vielteilchenphysik sind durch eine hohe Komplexität gekennzeichnet,<br />

die nicht mehr vollständig im Detail beschreibbar ist. Dies trifft vor allem auf chaotische<br />

Systeme zu, welche die Eigenschaft besitzen, dass sehr kleine Variationen der Anfangsbedingung<br />

zu sehr großen Änderungen des Zustands zu einem späteren Zeitpunkt<br />

führen können. Ein einfaches Beispiel ist ein Billardspiel. Nur drei bis vier aufeinander<br />

folgende Stöße der Kugeln sind durch den Spieler zu beeinflussen, doch schon nach wenigen<br />

weiteren Stößen wird das Verhalten unkontrollierbar. Die Dynamik verstärkt dabei<br />

kleine Variationen exponentiell, so dass selbst Quantenfluktuationen nach hinreichend<br />

vielen Stößen makroskopische Auswirkungen haben können. Dies äußert sich in einem<br />

(scheinbar) zufälligen Verhalten des Systems. Dennoch folgt auch eine solche komplexe<br />

Dynamik bestimmten Gesetzmäßigkeiten, – diese zu beschreiben ist das Ziel der Thermodynamik<br />

<strong>und</strong> der statistischen <strong>Physik</strong>.<br />

Die moderne statistische <strong>Physik</strong> hat einen enormen Schub durch die Entwicklung schneller<br />

Rechner erhalten, denn damit erhält man die Möglichkeit, komplexe Vielteilchensysteme<br />

direkt zu simulieren, sie also gewissermaßen auf dem Rechner zu rekonstruieren. Um<br />

solche stochastischen (d.h. zufällige) Prozesse simulieren zu können, benötigt man Zufallszahlen.<br />

Zufallszahlen kann man mit geeigneter Hardware, z.B. mit einer rauschenden<br />

Diode oder einem radioaktiven Präparat, erzeugen. Es ist jedoch gar nicht so einfach,<br />

einen qualitativ guten Hardware-Zufallszahlengenerator zu bauen (in einem unserer studentischen<br />

Projekte wurde ein solcher Generator konstruiert). Praktischer <strong>und</strong> schneller<br />

ist es, Zufallszahlen mit geeigneten Algorithmen zu erzeugen. Solche Pseudo-Zufallszahlen<br />

sind jedoch nicht wirklich zufällig, da ein Rechner eine deterministische Maschine ist. Es<br />

gibt daher – je nach Algorithmus – Zufallsgeneratoren unterschiedlicher Qualität.<br />

4.1 Definition<br />

4.1.1 Ganzzahlige Zufallszahlen<br />

Standardbeispiel <strong>für</strong> einen ganzzahligen Zufallszahlengenerator ist ein Würfel, dessen<br />

Wertebereich die Zahlen von 1 bis 6 ist. Etwas allgemeiner wollen wir annehmen, dass<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


58 Zufallszahlen<br />

unser Generator ganzzahlige Werte zwischen r min <strong>und</strong> r max liefert, dass also Zufallszahlen<br />

r ∈ {r min , r min + 1, . . . r max } (4.1)<br />

durch den Aufruf einer bereits existierenden Funktion rndint(r min , r max ) erzeugt werden.<br />

Wiederholter Aufruf dieser Funktion liefert eine Sequenz von Zufallszahlen:<br />

r 1 := rndint(r min , r max )<br />

r 2 := rndint(r min , r max )<br />

. . .<br />

Ein idealer Zufallszahlengenerator sollte folgende Eigenschaften bestitzen:<br />

(a) Gleichverteilung:<br />

Erzeugt man eine große Anzahl von Zufallszahlen, so kann man durch Ermittlung<br />

der relativen Häufigkeit die Wahrscheinlichkeit P (r) <strong>für</strong> ein bestimmtes Ergebnis r<br />

abschätzen. Von einem Standard-Zufallszahlengenerator wird erwartet, dass die<br />

Ergebnisse gleichverteilt sind, dass also P (r) auf der Menge der erzeugten Zufallszahlen<br />

konstant ist:<br />

{<br />

1<br />

P (r) =<br />

r max−r min +1<br />

falls r ∈ {r min , r min + 1, . . . , r max }<br />

(4.2)<br />

0 sonst<br />

Diese Verteilung ist – wie jede Wahrscheinlichkeitsverteilung – dadurch normiert,<br />

dass die Summe über alle Wahrscheinlichkeiten gleich 1 ist:<br />

r∑<br />

max<br />

r=r min<br />

P (r) = 1 (4.3)<br />

(b) Korrelationsfreiheit:<br />

Eine zweite wichtige Forderung, die ein Zufallszahlengenerator zu erfüllen hat, ist<br />

die Korrelationsfreiheit. Unter Korrelationen versteht man statistische Abhängigkeiten<br />

zwischen verschiedenen, in der Regel aufeinanderfolgenden Zufallszahlen. Bei<br />

der Simulation eines Würfels ist es beispielsweise unerwünscht, dass nach einer 6<br />

mit erhöhter Wahrscheinlichkeit eine weitere 6 folgt.<br />

Korrelationen zwischen zwei aufeinanderfolgenden Zufallszahlen können mit Hilfe<br />

der kombinierten Verteilungsfunktion P (r i , r i+1 ) ermittelt werden, welche die<br />

Wahrschenlichkeit angibt, bei zwei aufeinanderfolgenden Funktionsaufrufen die Werte<br />

r i <strong>und</strong> r i+1 zu erhalten. Bei einem Würfel wäre diese Verteilung also durch 36<br />

verschiedene Wahrscheinlichkeiten gegeben, deren Summe gleich 1 ist. Aufeinanderfolgende<br />

Zufallszahlen sind genau dann unkorreliert, wenn diese Wahrscheinlichkeitsverteilung<br />

faktorisiert, d.h. P (r i , r i+1 ) = P (r i )P (r i+1 ) ist. Analog sind n<br />

aufeinanderfolgende Zufallszahlen r i , r i+1 , . . .,r i+n−1 genau dann unkorreliert, wenn<br />

die entsprechende Wahrscheinlichkeitsverteilung faktorisiert:<br />

P (r i , r i+1 , . . . , r i+n−1 ) =<br />

n−1<br />

∏<br />

k=0<br />

P (r i+k ) . (4.4)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4.1 Definition 59<br />

4.1.2 Fließkomma-Zufallszahlen<br />

In vielen Anwendungen möchte man reelle Zufallszahlen in einem bestimmten Intervall<br />

r ∈ [r min , r max ] ⊂ R erzeugen. In einem Rechner werden reelle Zahlen durch sogenannte<br />

Fließkommazahlen (floating point types) approximiert. 1<br />

Da es in einem Intervall unendlich viele reelle Zahlen gibt, ist die Wahrscheinlichkeit, eine<br />

bestimmte Zufallszahl r zu erzeugen, gleich Null. Für kontinuierliche Zufallsgrößen definiert<br />

man deshalb eine Wahrscheinlichkeitsdichte P (r) dadurch, dass P (r)dr die Wahrscheinlichkeit<br />

angibt, die erzeugte Zufallszahl in einem infinitesimalen Intervall [r, r + dr]<br />

zu finden.<br />

Von der Wahrscheinlichkeitsdichte eines standardisierten Zufallszahlengenerators wird in<br />

der Regel gefordert, dass sie auf dem erzeugten Wertebereich konstant ist:<br />

P (r) =<br />

{<br />

1<br />

r max−r min<br />

falls r min ≤ r ≤ r max<br />

0 sonst<br />

. (4.5)<br />

Die Wahrscheinlichkeitsdichte ist ausserdem normiert durch<br />

∫ rmax<br />

r min<br />

P (r) dr = 1 . (4.6)<br />

Ein Kriterium <strong>für</strong> Korrelationsfreiheit von n aufeinanderfolgenden Zufallszahlen ist wie<br />

im diskreten Fall die Faktorisierung der Wahrscheinlichkeitsdichte<br />

P (r i , r i+1 , . . . , r i+n−1 ) =<br />

n−1<br />

∏<br />

k=0<br />

P (r i+k ) . (4.7)<br />

4.1.3 Korrelationsfunktionen<br />

Zur Untersuchung eines Zufallszahlengenerators auf mögliche Korrelationen eignen sich<br />

sogenannte Korrelationsfunktionen. Korrelationsfunktionen sind statistische Mittelwerte<br />

von Produkten der zu untersuchenden Größen, so ist beispielsweise eine Zweipunktkorrelationsfunktion<br />

zweier Zufallszahlen r i <strong>und</strong> r j durch<br />

〈r i r j 〉 = ∑ r i<br />

∑<br />

r j<br />

r i r j P (r i , r j ) (4.8)<br />

gegeben. Dabei bezeichnen die spitzen Klammern 〈. . .〉 das Ensemblemittel, d.h. das<br />

arithmetische Mittel des Arguments über viele statistisch unabhängige Realisierungen. 2<br />

Das Ensemblemittel kann man also bilden, indem man ein Programm sehr oft mit unabhängigen<br />

Sequenzen von Zufallszahlen laufen lässt <strong>und</strong> anschließend die Ergebnisse<br />

mittelt.<br />

1 In den meisten Fällen approximieren Fließkommazahlen die Eigenschaften reeller Zahlen sehr gut. Man<br />

sollte sich trotzdem stets vergegenwärtigen, dass der Rechner solche Zahlen ’gequantelt’ darstellt, weil<br />

nur endlich viele Nachkommastellen berücksichtigt werden. In seltenen Fällen, z.B. beim Gebrauch<br />

stark nichtlinearer Funktionen, kann es dazu kommen, dass diese Quantelung sichtbar wird <strong>und</strong><br />

erhebliche Fehler verursacht. Wir werden weiter unten auf dieses Problem zurückkommen.<br />

2 In der Literatur wird auch häufig ein hochgestellter Balken, z.B. r i, als Notation <strong>für</strong> die Mittelwertbildung<br />

benutzt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


60 Zufallszahlen<br />

Faktorisiert nun die Wahrscheinlichkeitsverteilung, d.h. P (r i , r j ) = P (r i )P (r j ), so folgt<br />

daraus, dass auch die Mittelwerte faktorisieren, also 〈r i r j 〉 gleich dem Produkt 〈r i 〉〈r j 〉 ist.<br />

Verallgemeinert <strong>für</strong> n-Punkt-Korrelationsfunktionen bedeutet dies, dass eine notwendige<br />

Bedingung <strong>für</strong> Korrelationsfreiheit darin besteht, dass Produktbildung <strong>und</strong> Mittelwertbildung<br />

in Korrelationsfunktionen miteinander vertauschen:<br />

〈<br />

n∏<br />

r ik 〉 =<br />

k=1<br />

n∏<br />

〈r ik 〉 . (4.9)<br />

Oftmals subtrahiert man das Produkt der Mittelwerte <strong>und</strong> erhält so den sogenannten<br />

zusammenhängenden Anteil (connected part) der Korrelationsfunktion, z.B. <strong>für</strong> zwei Zufallszahlen<br />

ist<br />

〈r i r j 〉 conn := 〈r i r j 〉 − 〈r i 〉〈r j 〉 (4.10)<br />

Der zusammenhängende Anteil ist positiv <strong>für</strong> gleichsinnige Korrelationen, negativ <strong>für</strong><br />

Antikorrelationen <strong>und</strong> Null wenn die Zufallsgrößen unkorreliert sind.<br />

k=1<br />

4.2 Pseudozufallszahlen<br />

Pseudozufallszahlen sind von deterministischen Algorithmen erzeugte Zahlensequenzen,<br />

die scheinbar zufällig aussehen. Pseudozufallszahlengeneratoren iterieren in der Regel<br />

eine chaotische Abbildung <strong>und</strong> haben folgende Eigenschaften:<br />

• Bei identischen Anfangsbedingungen des Generators ist die erzeugte Sequenz von<br />

Zufallszahlen stets gleich. 3<br />

• Die Sequenz wiederholt sich nach endlich vielen Aufrufen, d.h. jeder Zufallszahlengenerator<br />

ist durch eine Periode (oder sogar mehrere Perioden) gekennzeichnet.<br />

Diese Periode sollte länger als die Laufzeit der Anwendung sein.<br />

• Da ein deterministischer Algorithmus zugr<strong>und</strong>e liegt, sind die erzeugten Zufallszahlen<br />

zumindest schwach korreliert. Das Ziel bei der Konstruktion eines Pseudozufallszahlengenerators<br />

ist es, diese unerwünschten Korrelationen so gut wie möglich<br />

zu unterdrücken. Es gibt also ‘gute’ <strong>und</strong> ‘weniger gute’ Generatoren.<br />

Ein standardisierter Zufallszahlengenerator sollte auf dem Wertebereich gleichverteilt <strong>und</strong><br />

möglichst korrelationsarm sein. Außerdem sollte er extrem schnell sein, also auf einem<br />

einfachen Algorithmus beruhen, denn z.B. bei Monte Carlo Simulationen stellt sich heraus,<br />

dass die meiste Rechenzeit <strong>für</strong> die Erzeugung von Zufallszahlen verbraucht wird.<br />

Für die Konstruktion eines Zufallszahlengenerators gibt es allerdings kein Patentrezept.<br />

Während man die Gleichverteilung <strong>für</strong> einen gegebenen Algorithmus in der Regel beweisen<br />

kann, ist die konkrete Berechnung der Korrelationen häufig unmöglich, so dass man<br />

auf empirische Vergleiche angewiesen ist. Viele Forscher bevorzugen einen bestimmten<br />

Generator, doch ist es in der Praxis ratsam, ein neues Programm mit unterschiedlichen<br />

3 Die Reprodzierbarkeit wird häufig dadurch unterdrückt, dass man die Anfangsbedingung von Mausbewegungen<br />

<strong>und</strong> Systemzeit abhängig macht. Sie kann aber auch bei der Fehlersuche nützlich sein,<br />

wenn beispielsweise Ihre Simulation nach mehreren St<strong>und</strong>en einwandfreier Funktion abstürzt <strong>und</strong> Sie<br />

den Fehler eingrenzen wollen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4.2 Pseudozufallszahlen 61<br />

Abbildung 4.1: Vorzeichenbehaftete ganze Zahlen (integers) auf einem 32-bit-Rechner<br />

Generatoren zu testen <strong>und</strong> zu überprüfen, ob man zu statistisch unterschiedlichen Ergebnissen<br />

gelangt, ob sich also möglicherweise versteckte Korrelationen auf das Ergebnis<br />

auswirken.<br />

4.2.1 Algorithmische Implementierung<br />

Unabhängig davon, ob ein Zufallszahlengenerator ganze Zahlen oder Fließkommazahlen<br />

zurückgeben soll, werden die Zufallszahlen intern stets als ganze Zahlen in dem vom<br />

Prozessor zur Verfügung gestellten Wertebereich erzeugt. Dazu muss man wissen, dass<br />

ein Computer jegliche Art von Daten intern als Dualzahlen mit einer festen Anzahl von<br />

Stellen (bits) darstellt. Ältere Prozessoren haben eine Breite von N = 32 bit, neuere die<br />

doppelte Breite von N = 64 bit. Es ist üblich, die bits von 0 bis N − 1 durchzunummerieren,<br />

wobei das niedrigste bit mit der Nummer 0 ganz rechts <strong>und</strong> das höchste ganz<br />

links dargestellt wird.<br />

Man unterscheidet vorzeichenbehaftete <strong>und</strong> positive ganze Zahlen, die beispielsweise in<br />

C++ ihre Entsprechung in den Datentypen int <strong>und</strong> unsigned int finden. Positive ganze<br />

Zahlen nutzen alle N bits <strong>für</strong> die Darstellung als Dualzahl, während vorzeichenbehaftete<br />

ganze Zahlen das höchste Bit als Vorzeichenbit benutzen (siehe Abb. 4.1). Die entsprechenden<br />

Wertebereiche sind also:<br />

{−2 N−1 , . . . , 2 N−1 − 1} <strong>für</strong> vorzeichenbehaftete ganze Zahlen<br />

{0, . . . , 2 N − 1} <strong>für</strong> positive ganze Zahlen<br />

(4.11)<br />

Generatoren <strong>für</strong> Pseudozufallszahlen basieren in der Regel auf einer iterativen Abbildung,<br />

die aus den bereits erzeugten Zufallszahlen eine neue Zufallszahl erzeugt. Im einfachsten<br />

Fall ist diese Iteration einstufig, d.h. das Funktionsergebnis hängt nur von der jeweils<br />

zuletzt erzeugten Zufallszahl ab:<br />

Eine solche einstufige Iteration hat folgende Eigenschaften:<br />

r i = f(r i−1 ) . (4.12)<br />

• Die Periode des Generators ist 2 N oder kürzer, wobei N die Anzahl der bits des<br />

integer-Wertebereichs ist.<br />

• Möglicherweise wird nur eine Teilmenge des Wertebereichs durch die Iteration erreicht.<br />

• Die erreichten Werte sind wegen der Einstufigkeit per Definition gleichverteilt, da<br />

jeder Wert innerhalb einer Periode genau einmal erreicht wird.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


62 Zufallszahlen<br />

4.2.2 Ein (zu) einfacher Zufallszahlengenerator<br />

Einen einfachen (jedoch <strong>für</strong> die Praxis untauglichen) Zufallszahlengenerator erhält man<br />

bereits mit einer linearen Iteration:<br />

r i = (a r i−1 + c) mod m , (4.13)<br />

wobei ’x mod y’ den Rest von x bei der Division durch y bezeichnet. Dabei sind a, c, m<br />

ganzzahlige Konstanten. Wie <strong>für</strong> jeden Zufallszahlengenerator spielt die Wahl der Konstanten<br />

eine entscheidende Rolle. Hier<strong>für</strong> gibt es in der Regel kein systematisches Verfahren,<br />

vielmehr setzten sich bestimmte empirisch ermittelte Werte in der Literatur durch,<br />

die der Definition eines Generators durchaus eine Aura von Magie verleiht. Für obige<br />

Abbildung ist<br />

a = 106 , c = 1283 , m = 6075 (4.14)<br />

eine mögliche Wahl. In C++ entspräche das folgendem Quellcode:<br />

//=======================================================<br />

// Ein (zu) einfacher Zufallszahlengenerator<br />

//=======================================================<br />

int r=1234; // Globale Variable mit Startwert<br />

//------------ erzeuge Pseudozufallszahl ----------------<br />

int rndint (void)<br />

{<br />

const int a=106, c=1283, m=6075;<br />

r = (a*r+c) % m;<br />

return r;<br />

}<br />

Wiederholter Aufruf dieser Funktion erzeugt die Sequenz<br />

1234,4512,5705,4588,1611,1949,1327,2220,5753,3601,264,4967,5335...,<br />

die auf den ersten Blick durchaus zufällig aussieht. Diese Sequenz lässt sich auch leicht<br />

mit Mathematica R○ erzeugen:<br />

f[r_] := Mod[a*r+c, m];<br />

a=106; c=1283; m=6075;<br />

r0=1234;<br />

sequence = NestList[f,r0,m+1];<br />

Wegen der Restbildung in der Funktion f kann dieser Zufallszahlengenerator nur Zahlen<br />

zwischen 0 <strong>und</strong> 6074 erzeugen. Man kann mit einem geeigneten Hilfsprogramm leicht<br />

überprüfen, dass der Generator nach einer Periode von 6075 Aufrufen die gleiche Sequenz<br />

reproduziert. Ausserdem ist der Mittelwert 〈r〉 = 3037. Demzufolge wird also jeder Wert<br />

zwischen 0 <strong>und</strong> 6074 erreicht <strong>und</strong> tritt mit gleicher Wahrscheinlichkeit auf.<br />

Der Generator weist jedoch erhebliche Korrelationen auf, wie im Buch von Kinzel/Reents<br />

demonstriert wird.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4.2 Pseudozufallszahlen 63<br />

Abbildung 4.2: Schematische Darstellung eines verbesserten Zufallszahlengenerators mit zweistufiger<br />

Iteration.<br />

4.2.3 Verbesserte Zufallszahlengeneratoren<br />

Der obige Zufallszahlengenerator kann auf zweierlei Weise verbessert werden:<br />

• Man kann zu einer mehrstufigen Iteration übergehen, d.h. die Funktion f hängt<br />

von mehreren bereits erzeugten Zufallszahlen ab.<br />

• Die Iterationstiefe kann erhöht werden, d.h. nicht die unmittelbar zuvor erzeugten<br />

sondern weiter zurückliegende Zufallszahlen werden als Argumente von f benutzt.<br />

Als Beispiel wollen wir eine zweistufige Iteration der Form<br />

r i := f(r i−t , r i−s ) (4.15)<br />

betrachten, wobei s, t ∈ N die sogenanten delays der Abbildung sind. Eine solche Iteration<br />

ist in Abb. 4.2 schematisch dargestellt. Offensichtlich bestimmen dabei die mit<br />

der geschweiften Klammer gekennzeichnenten Zahlen vollständig die zukünftige Sequenz<br />

<strong>und</strong> werden deshalb als Zustand des Generators bezeichnet. Die Anzahl der möglichen<br />

Zustände in diesem Bereich liefert eine obere Schranke <strong>für</strong> die Periode des Generators,<br />

bei einem 32-bit Rechner ist die Periode also ≤ 2 32t . Bereits <strong>für</strong> t = 2 ist diese Zahl aber<br />

so groß, dass bei einer Frequenz von 10 6 Aufrufen pro Sek<strong>und</strong>e die obere Schranke <strong>für</strong><br />

die Periode bei 600.000 Jahren liegt. Deshalb ist es nicht immer sinnvoll, besonders große<br />

delays zu verwenden.<br />

4.2.4 Zufallszahlengenerator von G. Marsaglia <strong>und</strong> A. Zaman<br />

Ein brauchbarer Zufallszahlengenerator, der nach diesem Prinzip arbeitet, ist der substractwith-borrow-Generator<br />

von Marsaglia <strong>und</strong> Zaman [4]. Er ist definiert durch die Iteration<br />

r i := (r i−s − r i−t − c i−1 ) mod m , (4.16)<br />

wobei c i je nach dem Vorzeichen der Klammer zwischen 0 <strong>und</strong> 1 hin <strong>und</strong> her schaltet:<br />

{ 1 falls ri−s − r<br />

c i :=<br />

i−t − c i−1 > 0<br />

0 andernfalls.<br />

(4.17)<br />

Dabei sind c t sowie r 1 , r 2 , . . . , r t frei initialisierbar <strong>und</strong> legen den Anfangszustand des<br />

Generators fest.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


64 Zufallszahlen<br />

Die Vorteile dieses Generators sind seine Geschwindigkeit <strong>und</strong> die Beweisbarkeit seiner<br />

Periode. Marsaglia <strong>und</strong> Zaman konnten zeigen, dass man <strong>für</strong> die Iteration<br />

r i := (r i−2 − r i−3 − c i−1 ) mod (2 32 − 18) (4.18)<br />

eine Periode von ungefähr 2 92 erhält. Der so definierte Generator hat allerdings noch den<br />

Schönheitsfehler, dass er nicht den kompletten Wertebereich einer 32-bit Zahl abdeckt,<br />

da bei der Restbildung die letzten 18 Zahlenwerte nicht erreicht werden. Dies kann man<br />

umgehen, indem man obige Abbildung mit einer zweiten Abbildung<br />

r i = (69069 r i−1 + 1013904243) mod 2 32 (4.19)<br />

kombiniert, wobei die Modulo-Operation auf 32-bit Rechnern automatisch stattfindet.<br />

Auf diese Weise wird der komplette Wertebereich abgedeckt <strong>und</strong> die Periode ist bei 10 6<br />

Aufrufen pro Sek<strong>und</strong>e in der Größenordnung von 10 24 Jahren, also deutlich länger als<br />

die Lebensdauer des Universums.<br />

4.2.5 Zufallszahlengenerator von R. M. Ziff<br />

Ein sehr erfolgreicher Zufallszahlengenerator wurde von Robert M. Ziff [5] entwickelt. Er<br />

arbeitet mit vier gekoppelten Schieberegistern, ist sehr schnell <strong>und</strong> bietet den Vorteil,<br />

dass sowohl die Periode als auch Drei- <strong>und</strong> Vierpunktkorrelationsfunktionen abgeschätzt<br />

werden können. Ein <strong>für</strong> C++ optimierter Quellcode lautet:<br />

const int Random_A = 471, Random_B = 1586, Random_C = 6988;<br />

const int Random_D = 9689, Random_M = 16383;<br />

const unsigned int Random_Max = 2147483648U;<br />

int Random_nd, Random_ra[Random_M+1];<br />

void InitRandom (unsigned int seed=0)<br />

{<br />

srandom(seed);<br />

Random_nd=random();<br />

for (int i=0; i


4.3 Zufallszahlen mit nichtkonstanter Verteilung 65<br />

4.2.6 ’Echte’ Zufallszahlen<br />

In der Praxis bewährt es sich, mehrere Zufallszahlengeneratoren zur Verfügung zu haben<br />

<strong>und</strong> zu testen, ob diese zu unterschiedlichen Ergebnissen führen. Dies ist in der Regel nicht<br />

der Fall, da viele Simulationen einen selbstmittelnden Effekt haben, der kurzreichweitige<br />

Korrelationen zwischen den Zufallszahlen kompensiert.<br />

Wer dennoch be<strong>für</strong>chtet, dass die erzeugten Zufallszahlen nicht gut genug sind, kann sich<br />

‘echte’ Zufallszahlen von<br />

http://www.random.org/<br />

herunterladen. Wie Sie nachlesen können, waren die dort erzeugten Zufallszahlen sogar<br />

am 11. September 2001 absolut unkorreliert.<br />

4.3 Zufallszahlen mit nichtkonstanter Verteilung<br />

Generatoren <strong>für</strong> reelle Zufallszahlen wie z.B. der Ziff’sche Generator rnd() <strong>und</strong> die<br />

Mathematica R○ -Funktion Random[] sind in der Regel so konstruiert, dass sie gleichverteilte<br />

Zufallszahlen auf dem Intervall [0, 1] liefern. In der Praxis stellt sich aber oft das<br />

Problem, dass Zufallszahlen mit einer nicht-konstanten Verteilung benötigt werden. Als<br />

Beispiel seien Gauß-verteilte Zufallszahlen genannt.<br />

4.3.1 Transformation der Wahrscheinlichkeitsdichte durch Abbildung<br />

Eine Möglichkeit, Zufallszahlen mit einer nicht-konstanten Verteilung zu erzeugen, besteht<br />

darin, die vom Generator gelieferten gleichverteilten Zufallszahlen r i mit Hilfe einer<br />

deterministischen Funktion f auf eine andere Sequenz z i := f(r i ) abzubilden. Von dieser<br />

Funktion wollen wir der Einfachheit halber annehmen, dass sie monoton steigend <strong>und</strong><br />

differenzierbar ist. Die Funktion f bildet dann den Wertebereich r i ∈ [0, 1] auf den neuen<br />

Wertebereich z i ∈ [f(0), f(1)] ab. Ist die Funktion f ausserdem nichtlinear, so wird die<br />

neue Sequenz {z i } auf diesem Intervall nicht mehr gleichverteilt sein.<br />

Die Wirkungsweise einer nichtlinearen Funktion ist in Abb. 4.3) dargestellt. Um die<br />

Transformation von Dichten zu verstehen, ist die r-Achse im Intervall [0, 1] in äquidistanten<br />

Abständen markiert. Diese Werte werden mit der Abbildung f(r) = exp(r 2 ) auf<br />

die vertikale Achse im Intervall [1, e] abgebildet. Hier erhält man offenbar eine variierende<br />

Dichte von Werten, die um so größer ist, je geringer die Steigung der Funktion ist.<br />

Dieser Sachverhalt lässt sich einfach herleiten, wenn man die infinitesimalen Wahrscheinlichkeiten<br />

in den Intervallen [r, r + dr] <strong>und</strong> [s, s + ds] einander gleichsetzt:<br />

P (r) dr = ˜P (s) ds (4.20)<br />

Die Schlange auf der rechten Seite soll andeuten, dass sich ˜P auf die Zufallsvariable s<br />

bezieht <strong>und</strong> wird in der Literatur häufig weggelassen. Nach ’Division’ durch ds erhält<br />

man<br />

P (r) dr<br />

˜P (s) = = P (r)<br />

ds ds/dr = P (r)<br />

f ′ (r) , (4.21)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


66 Zufallszahlen<br />

Abbildung 4.3: Veranschaulichung der Transformation der Wahrscheinlichkeitsdichte unter der Funktion<br />

s = f(r) = exp(r 2 ) (siehe Text).<br />

d.h. die Wahrscheinlichkeitsdichte bezüglich s nimmt tatsächlich mit abnehmender Steigung<br />

der Kurve zu.<br />

Beispiel: Gegeben sei die Funktion s = f(r) = exp(r 2 ). Für einen Standard-Generator ist<br />

P (r) = 1 auf dem Definitionsbereich r ∈ [0, 1]. Damit erhält man die Wahrscheinlichkeitsdichte<br />

1<br />

˜P (s) =<br />

2r exp(r 2 ) = 1<br />

2s √ ln(s)<br />

auf dem Definitionsbereich (1, e] (siehe Abbildung 4.3).<br />

In der Praxis ist nun häufig die umgekehrte Fragestellung gegeben, d.h. es wird eine<br />

normierte Verteilung ˜P (s) auf einem Intervall [s 1 , s 2 ] vorgegeben <strong>und</strong> man sucht eine<br />

geeignete Funktion f(r), mit der man aus der Standardverteilung eines Zufallszahlengenerators<br />

diese Verteilung erzeugen kann. Dazu integrieren wir Gl. (4.20):<br />

∫ s<br />

s 1<br />

˜P (s ′ ) ds ′ =<br />

∫ r<br />

0<br />

P (r ′ ) dr ′ = r(s) . (4.22)<br />

Sofern die Integration ausführbar ist, erhält man r(s), also die Umkehrfunktion der gesuchten<br />

Funktion s(r). Eine analytische Lösung erhält man also nur, wenn es einem<br />

gelingt, sowohl die Wahrscheinlichkeitsdichte zu integrieren als auch von dem Resultat<br />

die Umkehrfunktion zu bilden.<br />

Beispiel: Um Zufallszahlen mit der Wahrscheinlichkeitsdichte ˜P (s) = 1/s auf dem Intervall<br />

[1, e] zu erzeugen, führt man die Integration<br />

r(s) =<br />

∫ s<br />

aus <strong>und</strong> bildet die Umkehrfunktion s(r) = exp(r).<br />

1<br />

1<br />

s ′ ds′ = ln(s)<br />

Bei Wahrscheinlichkeitsdichten mit mehreren Argumenten kann auf ähnliche Weise verfahren<br />

werden. Ausgangspunkt ist hier die Gleichung<br />

P (r 1 , r 2 , . . . , r n )dr 1 dr 2 · · · dr n = P (s 1 , s 2 , . . . , s n )ds 1 ds 2 · · · ds n (4.23)<br />

Die zu Gl. (4.21) analoge Gleichung lautet<br />

˜P (s) = P (r)<br />

J , (4.24)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4.3 Zufallszahlen mit nichtkonstanter Verteilung 67<br />

wobei J = |∂s i /∂r j | die Jacobi-Determinante ist.<br />

4.3.2 Sampling <strong>und</strong> Histogramme<br />

Eine diskrete Wahrscheinlichkeitsverteilung<br />

bzw. eine kontinuierliche Wahrscheinlichkeitsdichte<br />

kann man auf einem Rechner<br />

durch sogenanntes Sampling approximieren.<br />

Dazu wird die entsprechende Zufallsgröße<br />

durch wiederholtes Ziehen einer<br />

Zufallszahl (<strong>und</strong> ggf. Abbildung durch eine<br />

Funktion) in großer Anzahl erzeugt <strong>und</strong><br />

“gesampelt”, was bedeutet, dass die relativen<br />

Häufigkeiten der zu erwartenden Ergebnisse<br />

bestimmt werden.<br />

Sampling diskreter Zufallsgrößen:<br />

As Beispiel betrachten wir zunächst eine diskrete Zufallsgröße r, die Werte aus einer<br />

diskreten Menge r ∈ Ω mit bestimmten Wahrscheinlichkeiten P (r) erzeugt. Wenn man<br />

mit Hilfe dieser Zufallsgröße N unabhängige zufällige Werte erzugt <strong>und</strong> die Anzahl der<br />

jeweiligen Ergebnisse zählt, dann wird das Resultat r in diesem Datensatz n r mal auftreten,<br />

wobei ∑ r∈Ω n r = N ist. Das Resultat r i tritt in diesem Datensatz also mit der<br />

relativen Häfuigkeit H(r) = n r /N auf. Eine grafische Darstellung von H(r) gegen r als<br />

Balkendiagramm bezeichnet man als Histogramm.<br />

Die relative Häufigkeit H(r) approximiert die Wahrscheinlichkeit P (r), mit der dieses Ereignis<br />

stattfindet, <strong>und</strong> obwohl Wahrscheinlichkeitstheoretiker darüber viele Seiten schreiben<br />

können, ist es intuitiv klar, dass <strong>für</strong> große N diese Abschätzung immer besser wird<br />

<strong>und</strong> schließlich im Limes N → ∞ gegen die tatsächliche Wahrscheinlichkeit konvergiert.<br />

In der realen Welt <strong>und</strong> insbesondere mit einem realen Computer lässt sich dieser Limes<br />

allerdings nicht erreichen, <strong>und</strong> so stellt sich die Frage, wie aussagekräftig ein Histogramm<br />

ist.<br />

Beispiel: Histogramm eines Würfels: Um zu testen, ob ein Würfel gleichverteilt ist, würfeln<br />

wir 6.000.000 mal. Nehmen wir an, dass wir dabei die Ereigniszahlen (event counts) r 1 =<br />

1.003.405, r 2 = 1.001.785, r 3 = 998.443, r 4 = 998.572, r 5 = 997.815, r 6 = 999.980 erhalten.<br />

Obwohl diese Ergebnisse eine Gleichverteilung zu bestätigen scheinen, ist es nicht klar, ob<br />

der Würfel tatsächlich exakt gleichverteilt ist.<br />

Um diese Frage zu beantworten, kann man sich vorstellen, den Sampling-Vorgang mehrfach<br />

durchzuführen. Die jeweils erzeugten Histogramme wird dabei geringfügig verschieden<br />

sein, d.h. die Höhe (bzw. Fläche) der Histogrammbalken fluktuiert. Diese Streuung<br />

reflektiert die zu erwartende Ungenauigkeit des Histogramms, die man als Fehlerbalken<br />

darstellen kann <strong>und</strong> die von Balken zu Balken verschieden ist.<br />

Man kann aber auch direkt die Streuung vorhersagen, wenn man sich vergegenwärtigt,<br />

dass der Zufallsprozess des Samplings einer Binomialverteilung folgt, d.h. die Wahrscheinlichkeit<br />

B dass ein gegebenes Ereignis r mit gegebener Wahrscheinlichkeit P (r) in einem<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


68 Zufallszahlen<br />

Sampling-Vorgang mit N Versuchen genau n r mal auftritt, ist gegeben durch:<br />

( ) N<br />

B[n r |P (r)] = P (r) nr [1 − P (r)] 1−nr . (4.25)<br />

n r<br />

Diese Binomialverteilung hat den Mittelwert ¯n r = NP (r) <strong>und</strong> die Varianz<br />

σ 2 = (∆n r ) 2 = NP (r)[1 − P (r)] . (4.26)<br />

Wenn P (r) hinreichend klein ist, ist also der zu erwartende relative Fehler der Histogrammbalken<br />

durch<br />

∆n r<br />

≈ √ 1<br />

(4.27)<br />

n r nr<br />

gegeben. Das bedeutet, dass die tatsächliche Wert P (r) mit 68.3% Wahrscheinlichkeit innerhalb<br />

dieses Fehlerbalkens liegt – denn dies ist gerade die Fläche der Binomialverteilung<br />

innerhalb ihrer eigenen Standardabweichung.<br />

In Forschung <strong>und</strong> Technik ist es heute üblich, sogenannte Konfindenzniveaus (engl: confidence<br />

levels) zu benutzen, die in Vielfachen der Standardabweichung gemessen <strong>und</strong><br />

deshalb mit 1σ, 2σ, 3σ usw. bezeichnet werden. Die entsprechenden Vertrauenswahrscheinlichkeiten<br />

sind<br />

1σ 2σ 3σ<br />

68.3% 95.4% 99.7%<br />

Misst man z.B. in einem Sampling die relative Häufigkeit H(r) = n r /N <strong>für</strong> das Ergebnis<br />

r, dann liegt die tatsächliche Wahrscheinlichkeit P (r) mit 99.7% Wahrscheinlichkeit<br />

(3σ-confidence) im Intervall [P (r) − 3/ √ nr, P (r) + 3/ √ nr].<br />

Auch Experimente können eine Fehleranalyse dieser Art erfordern. Dies gilt vor allem<br />

<strong>für</strong> Experimente in der Hochenergiephysik, in denen Teilchendetektoren diskrete Events<br />

liefern.<br />

Merke: Die Ungenauigkeit eines Histogrammbalkens ist von der Größenordnung 1/ √ n,<br />

wobei n die Anzahl der Sampling-Events ist, die auf diesen Histogrammbalken entfallen.<br />

4.3.3 Normalverteilte Zufallszahlen<br />

Zufallszahlen s ∈ R mit der Wahrscheinlichkeitsdichte<br />

P (s) = 1 ( )<br />

σ √ 2π exp (s − µ)2<br />

−<br />

2σ 2<br />

(4.28)<br />

heißen normalverteilt. Diese nach ihrem Entdecker benannte Gaußverteilung in Form<br />

einer Glockenkurve spielt eine zentrale Rolle in der statistischen <strong>Physik</strong>.<br />

Die Gaußverteilung ist normiert (d.h. ∫ +∞<br />

−∞<br />

P (s)ds = 1), hat den Mittelwert<br />

〈s〉 =<br />

∫ +∞<br />

−∞<br />

sP (s) ds = µ (4.29)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4.3 Zufallszahlen mit nichtkonstanter Verteilung 69<br />

<strong>und</strong> die Varianz<br />

〈(s − 〈s〉) 2 〉 =<br />

∫ +∞<br />

−∞<br />

(s − µ) 2 P (s) ds = σ 2 . (4.30)<br />

Die beiden Parameter µ <strong>und</strong> σ legen also den Mittelwert <strong>und</strong> die Standardabweichung<br />

der Verteilung fest.<br />

Wir wollen nun versuchen, die Standard-Gaußverteilung mit µ = 0 <strong>und</strong> σ = 1 zu erzeugen<br />

indem wir eine gleichverteilte Zufallszahl r auf geeignete Weise abbilden. Integriert man<br />

die Gaußverteilung auf die oben beschriebene Weise, so erhält man<br />

∫ s<br />

1<br />

r(s) = √ e −s′2 /2 ds ′ = 1 (<br />

1 + erf(s/ √ )<br />

2) , (4.31)<br />

2π 2<br />

−∞<br />

wobei erf(x) die sogenannte Fehlerfunktion (error function) ist. Allerdings gibt es keinen<br />

geschlossenen Ausdruck <strong>für</strong> diese Funktion <strong>und</strong> sie ist deshalb auch nicht in geschlossener<br />

Form invertierbar. Mit anderen Worten: Obwohl die gesucht Abbildung s(r) im<br />

mathematischen Sinne existiert, ist sie nicht mit Hilfe einer Formel ausdrückbar. Das<br />

oben beschriebene Verfahren ist also in diesem Fall nicht anwendbar.<br />

4.3.4 Box-Muller Transformation<br />

Einen Ausweg bietet die sogenannte Box-Muller-Transformation, mit der man zwei Zufallszahlen<br />

auf einmal erzeugt. Beide sind normalverteilt sind, d.h.<br />

P (x) dx =<br />

1<br />

√<br />

2π<br />

e −x2 /2 dx (4.32)<br />

P (y) dy =<br />

1<br />

√<br />

2π<br />

e −y2 /2 dy .<br />

Ausserdem sollen die Zufallszahlen unkorreliert sein, die gemeinsame Wahrscheinlichkeitsdichte<br />

soll also faktorisieren:<br />

P (x, y) dxdy = 1 (<br />

2π exp − x2 + y 2 )<br />

dxdy . (4.33)<br />

2<br />

Ansatzpunkt der Box-Muller-Transformation ist ein Wechsel zu Polarkoordinaten<br />

ρ = x 2 + y 2 , Θ = arctan(y/x) . (4.34)<br />

Dabei beachte man, das ρ nicht wie sonst üblich der Radius, sondern das Quadrat des<br />

Radius ist. Gemäß Gl. (4.24) ist die Wahrscheinlichkeitsdichte in den neuen Koordinaten<br />

durch<br />

˜P (ρ, Θ) = 1 P (x, y) (4.35)<br />

J<br />

gegeben, wobei<br />

J =<br />

∣ ∂(ρ, Θ)<br />

∣∣∣∣ ∂ρ<br />

∣ ∂(x, y) ∣ = ∂x<br />

∂Θ<br />

∂x<br />

∂ρ<br />

∂y<br />

∂Θ<br />

∂y<br />

∣ ∣ ∣∣∣ ∣ = 2x 2y ∣∣∣<br />

−<br />

y x = 2 , (4.36)<br />

x 2 +y 2 x 2 +y 2<br />

die Jacobi-Matrix der Abbildung ist. Die transformierte Wahrscheinlichkeitsdichte lautet<br />

also<br />

˜P (ρ, Θ) = 1 2 P (x, y) = 1 1<br />

2 2π e−ρ/2 . (4.37)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


70 Zufallszahlen<br />

Man beachte, dass dieses Ergebnis nur von ρ aber nicht von Θ abhängt. Die beiden<br />

Zufallszahlen sind also bezüglich Θ auf dem Intervall [0, 2π] mit einer konstanten Wahrscheinlichkeitsdichte<br />

1<br />

2π<br />

gleichverteilt. Bezüglich ρ besteht keine Gleichverteilung, deshalb<br />

benötigt man hier eine Abbildungsfunktion r → ρ, die nach dem zuvor beschriebenen<br />

Verfahren ermittelt wird. Dazu wird das Ergebnis in Gl. (4.37) über Θ <strong>und</strong> ρ integriert<br />

<strong>und</strong> die Umkehrfunktion gebildet:<br />

r(ρ) = 1 2<br />

∫ ρ<br />

0<br />

e −ρ′ /2 dρ ′ = 1 − e −ρ/2 =⇒ ρ(r) = −2 ln(1 − r) (4.38)<br />

Da r eine gleichverteilte Zufallszahl zwischen 0 <strong>und</strong> 1 ist, haben r <strong>und</strong> 1 − r statistisch<br />

identische Eigenschaften, so dass man auch ρ(r) = −2 ln r setzen kann. Mit dieser Abbildung<br />

lassen sich Standard-Zufallszahlen r ∈ [0, 1] leicht in den quadrierten Radius ρ<br />

umrechnen. 4 Anschließend müssen ρ <strong>und</strong> Θ nur noch in die entsprechenden kartesischen<br />

Koordinaten x, y umgerechnet werden. Die beiden normalverteilten Zufallszahlen lassen<br />

sich also beispielsweise mit folgendem Codefragment erzeugen:<br />

...<br />

// ***************** Box-Muller-Transformation ********************<br />

double q,r,theta,rho,x,y;<br />

q=rnd();<br />

// Erzeuge zwei Zufallszahlen<br />

r=rnd(); // q <strong>und</strong> r gleichverteilt in [0,1]<br />

theta = 2*M_PI*q;<br />

// Berechne gleichverteilten Winkel<br />

rho = - 2*log(r); // Benutze Abbildungsfunktion<br />

x = sqrt(rho)*cos(theta); // erste Gauß-verteilte Zufallszahl<br />

y = sqrt(rho)*sin(theta); // zweite Gauß-verteilte Zufallszahl<br />

...<br />

4 Der Logarithmus von 0 ist nicht definiert <strong>und</strong> würde zu einer Fehlermeldung führen. Obwohl die<br />

Wahrscheinlichkeit <strong>für</strong> den Wert r = 0 <strong>für</strong> einen idealen Zufallszahlengenerator gleich Null ist, ist es<br />

nicht ausgeschlossen, dass ein Pseudozufallszahlengenerator wegen der Diskretisierung mit einer sehr<br />

kleinen Wahrscheinlichkeit diesen Wert liefert. Ein verbesserter Code sollte dieses Problem durch eine<br />

zusätzliche Abfrage umgehen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


4.3 Zufallszahlen mit nichtkonstanter Verteilung 71<br />

4.3.5 Verbesserte Box-Muller Transformation<br />

Das obige Codefragment funktioniert einwandfrei, doch ist es relativ langsam, da zwei<br />

trigonometrische Funktionen <strong>und</strong> ein Logarithmus ausgeführt werden müssen. Zur Berechnung<br />

solcher Funktionen stellen moderne Prozessoren zwar integrierte hocheffiziente<br />

Hardware zur Verfügung, doch auch in solchen Chips muss eine Sinusfunktion über eine<br />

Reihendarstellung approximiert werden.<br />

Die verbesserte Box-Muller Transformation benutzt einen Trick, um Winkelfunktionen<br />

zu vermeiden. Um Zufallszahlen auf einer Kreisscheibe zu erzeugen, werden zunächst zwei<br />

gleichverteilte Zufallszahlen x s , y s zwischen −1 <strong>und</strong> 1 generiert. Anschaulich ausgedrückt<br />

wird dadurch ein Quadrat [−1, 1] ⊗ [−1, 1] ⊂ R 2 gleichverteilt mit Zufallszahlen belegt.<br />

Wenn die oben dargestellte Zielscheibe nicht getroffen wird, wenn also x 2 s + y 2 s > 1 ist,<br />

werden die Zufallszahlen einfach nochmal erzeugt:<br />

double xs,ys;<br />

do {<br />

xs = 2*rnd()-1; // Erzeuge zwei Zufallszahlen in [-1,1]<br />

ys = 2*rnd()-1;<br />

} // Wiederhole diesen Vorgang bis das<br />

while (xs*xs+ys*ys > 1); // Ergebnis im Einheitskreis liegt.<br />

Knapp ein Viertel der Versuche werden also erfolglos sein, doch die auf diese Weise<br />

verschwendete Rechenzeit ist immer noch geringer als jene, die <strong>für</strong> die Berechnung der<br />

Winkelfunktionen notwendig wäre. Die Zahlen x s <strong>und</strong> y s sind ausserdem bereits bezüglich<br />

des Winkels gleichförmig verteilt, doch die Radialverteilung hat noch nicht die gewünschte<br />

Form. So ist ρ s = x 2 s +ys 2 mit konstanter Wahrscheinlichkeitsdichte auf dem Intervall [0, 1]<br />

verteilt, erzeugen möchte man jedoch die Verteilung<br />

˜P (ρ) =<br />

∫ 2π<br />

0<br />

dΘ ˜P (ρ, Θ) = 1 2 e−ρ/2 . (4.39)<br />

Die (x s , y s )-Vektoren müssen also noch auf geeignete Weise in ihrer Länge skaliert werden,<br />

um diese Verteilung zu erhalten. Dazu wird wiederum ˜P (ρ) integriert <strong>und</strong> die Umkehrfunktion<br />

gebildet:<br />

ρ s = 1 2<br />

∫ ρ<br />

0<br />

e −ρ′ /2 dρ ′ = 1 − e −ρ/2 =⇒ ρ = −2 ln(1 − ρ s ) (4.40)<br />

wobei wieder 1 − ρ s durch ρ s ersetzt werden darf, da ρ s gleichverteilt auf [0, 1] ist. Wegen<br />

x/x s = y/y s = √ ρ/ρ s gelangt man zu<br />

bzw. als Codefragment:<br />

x = x s<br />

√<br />

−2 ln(ρs )/ρ s , y = y s<br />

√<br />

−2 ln(ρs )/ρ s . (4.41)<br />

double rhos = xs*xs + ys*ys;<br />

double b = sqrt(-2*log(rhos)/rhos);<br />

double x = xs*b;<br />

double y = ys*b;<br />

Die verbesserte Box-Muller-Transformation erfordert also immer noch die Auswertung<br />

eines Logarithmus, vermeidet jedoch die beiden Winkelfunktionen <strong>und</strong> ist daher etwas<br />

schneller.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


72 Zufallszahlen<br />

4.3.6 Umgang mit Wahrscheinlichkeitsverteilungen in Mathematica R○<br />

Für kontinuierliche Wahrscheinlichkeitsdichten sieht Mathematica R○ einen eigenen Datentyp<br />

vor. Zunächst muss dazu der Befehl<br />


4.4 Aufgaben 73<br />

Erzeugen Sie die Summe<br />

s =<br />

N∑<br />

i=1<br />

von N reellen Zufallszahlen r i , die gleichförmig über das Intervall r i ∈ [0, 1] verteilt sind.<br />

Überzeugen Sie sich, dass <strong>für</strong> große N der Mittelwert 〈s〉 <strong>und</strong> die Standardabweichung σ<br />

durch<br />

〈s〉 = N/2 , σ 2 = 〈s 2 〉 − 〈s〉 2 = N/12<br />

gegeben sind, wobei 〈. . .〉 die Mittelung über viele statistisch unabhängig erzeugte Summen<br />

s bezeichnet.<br />

Führen Sie dann die Summation <strong>für</strong> fest gewähltes N = 10, 100, 1000 mit unabhängigen<br />

Zufallszahlen viele Male durch <strong>und</strong> plotten Sie die gemittelte Häufigkeitsverteilung der<br />

Summen s in einem Histrogramm. Vergleichen Sie das Resultat mit der Gaußverteilung<br />

P (s) = 1 [ ]<br />

−(s − 〈s〉)<br />

2<br />

σ √ 2π exp 2σ 2 .<br />

r i<br />

Aufgabe 4.9<br />

(Umrechnung von Wahrscheinlichkeitsdichten)<br />

Gegeben sei die Wahrscheinlichkeitsdichte<br />

P (x, y) =<br />

{ α−1<br />

2π (x2 + y 2 ) −(α+1)/2 falls x 2 + y 2 > 1<br />

0 andernfalls<br />

. (4.42)<br />

(a) Schreiben Sie ein Programm, das Paare von Zufallszahlen (x, y) generiert, die gemäß<br />

der Wahrscheinlichkeitsdichte P (x, y) verteilt sind, wobei α > 1 ein reeller<br />

Parameter ist.<br />

Hinweis: Die Verfahrensweise ist ähnlich wie bei der Box-Muller-Transformation.<br />

(b) Erstellen Sie <strong>für</strong> α = 2 ein Histogramm <strong>für</strong> N = 10 7 solche Paare im Wertebereich<br />

(x, y) ∈ [−5, 5] ⊗ [−5, 5] mit der Auflösung ∆x = ∆y = 1/100. Normieren Sie das<br />

Histogramm auf geeignete Weise, so dass es die Wahrscheinlichkeitsdichte P (x, y)<br />

approximiert.<br />

Hinweis: In C++ erfordert dies eine Laufzeit von ca. 10 Sek<strong>und</strong>en. Mathematica ist<br />

erheblich langsamer, – hier müssen die Parameter evt. angepasst werden.<br />

(c) Plotten Sie einen Schnitt bei y = 0 durch das Histogramm <strong>und</strong> überlagern Sie die<br />

Kurve der vorgegebenen Verteilung P (x, 0) <strong>für</strong> α = 2.<br />

Aufgabe 4.10<br />

(Populationsdynamik)<br />

Untersuchen Sie eine Kolonie von Bakterien, die innerhalb einer Sek<strong>und</strong>e mit jeweils<br />

gleicher Wahrscheinlichkeit entweder sterben oder sich in jeweils zwei Bakterien teilen.<br />

Schreiben Sie ein Programm, das diesen Vorgang simuliert, wobei es mit einem einzelnen<br />

Bakterium startet. Wie groß ist die mittlere Bakterienanzahl <strong>und</strong> die Überlebenswahrscheinlichkeit<br />

der Kolonie nach n Zeitschritten? Tragen Sie das Ergebnis grafisch bis<br />

n = 100 auf.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5 Zufallsbewegung<br />

Der einfachste stochastische Prozess ist die zufällige Bewegung (random walk) eines Teilchens.<br />

Zufallsbewegungen sind in der Natur auf vielfältige Weise realisiert. So bewegt<br />

sich beispielsweise ein individuelles Molekül in einem Gas auf einer irregulären Trajektorie,<br />

die sich wegen der komplexen Abfolge von Wechselwirkungen mit anderen Molekülen<br />

aus (scheinbar) zufälligen Einzelbewegungen zusammensetzt. Der random walk ist also<br />

<strong>für</strong> unser Verständnis von Diffusionsprozessen <strong>und</strong> später auch <strong>für</strong> diffusionsgetriebener<br />

chemische Prozesse von gr<strong>und</strong>legender Bedeutung.<br />

5.1 Universalität der Gaußverteilung<br />

Da sich die aktuelle Koordinate eines random walkers aus der Summe aller Einzelbewegungen<br />

ergibt <strong>und</strong> diese Einzelbewegungen als unkorreliert angenommen werden, wollen<br />

wir im Folgenden zunächst die Addition von Zufallsgrößen behandeln. Daran anschließend<br />

wird dann mit Hilfe des zentralen Grenzwertsatzes gezeigt werden, dass die Summe<br />

vieler Zufallsgrößen unter sehr allgemeinen Voraussetzungen immer normalverteilt ist,<br />

d.h. die Form einer Gauß-Glocke besitzt.<br />

5.1.1 Addition von Zufallsgrößen<br />

Seien r 1 , r 2 zwei gleichverteilte unkorrelierte Zufallszahlen<br />

zwischen 0 <strong>und</strong> 1. Dann ist die Summe S =<br />

r 1 + r 2 dieser beiden Zufallszahlen wiederum eine<br />

Zufallszahl zwischen 0 <strong>und</strong> 2. Allerdings ist S nicht<br />

mehr gleichverteilt, sondern besitzt eine dreiecksförmige<br />

Wahrscheinlichkeitsdichte.<br />

P(s)<br />

1<br />

0 1<br />

2<br />

s<br />

Wie berechnet man eine solche Verteilung auf systematische Weise? Als Beispiel betrachten<br />

wir zunächst zwei unkorrelierte Zufallsgrößen X 1 , X 2 mit Wahrscheinlichkeitsdichten<br />

P 1 (X 1 ), P 2 (X 2 ) <strong>und</strong> bilden deren Summe S = X 1 + X 2 . Wie man sich überzeugen kann,<br />

ist die Wahrscheinlichkeitsdichte der Zufallsgröße S durch das Faltungsintegral<br />

P S (S) = [P 1 ∗ P 2 ] (S)<br />

=<br />

∫ +∞<br />

−∞<br />

dX 1 P 1 (X 1 )P 2 (S − X 1 ) (5.1)<br />

gegeben, womit sich die dreieckige Form der Verteilung P (S) im obigen Beispiel mit<br />

geeigneten Fallunterscheidungen leicht verifizieren lässt.<br />

Auf integrierbaren Funktionen sind Faltungsprodukte assoziativ, d.h.<br />

f ∗ (g ∗ h) = (f ∗ g) ∗ h , (5.2)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


76 Zufallsbewegung<br />

so dass man Faltungsprodukte sehr einfach hintereinanderschalten kann. Betrachtet man<br />

beispielsweise n unkorrelierte Zufallsgrößen X 1 , . . . , X n mit Wahrscheinlichkeitsdichten<br />

P i (X i ) <strong>und</strong> bildet deren Summe S = ∑ n<br />

i=1 X i, so erhält man durch Hintereinanderausführung<br />

der Faltungsprodukte den Ausdruck<br />

P S (S) = [P 1 ∗ P 2 ∗ . . . ∗ P n ] (S)<br />

(5.3)<br />

∫ ∫<br />

n−1<br />

∑<br />

= . . . dX 1 dX 2 . . . dX n−1 P 1 (X 1 )P 2 (X 2 ) · · · P n−1 (X n−1 )P n (S − X i ) .<br />

Eine mehrfache Faltung ist also das Mehrfachintegral über ein Produkt von Funktionen<br />

derart, dass die Summe der Argumente auf der rechten Seite dem Argument auf der<br />

linken Seite entspricht.<br />

Beweis: Zum Beweis von Gl. (5.3) wollen wir das Problem auf die folgende noch allgemeinere<br />

Weise formulieren: Seien X 1, X 2, . . . , X n Zufallsgrößen mit der Wahrscheinlichkeitsdichte<br />

P (X 1, X 2, . . . , X n), d.h. die Zufallsgrößen dürfen sogar korreliert sein. Ferner sei<br />

i=1<br />

S = F (X 1, X 2, . . . , X n) (5.4)<br />

eine beliebige Funktion dieser Größen. Offenbar tragen zur Wahrscheinlichkeitsdichte P (S)<br />

an der Stelle S alle jene Konfigurationen der Zufallsgrößen X 1, . . . , X n bei, welche durch<br />

diese Funktion auf S abgebildet werden, d.h.<br />

∫ ∫ ∫<br />

(<br />

)<br />

P S(S) = dX 1 dX 2 . . . dX n P (X 1, X 2, . . . , X n) δ S − F (X 1, X 2, . . . , X n) , (5.5)<br />

wobei δ die Dirac’sche Deltafunktion ist. Auf der rechten Seite steht also die Zustandssumme<br />

gewichtet mit der Wahrscheinlichkeitsdichte der Zustände unter der Nebenbedingung,<br />

dass die Gl. (5.4) erfüllt ist.<br />

Dieses Integral lässt sich auswerten sofern Gl. (5.4) nach einer der Zufallsgrößen X i explizit<br />

auflösbar ist. Ohne Beschränkung der Allgemeinheit wollen wir annehmen, dass die<br />

Gleichung nach X n eindeutig auflösbar sei, also in der Form<br />

X n = G(X 1, X 2, . . . , X n−1, S) (5.6)<br />

geschrieben werden kann. Als notwendige Bedingung da<strong>für</strong> muss die partielle Ableitung<br />

J(X 1, X 2, . . . , X n) =<br />

∂F (X1, X2, . . . , Xn)<br />

∂X n<br />

(5.7)<br />

von Null verschieden sein. Wegen δ(ax) = |a| −1 δ(x) ist also<br />

(<br />

)<br />

∣<br />

δ S − F (X 1, X 2, . . . , X n) = ∣J(X 1, X 2, . . . , X n) ∣ −1 δ [ X n − G(X 1, X 2, . . . , X n−1, S) ]<br />

so dass man nun die Integration über X n ausführen kann:<br />

∫ ∫ ∫ ∣ )∣ ∣∣J ∣∣<br />

−1<br />

P S(S) = dX 1 dX 2 . . . dX n−1<br />

(X 1, . . . , X n−1, G(X 1, X 2, . . . , X n−1, S)<br />

(<br />

)<br />

× P X 1, . . . , X n−1, G(X 1, X 2, . . . , X n−1, S) (5.8)<br />

Wir testen diesen sehr allgemeinen Ausdruck anhand zweier Beispiele:<br />

• Skalierung: Für n = 1 <strong>und</strong> S = F (X) = aX ist J = a <strong>und</strong> G(S) = S/a. Man erhält<br />

in diesem Fall den bekannten Ausdruck P S(S) = |a| −1 P S(S/a) <strong>für</strong> die Umskalierung<br />

einer Wahrscheinlichkeitsdichte.<br />

• Addition zweier Zufallsgrößen: Mit n = 2 <strong>und</strong> S = F (X 1, X 2) = X 1 + X 2<br />

erhält man J = 1 <strong>und</strong> G(X 1, S) = S − X 1, womit man auf das zuvor betrachtete<br />

Faltungsintegral geführt wird:<br />

∫<br />

P S(S) = dX 1 P (X 1, S − X 1) . (5.9)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.1 Universalität der Gaußverteilung 77<br />

5.1.2 Faltungssatz<br />

Die bei der Addition von Zufallsgrößen auftretenden Faltungsintegrale <strong>für</strong> die Wahrscheinlichkeitsdichten<br />

können mit Hilfe des Faltungssatzes vereinfacht werden. Sei dazu<br />

̂P i (k) = √ 1 ∫ +∞<br />

dX i e ikX i<br />

P i (X i ) (5.10)<br />

2π<br />

−∞<br />

die Fouriertransformierte von P i (X i ), die in der Wahrscheinlichkeitstheorie aus als charakteristische<br />

Funktion bezeichnet wird. Nach dem Faltungssatz ist dann die Fouriertransformierte<br />

des Faltungsprodukts P S (S) = [P 1 ∗P 2 ] (S) bis auf einen Faktor gleich dem<br />

gewöhnlichen Produkt der Fouriertransformierten:<br />

̂P S (k) = √ 2π ̂P 1 (k)̂P 2 (k) (5.11)<br />

Durch Fouriertransformation lässt sich also ein Faltungsprodukt auf gewöhnliche Multiplikation<br />

zurückführen.<br />

Beweis: Die linke Seite von Gl. (5.11) ist gegeben durch<br />

̂P S(k) =<br />

=<br />

∫<br />

1 +∞<br />

√ dS e ikS P S(S)<br />

2π<br />

−∞<br />

∫<br />

1 +∞<br />

∫ +∞<br />

√ dS e ikS dX 1 P 1(X 1) P 2(S − X 1) .<br />

2π<br />

−∞<br />

−∞<br />

Vertauscht man nun die Integrale <strong>und</strong> substituiert S → S + X 1, so erhält man<br />

̂P S(k) =<br />

∫<br />

1 +∞<br />

∫ +∞<br />

√ dX 1 dS e ik(S+X1) P 1(X 1) P 2(S)<br />

2π<br />

−∞<br />

−∞<br />

= √ ( ∫ 1 +∞<br />

) ( ∫<br />

2π √ dX e ikX 1 +∞<br />

P 1(X) √<br />

2π 2π<br />

−∞<br />

= √ 2π ̂P 1(k)̂P 2(k) .<br />

−∞<br />

)<br />

dX e ikX P 2(X)<br />

Der Faltungssatz ist auch auf die Faltung von mehr als zwei Funktionen wie in Gl. (5.3)<br />

anwendbar <strong>und</strong> lautet:<br />

̂<br />

]<br />

̂P S (k) =<br />

[P 1 ∗ P 2 ∗ . . . ∗ P n = (k) (2π)(n−1)/2 ̂P1 (k)̂P 2 (k) · . . . · ̂P n (k) (5.12)<br />

Bei identische Verteilungen P 1 = P 2 = . . . = P läuft dies auf eine Potenzierung der<br />

Fouriertransformierten hinaus:<br />

̂P S (k) = (2π) (n−1)/2 ( ̂P (k)) n . (5.13)<br />

5.1.3 Transformierte Wahrscheinlichkeitsdichte eines Standardgenerators<br />

Um die Anwendung des Faltungssatzes zu demonstrieren, bilden wir zunächst die Fouriertransformierte<br />

der gleichverteilten Wahrscheinlichkeitsdichte<br />

P (r) =<br />

{ 1 falls 0 ≤ r ≤ 1<br />

0 andernfalls<br />

(5.14)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


78 Zufallsbewegung<br />

^<br />

Re(P(k))<br />

0.4<br />

0.3<br />

0.2<br />

^<br />

|P(k)|<br />

0.1<br />

-10 -5 5 10<br />

-0.1<br />

k<br />

^<br />

Im(P(k))<br />

-0.2<br />

-0.3<br />

Abbildung 5.1: Betrag sowie Real- <strong>und</strong> Imaginärteil der Fouriertransformierten der Verteilungsfunktion<br />

eines Standard-Zufallszahlengenerators.<br />

eines Standard-Zufallszahlengenerators:<br />

̂P (k) = √ 1 ∫ +∞<br />

e ikr P (r) dr = 1 ∫ 1<br />

√<br />

2π 2π<br />

−∞<br />

0<br />

e ikr dr = i(1 − eik )<br />

k √ 2π<br />

(5.15)<br />

Die Singularität bei k = 0 ist hebbar, so dass man eine stetige Funktion erhält, die in<br />

Abb. 5.1 abgebildet ist. Wie man sehen kann, befindet sich das betragsmäßige Maximum<br />

der Funktion in der Mitte bei k = 0.<br />

Beispiel: Die folgenden Mathematica R○ -Befehle führen die Faltung von n Standardzufallszahlen<br />

mit Hilfe des Faltungssatzes aus:<br />

1. Berechne Fouriertransformierte der Verteilung einer Standard-Zufallszahl<br />

FT =<br />

∫ 10 e ikr dr<br />

√ 2π<br />

− i(−1+eik )<br />

k √ 2π<br />

2. Bilde n -te Potenz des Ergebnisses <strong>und</strong> transformiere zurück:<br />

FTP[n_]:=(2π) n−1<br />

2 FT n ; P [n_]:=InverseFourierTransform[FTP[n], k, r]<br />

3. Plotte das Ergebnis <strong>für</strong> n =2,3,4,5:<br />

Plot[{P [2], P [3], P [4], P [5]}, {r, −1, 5},PlotRange → {0, 1}];<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

-1 1 2 3 4 5<br />

Wie man an diesem Beispiel sehen kann, ist schon die Summe weniger Zufallszahlen an-<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.1 Universalität der Gaußverteilung 79<br />

^<br />

|P(k)| N<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

-15 -10 -5 5 10 15<br />

k<br />

-15 -10 -5 5 10 15<br />

-2<br />

-4<br />

-6<br />

-8<br />

-10<br />

N ln |P(k)| ^<br />

Abbildung 5.2: Betrag von (2π) (N−1)/2 |P S(k)| N <strong>für</strong> N = 2, 4, 8, 16, 32 in linearer <strong>und</strong> logarithmischer<br />

Darstellung. Durch die Potenzierung überlebt im Limes großer N nur der Bereich in<br />

der Nähe des Maximums der Funktion.<br />

k<br />

nähernd normalverteilt. Wenn es auf quantitative Genauigkeit nicht ankommt, wird in der<br />

Praxis die Summenbildung häufig als Trick benutzt, um quasi-normalverteilte Zufallszahlen<br />

zu erzeugen. Für quantitive Probleme in der <strong>Physik</strong> ist die Box-Müller-Transformation<br />

allerdings besser geeignet.<br />

Mit der fouriertransformierten Wahrscheinlichkeitsdichte des Standardzufallszahlengenerators<br />

<strong>und</strong> dem Faltungssatz sind wir nun in der Lage, die Verteilungsfunktion <strong>für</strong> eine<br />

Summe von N Zufallszahlen auszurechnen <strong>und</strong> den Limes N → ∞ zu untersuchen.<br />

5.1.4 Zentraler Grenzwertsatz<br />

Der zentrale Grenzwertsatz besagt, dass bei Addition sehr vieler Zufallsgrößen die Wahrscheinlichkeitsdichte<br />

der Summe in der Regel gegen eine Gaußverteilung konvergiert.<br />

Ausgedrückt in akustischen Metaphern heißt dies, dass sich das Konzert einer großen<br />

Anzahl unkorrelierter Rauschquellen stets gleich anhört da man stets ein normalverteiltes<br />

sogenanntes weisses Rauschen erhält.<br />

Die Voraussetzungen <strong>für</strong> zentralen Grenzwertsatz sind sehr allgemein. So spielt es beispielsweise<br />

keine Rolle, wie die jeweiligen Verteilungen der Zufallsgrößen konkret aussehen,<br />

sofern diese im Unendlichen nur schnell genug abfallen. Der zentrale Grenzwertsatz<br />

ist damit paradigmatisch <strong>für</strong> Universalität in der statistischen <strong>Physik</strong>. Der Begriff der<br />

Universalität umschreibt die Tatsache, dass mikroskopisch völlig unterschiedliche Systeme<br />

das gleiche makroskopische Verhalten aufweisen können.<br />

Der Einfachheit halber wollen wir annehmen, dass N gleichartig verteilte Zufallsgrößen<br />

aufaddiert werden. Gl. (5.12) wird dann zu<br />

̂<br />

P (N)<br />

S<br />

(k) = (2π) (N−1)/2 [ ̂P (k)] N (5.16)<br />

Betrachtet man nun große N, so wird sich der betragsmäßig maximale Bereich der Funktion<br />

̂P (k) zunehmend durchsetzen. Dieser Sachverhalt ist in Abb. 5.2 dargestellt. Der<br />

linke Graph zeigt verschiedene Potenzen von | ̂P (k)|, wobei die Kurven bei k = 0 auf den<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


80 Zufallsbewegung<br />

gleichen Wert normiert sind. Wie man sehen kann, setzt sich <strong>für</strong> große N das betragsmäßige<br />

Maximum der Kurve durch <strong>und</strong> bildet eine zunehmend δ-förmige Verteilung,<br />

während die detailreiche Struktur der Kurve <strong>für</strong> k ≠ 0 mit zunehmendem N immer<br />

mehr unterdrückt wird. Diese Details sind es aber, welche die rechteckige Struktur der<br />

ursprünglichen Verteilung codieren.<br />

Da die Kurve eine bei k = 0 konzentrierte Form annimmt, ist es nützlich, den Logarithmus<br />

von [ ̂P (k)] N zu betrachten, dessen Betrag im rechten Graphen dargestellt ist. In dieser<br />

Darstellung bewirkt die Potenzbildung eine Streckung der Kurven um den Faktor N in<br />

senkrechter Richtung. Wie man sehen kann, erhält man <strong>für</strong> große N in der Nähe von<br />

k = 0 annähernd eine nach unten geöffnete Parabel.<br />

Die Beweisidee <strong>für</strong> den zentralen Grenzwertsatz beruht darauf, ln[̂P S (k)] durch eine Parabel<br />

näherungsweise zu beschreiben, also eine Taylorentwicklung zweiter Ordnung<br />

] [<br />

ln[̂PS (k) = ln (2π) (N−1)/2 [ ̂P (k)] N] = a + bk − ck 2 + O(k 3 ) (5.17)<br />

durchzuführen, wobei a, b <strong>und</strong> c Koeffizienten sind, die von N abhängen. In dieser Näherung<br />

ist<br />

̂P S (k) ≈ exp(a) exp(bk − ck 2 ) (5.18)<br />

nämlich eine Gaußverteilung, deren Fouriertransformierte wiederum eine Gaußverteilung<br />

ist. Der lineare Anteil in k kann dabei durch quadratische Ergänzung absorbiert werden.<br />

Da man von den höheren Ordnungen der Taylorentwicklung zeigen kann, dass deren<br />

Beiträge <strong>für</strong> N → ∞ gegen Null skalieren, bleibt in diesem Limes tatsächlich die Normalverteilung<br />

als Grenzwert übrig.<br />

Beispiel: Bei der Addition von N Standard-Zufallszahlen S = ∑ N<br />

i=1<br />

ri mit ri ∈ [0, 1] ist<br />

ln<br />

⇒<br />

(N) ̂P<br />

S<br />

(k) = N − 1 ln 2π + N ln<br />

2<br />

̂P (k)<br />

≃ − 1 2 ln 2π − ikN 2 − k2 N<br />

24 + O(k3 )<br />

̂P<br />

(N)<br />

S<br />

(k) ≃<br />

−∞<br />

1<br />

(<br />

√ exp − ikN<br />

2π 2<br />

− k2 N<br />

)<br />

24<br />

Nach Ausführung der inversen Fouriertransformation erhält man in der Tat die Normalverteilung<br />

P (N)<br />

S<br />

= √ 1 ∫ +∞<br />

√ (<br />

(N)<br />

6<br />

dk ̂P<br />

S<br />

(k) =<br />

2π Nπ exp − 6 )<br />

N (r − N/2)2 (5.19)<br />

Wie man leicht zeigen kann, ist diese Verteilung korrekt normiert. Mittelwert <strong>und</strong> Varianz<br />

sind gegeben durch<br />

〈r〉 = N/2 σ 2 = 〈r 2 〉 − 〈r〉 2 = N/12 (5.20)<br />

5.2 Die eindimensionale Zufallsbewegung<br />

Um die gr<strong>und</strong>legenden Begriffe stochastischer Vielteilchensysteme an einem einfachen<br />

Beispiel einzuführen, betrachten wir zunächst eine Zufallsbewegung (random walk) eines<br />

einzigen Teilchens in einer Dimension. Wir wollen annehmen, dass sich das Teilchen auf<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.2 Die eindimensionale Zufallsbewegung 81<br />

Abbildung 5.3: Eindimensionale Zufallsbewegung (random walk). Ein Teilchen springt in jedem Zeitschritt<br />

mit gleicher Wahrscheinlichkeit nach rechts bzw. nach links.<br />

einer Kette mit diskreten Plätzen (sites) befindet (siehe Abb. 5.3). Der Zustand, also<br />

die Konfiguration des Systems, ist vollständig durch die Position x(t) ∈ Z des Teilchens<br />

charakterisiert. Die Dynamik des Systems sei nun dadurch definiert, dass in jedem Zeitschritt<br />

das Teilchen mit gleicher Wahrscheinlichkeit nach rechts oder nach links springt.<br />

Die Zeit t ∈ N ist also ganzzahlig <strong>und</strong> gleich der Anzahl der ausgeführten Sprünge.<br />

Die Dynamik lässt sich durch eine stochastische Bewegungsgleichung<br />

x(t + 1) = x(t) + R(t) (5.21)<br />

beschreiben, wobei R(t) eine bimodal verteilte Zufallsgröße ist, d.h. sie nimmt nur zwei<br />

mögliche Werte an. R(t) hat folgende Eigenschaften:<br />

- Wertebereich: R(t) = ±1<br />

- Mittelwert: 〈R(t)〉 = 0<br />

- Korrelationsfreiheit: 〈R(t)R(t ′ )〉 = δ t,t ′<br />

Diese Dynamik lässt sich beispielsweise in C++ durch die Befehlszeilen<br />

if (rnd()


82 Zufallsbewegung<br />

<strong>und</strong> hat die Struktur eines normierten Pascal-Dreiecks. Die Fallunterscheidung ist erforderlich,<br />

weil sich das Teilchen sich bei dem betrachteten Prozess zu geraden (ungeraden)<br />

Zeitschritten nur auf geraden (ungeraden) Plätzen aufhalten kann. Für große Zeiten approximiert<br />

die Binomialverteilung wie erwartet die Gaußsche Normalverteilung.<br />

5.2.2 Kontinuumlimes<br />

Zum Verständnis der makroskopischen Eigenschaften eines stochastischen Prozesses ist<br />

es oft nützlich, einen geeigneten Kontinuumlimes zu betrachten, in dem die diskrete Gitterstruktur<br />

<strong>und</strong> die diskreten Zeitschritte nicht mehr sichtbar sind. Dabei geht man zu<br />

kontinuierlichen Parametern über (hier also zu x, t ∈ R) <strong>und</strong> beschreibt die Wechselwirkung<br />

mit benachbarten Plätzen durch geeignete Differentialoperatoren.<br />

Im Fall der eindimensionalen Zufallsbewegung subtrahieren wir zunächst P t (x) auf beiden<br />

Seiten der Mastergleichung (5.23):<br />

P t+1 (x) − P t (x) = 1 (<br />

)<br />

P<br />

} {{ }<br />

t (x − 1) − 2P t (x) + P t (x + 1) (5.25)<br />

2 } {{ }<br />

≈ ∂/∂ t<br />

≈ ∂ 2 /∂x<br />

2<br />

Ohne hier auf die mathematisch korrekte Durchführung eines Kontinuumlimes eingehen<br />

zu wollen, sieht man sehr leicht, dass sich auf der linken Seite eine diskretisierte erste<br />

Ableitung nach der Zeit befindet, während auf der rechten Seite eine diskretisierte zweite<br />

Ableitung zu sehen ist. Im Kontinuumlimes erhält man also die Differentialgleichung<br />

∂<br />

∂t P t(x) = D ∇ 2 P t (x) , (5.26)<br />

die als Diffusionsgleichung bzw. Wärmeleitungsgleichung bekannt ist. Dabei ist D = 1/2<br />

die sogenannte Diffusionskonstante, welche die Geschwindigkeit des Diffusionsprozesses<br />

bestimmt. Würden x <strong>und</strong> t physikalische Einheiten tragen, hätte D die gleiche Dimension<br />

wie x 2 /t. Man beachte ausserdem, dass P t (x) nun eine kontinuierliche Wahrscheinlichkeitsdichte<br />

ist. Eine partielle Differentialgleichung wie die obige Diffusionsgleichung, welche<br />

die Zeitentwicklung einer Wahrscheinlichkeitsdichte beschreibt, wird in allgemeineren<br />

Zusammenhängen auch als Fokker-Planck-Gleichung bezeichnet.<br />

Bemerkung: Aus der Quantentheorie kennen Sie die zeitabhängige Schrödingergleichung<br />

eines freien Teilchens<br />

i∂ tψ(⃗x, t) = ˆp2<br />

2<br />

ψ(⃗x, t) = −<br />

2m 2m ∇2 ψ(⃗x, t) . (5.27)<br />

Diese Gleichung ist formal äquivalent zur Diffusionsgleichung bis auf den Faktor i auf der<br />

linken Seite, wobei /2m die Rolle der Diffusionskonstante spielt. Diese Analogie ist sehr<br />

gr<strong>und</strong>legend. In vielen Fällen lassen sich nämlich Probleme aus der statistischen <strong>Physik</strong><br />

mit reellen Wahrscheinlichkeiten auf Probleme der Quantentheorie mit komplexen Phasen<br />

durch analytische Fortsetzung abbilden <strong>und</strong> umgekehrt. Überspitzt könnte man sagen, dass<br />

sich Quantentheorie <strong>und</strong> statistische <strong>Physik</strong> in formaler Hinsicht nur durch ein i voneinander<br />

unterscheiden.<br />

Die Lösung der Diffusionsgleichung (∂ t − D∇ 2 )P t (x) = 0 <strong>für</strong> ein am Ursprung x = 0<br />

startendes Teilchen ist wie erwartet eine Normalverteilung:<br />

P t (x) =<br />

1<br />

√<br />

4πDt<br />

e −x2 /(4Dt)<br />

(5.28)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.2 Die eindimensionale Zufallsbewegung 83<br />

Die Breite (Streuung σ) dieser Gaußglocke wächst wie √ t. Wegen der Normierungsbedingung<br />

wird ausserdem ein zeitabhängiger Vorfaktor erforderlich.<br />

5.2.3 Skalierungseigenschaften der Diffusionsgleichung<br />

Die Diffusionsgleichung (∂ t − D∇ 2 )P t (x) = 0 ist relativ einfach zu lösen, doch nicht<br />

immer wird man im Kontinuumlimes auf eine solch einfache Gleichung geführt. Oftmals<br />

erhält man sogar partielle Differentialgleichungen, <strong>für</strong> die es keine geschlossene Lösung<br />

gibt.<br />

In den meisten Fällen kann man dennoch wesentliche Informationen dadurch gewinnen,<br />

dass man die Skalierungseigenschaften der Differentialgleichung untersucht. Man stellt<br />

sich dabei die Frage, unter welchen Bedingungen die Differentialgleichung unter Reskalierung<br />

x → x ′ = Λx (5.29)<br />

t → t ′ = Λ z t (5.30)<br />

P t (x) → P ′ t ′(x′ ) = Λ y P t (x) (5.31)<br />

forminvariant ist, wobei Λ > 0 der Reskalierungsparameter ist, also gewissermaßen ein<br />

Zoomfaktor, mit dem die Ortskoordinate gedehnt oder gestaucht werden kann. Der Zeitparameter<br />

<strong>und</strong> die Wahrscheinlichkeitsdichte werden ebenfalls reskaliert, wobei y <strong>und</strong> z<br />

noch zu bestimmende Exponenten sind. Forminvarianz bedeutet, dass die DGL in den<br />

gestrichenen Größen die gleiche Form wie in den ungestrichenen Größen besitzt, d.h.<br />

Daraus ergibt sich<br />

(∂ t ′ − D∂ 2 x ′)P ′ t ′(x′ ) = 0 . (5.32)<br />

(Λ −z ∂ t − DΛ −2 ∂ 2 x)Λ y P t (x) = 0 . (5.33)<br />

Offenbar ist die Gleichung nur erfüllbar sofern z = 2 ist. Ist in diesem Fall P t (x) eine<br />

Lösung der DGL, dann ist auch Λ −y P Λ 2 t(Λx) eine Lösung, es gilt also<br />

P t (x) = Λ −y P Λ 2 t(Λx) <strong>für</strong> alle Λ > 0 . (5.34)<br />

Weil der Reskalierungsparameter Λ frei wählbar ist, darf man eine spezielle Wahl vornehmen.<br />

Mit Λ = t −1/2 ergibt sich<br />

P t (x) = t y/2 f(x/ √ t) , (5.35)<br />

wobei f(ξ) = P 1 (ξ) eine sogenannte Skalenfunktion ist. Diese Wahrscheinlichkeitsdichte<br />

muss <strong>für</strong> alle Zeiten normiert sein, d.h.<br />

∫<br />

∫ +∞<br />

1 = dxP t (x) = dx t y/2 f(x/ √ t) = √ ∫ +∞<br />

t t y/2 du f(u) ∀t (5.36)<br />

−∞<br />

woraus folgt, dass y = −1 ist. Skaleninvarianz impliziert also, dass die gesuchte Lösung<br />

die Skalenform<br />

P t (x) = f(x/√ t)<br />

√<br />

t<br />

(5.37)<br />

erfüllt. Ein Vergleich mit der Lösung (5.28) bestätigt, dass dies in der Tat der Fall ist.<br />

Die Hypothese der Skaleninvarianz führt also eine Funktion mit zwei Parametern t <strong>und</strong><br />

x auf ein Potenzgesetz multipliziert mit einer Funktion von nur einem Parameter x/ √ t<br />

zurück.<br />

−∞<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


84 Zufallsbewegung<br />

5.3 Diffusion in höheren Dimensionen<br />

5.3.1 Entkopplung orthogonaler Freiheitsgrade<br />

Eine Zufallsbewegung in höherdimensionalen Räumen lässt sich in kartesischen Koordinaten<br />

additiv aus eindimensionalen Zufallsbewegungen zusammensetzen. In zwei Dimensionen<br />

könnte z.B. dies durch die Befehlssequenz<br />

if (rnd()


5.3 Diffusion in höheren Dimensionen 85<br />

5.3.2 Rückkehrwahrscheinlichkeit<br />

Wenn Sie morgens Ihre Kaffeemaschine<br />

anschalten, – wie lange<br />

wird es dauern, bis Sie den<br />

Kaffeeduft zum ersten Mal wahrnehmen<br />

können? Oder: Mit welcher<br />

Wahrscheinlichkeit findet ein<br />

Betrunkener wieder nach Hause?<br />

Fragestellungen dieser Art werden<br />

in der statistischen <strong>Physik</strong><br />

als first-passage oder first-return-<br />

Probleme bezeichnet.<br />

In diesem Buch [13] finden Sie alles zu Rückkehrproblemen.<br />

Wir wollen hier die Frage stellen, mit welcher Wahrscheinlichkeit ein am Ursprung startendes<br />

Teilchen, das eine Zufallsbewegung in einer Dimension ausführt, wieder zum Ursprung<br />

zurückkehrt. Mit dem in Abschnitt 5.2 benutzten Modell wird das Teilchen im<br />

ersten Zeitschritt nach links bzw. rechts springen <strong>und</strong> kehrt dann im zweiten Zeitschritt<br />

mit Wahrscheinlichkeit 1/2 zum Ursprung zurück. Bei zunehmender Zeit nimmt die Rückkehrwahrscheinlichkeit<br />

R(t) immer weiter ab. Mit einem einfachen Programm kann man<br />

sich leicht davon überzeugen, dass die Rückkehrwahrscheinlichkeit im Ensemblemittel<br />

(also gemittelt über viele unabhänge Läufe) algebraisch abnimmt:<br />

R(t) ∼ t −3/2 . (5.39)<br />

Der Exponent − 3 2<br />

wird als Rückkehrexponent (engl. first-passage exponent) bezeichnet.<br />

Beweis: Dieses Ergebnis kann man verstehen, indem man den Kontiuumlimes betrachtet.<br />

Man stellt sich dazu vor, dass ein Ensemble von Teilchen am Ursprung startet <strong>und</strong><br />

diejenigen Teilchen, die den Ursprung wieder erreichen, aus dem System entfernt werden.<br />

Im Kontinuumlimes entspricht das einer Dirichlet-Randbedingung P t(0) = 0 <strong>für</strong> die<br />

Wahrscheinlichkeitsdichte. Wegen des Verlusts von Teilchen erwartet man keine konstante<br />

sondern eine mit der Zeit abnehmende Normierung, die ein Maß da<strong>für</strong> ist, welcher Anteil<br />

von Teilchen den Ursprung noch nicht wieder erreicht hat.<br />

Mathematisch suchen wir also eine Lösung der Diffusionsgleichung unter der Randbedingungen<br />

P t(0) = 0. Setzt man den faktorisierenden Ansatz<br />

P t(x) = g(x)t −α e −x2 /4Dt<br />

(5.40)<br />

in die Diffusionsgleichung (∂ t − D∂ 2 x)P t(x) = 0 ein, so wird man auf die Gleichung (2α −<br />

1)g(x) − 2xg ′ (x) + 2Dtg ′′ (x) = 0 geführt. Diese ist nur dann t-unabhängig wenn g ′′ (x) = 0<br />

ist. Man erhält mit diesem Ansatz zwei unabhängige Lösungen, nämlich <strong>für</strong> g(x) = 1 die<br />

sich sich verbreiternde Gaußglocke in Gl. (5.28) <strong>und</strong> <strong>für</strong> g(x) = x die Lösung<br />

P t(x) = x t −3/2 e −x2 /4Dt<br />

(5.41)<br />

Diese Lösung ist bis auf Konstante die Ableitung einer Gaußglocke nach x <strong>und</strong> hat eine<br />

Nullstelle bei x = 0. Nur der positive Teil der Lösung <strong>für</strong> x > 0 ist physikalisch. Das<br />

Normierungsintegral ist ∫ ∞<br />

dx P<br />

0 t(x) = 2D/ √ t, der Anteil der noch nicht zurückgekehrten<br />

Teilchen zerfällt also wie t −1/2 . Die Rückkehrrate ist proportional zur Zeitableitung dieser<br />

Größe, womit man zu Gl. (5.39) gelangt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


86 Zufallsbewegung<br />

Abbildung 5.4: Links: Experimentell erzeugter DLA-Cluster durch Elektrodeposition in einer Kupfersulfatlösung.<br />

Rechts: Computersimulation des Wachstums eines DLA-Clusters. Ein<br />

Teilchen wird auf einem Kreis gleichverteilt platziert (grüner Punkt), startet dort einen<br />

random walk (rot), bis es den Cluster erreicht <strong>und</strong> sich dort irreversibel anlagert.<br />

5.3.3 Diffusionsbegrenztes Wachstum (DLA)<br />

Diffusionsbegrenztes Wachstum (diffusion-limited aggregation, DLA) ist ein Prozess, bei<br />

dem Teilchen eine Zufallsbewegung vollführen <strong>und</strong> sich dabei an einem Aggregat, auch<br />

Cluster genannt, sukzessive anlagern. Im einfachsten Fall wird dazu ein punktförmiger<br />

Nukleationskeim am Ursprung des Koordinatensystems bzw. in der Mitte des Bildschirms<br />

plaziert. Ein diff<strong>und</strong>ierendes Teilchen, das zufällig mit dem Cluster in Kontakt gerät,<br />

bleibt an diesem irreversibel haften.<br />

Als theoretisches Modell wurde DLA 1981 von Sander <strong>und</strong> Witten eingeführt [14]. In<br />

diesem idealisierten Modell lagern sich aus dem Unendlichen kommende nichtwechselwirkende<br />

Teilchen durch Diffusion an dem bestehenden Cluster an <strong>und</strong> erzeugen auf<br />

diese Weise ein flockenartiges Aggregat. Um einen solchen Cluster in einer Computersimulation<br />

wachsen zu lassen, startet man den random walk des Teilchens gleichverteilt<br />

auf einem Kreis, der den aktuellen Cluster vollständig umschließt. Dann lässt man das<br />

Teilchen diff<strong>und</strong>ieren, bis es einen am Cluster benachbarten Gitterplatz findet, wo es<br />

aggregiert, also dem Cluster als zugehörig markiert wird. In einem einfachen Programm<br />

wird man deshalb zunächst ein Feld s[x][y] definieren, welches aussagt, ob ein Gitterplatz<br />

zum Cluster gehört oder nicht:<br />

const int L=400;<br />

bool s[L][L];<br />

// Seitenlänge des Bildschirms<br />

// Array <strong>für</strong> Clusterzugehörigkeit<br />

Anfangs werden alle Einträge dieses Arrays auf false gesetzt <strong>und</strong> ein Nukleationskeim<br />

durch s[L/2][L/2]=true in der Mitte platziert. Der Diffusionsprozess wird dann beispielsweise<br />

von folgender Funktion durchgeführt:<br />

void diffusion (double r=0.9)<br />

// Diffusion startend auf Kreis<br />

{ // mit Radius r<br />

bool attached;<br />

double phi=rnd()*2*M_PI;<br />

int x = (int)(L/2+L/2*r*cos(phi)); // Teilchen auf Kreis platzieren<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.3 Diffusion in höheren Dimensionen 87<br />

int y = (int)(L/2+L/2*r*sin(phi));<br />

do { // gehört Nachbar zum Cluster?<br />

int xl=(x+L-1)%L, xr=(x+1)%L, yb=(y+L-1)%L, yt=(y+1)%L;<br />

attached = (s[x][yb] or s[x][yt] or s[xl][y] or s[xr][y]);<br />

if (attached) s[x][y]=true; // dann diesen Platz markieren<br />

else switch (rndint(4)) {<br />

}<br />

while (not attached);<br />

}<br />

case 0: x=xl; break;<br />

case 1: x=xr; break;<br />

case 2: y=yb; break;<br />

case 3: y=yt; break;<br />

}<br />

// andernfalls Diffusion ausführen<br />

Das obige Codefragment startet das diff<strong>und</strong>ierende Teilchen auf einem Kreis mit einem<br />

Radius, der als Argument der Funktion übergeben wird. Um dieses Programm zu<br />

optimieren, kann man diesen Kreis so eng wie möglich um den aktuellen Cluster herumlegen.<br />

Oft passiert es aber auch, dass sich das Teilchen vom Cluster entfernt <strong>und</strong> wegen<br />

der sehr schnell abnehmenden Rückkehrwahrscheinlichkeit einer Zufallsbewegung in zwei<br />

Dimensionen praktisch nicht zurückkehrt, so dass das Programm zu ‘hängen’ scheint.<br />

Im obigen Codefragment wird dies durch eine endliche Systemgröße mit periodischen<br />

Randbedingungen vermieden. Andere Programme brechen die Diffusion ab, sobald ein<br />

bestimmter Stop-Radius überschritten wird. Beide Mechanismen beeinflussen jedoch die<br />

statistischen Eigenschaften des Clusters, die Systemgröße bzw. der Stopradius sollten<br />

also deutlich größer als der aktuelle Cluster sein.<br />

Spitzeneffekt<br />

Warum bilden sich so schöne Flocken? Um dies zu verstehen, stelle man sich eine dreidimensionale<br />

Flocke aus Metall vor, die elektrisch geerdet ist. Die Flocke befinde sich<br />

in einer Metallkugel, deren Radius sehr groß ist <strong>und</strong> an die eine bestimmte Spannung<br />

angelegt wird. Im Innern der Kugel bildet sich ein elektrostatisches Feld Φ(⃗r) aus, das<br />

zwischen Flocke <strong>und</strong> Kugel der Poisson-Gleichung ∆Φ = 0 genügt. Diese Gleichung ist also<br />

mit den Dirichlet-Randbedingungen Φ = 0 auf der Oberfläche der Flocke <strong>und</strong> Φ = U O<br />

auf der umgebenden Kugel zu lösen, – ein äußerst anspruchsvolles Problem.<br />

Was hat das mit dem DLA-Problem zu tun? Dazu stellen wir uns die Flocke als ein<br />

Gebilde vor, das Teilchen vernichtet, also bei Kontakt spurlos verschwinden lässt. Den<br />

umgebenden Kreis stellen wir uns als radialsymmetrische Teilchenquelle vor, an der ständig<br />

neue Teilchen mit einer gewissen Rate erzeugt werden. Diese Teilchen diff<strong>und</strong>ieren<br />

nun im Innern der Kugel <strong>und</strong> werden irgendwann die Flocke erreichen <strong>und</strong> dort verschwinden.<br />

Nach einiger Zeit wird sich ein stationärer Zustand mit konstanter Teilchendichte<br />

ρ(⃗r) einstellen. Da zwischen Flocke <strong>und</strong> Kugel die Diffusionsgleichung gilt, muss ∆ρ = 0<br />

sein. Die Dichte an der Quelle (Kugel) ist konstant <strong>und</strong> positiv, die Dichte an der Senke<br />

(Flocke) dagegen gleich Null. Damit hat man formal die gleiche Situation wie im zuvor<br />

beschriebenen elektrostatischen Problem, nur in zwei statt drei Dimensionen.<br />

Diese formale Identität zeigt uns, dass die Anlagerungswahrscheinlichkeit im DLA-Problem<br />

der Normalableitung des Potentials an der Oberläche der Flocke, also der lokalen Feld-<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


88 Zufallsbewegung<br />

stärke an der Oberfläche entspricht. Diese Feldstärke ist an den exponierten Positionen<br />

der Flocke besonders groß, – ein Umstand, der in der Elektrostatik als Spitzeneffekt bekannt<br />

ist. Die Teilchen werden sich also bevorzugt an den Spitzen der Flocke anlagern,<br />

was letzten Endes zur Ausbildung einer flockenförmigen Struktur führt.<br />

Selbstähnlichkeit<br />

In Abschnitt 5.2.3 wurde gezeigt, dass eine Zufallsbewegung ein skaleninvarianter Prozess<br />

ist, d.h. die Bewegungsgleichung ist invariant unter Reskalierung gemäß Gl. (5.29)-(5.31).<br />

<strong>Physik</strong>alisch hat dies zur Folge, dass in einer Zufallsbewegung zwar eine Beziehung zwischen<br />

Längen- <strong>und</strong> Zeitskalen durch r ∼ √ t besteht, jedoch keine typische Längen- bzw.<br />

Zeitskala als solche ausgezeichnet wird. Mit Ausnahme des elementaren Abstands zwischen<br />

benachbarten Gitterplätzen <strong>und</strong> ggf. der Systemgröße gibt es also in einem random<br />

walk keine ausgezeichnete Länge, bei der sich das physikalische Verhalten signifikant ändern<br />

würde. Einen solchen Prozess bezeichnet man als skalenfrei (scale-free).<br />

Da ein DLA-Cluster durch einen skalenfreien Prozess gebildet wird <strong>und</strong> mit einem (von<br />

der Gitterauflösung abgesehen) punktförmigen Keim beginnt, ist auch der DLA-Cluster<br />

selbst eine skalenfreie Struktur. Dieser Sachverhalt ist in Abb. 5.5 anschaulich dargestellt.<br />

Dort werden drei DLA-Cluster mit 10 5 , 10 6 <strong>und</strong> 10 7 aggregierten Teilchen gezeigt.<br />

Die Abbildungen sind reskaliert, so dass die Aggregate in allen drei Bildern visuell den<br />

gleichen Radius haben. Wie man sehen kann, beeinflusst die Reskalierung zwar etwas<br />

die mikroskopische Körnigkeit der Pixel, doch bleibt die globale Struktur der Flocke als<br />

solche durch die Reskalierung qualitativ unverändert.<br />

Fraktale Dimension<br />

Ein DLA-Cluster ist ein asymptotisch fraktales Gebilde. Wie bereits in Kap. 3.2 auf<br />

S. 45 angesprochen, ist ein Fraktal eine in einen metrischen Raum eingebettete Menge<br />

mit einer im Allgemeinen nicht-ganzzahligen Dimension. Während Linien eindimensional<br />

<strong>und</strong> Flächen zweidimensional sind, ist ein DLA-Cluster gewissermaßen ein Zwischending<br />

5 6 7<br />

10 Teilchen 10 Teilchen 10 Teilchen<br />

Abbildung 5.5: Reskalierte DLA-Cluster mit jeweils 10 5 , 10 6 <strong>und</strong> 10 7 deponierten Teilchen. [Quelle:<br />

Jon Machta, http://people.umass.edu/machta/images/dla.html]<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.4 Aufgaben 89<br />

– er ist zwar mehr als eine Linie, jeoch auch nicht in der Lage, eine Fläche auszufüllen.<br />

Es gibt verschiedene Methoden, die fraktale Dimension d f einer gegebenen Menge zu bestimmen.<br />

Die vielleicht bekannteste Methode ist das box-counting-Verfahren. Dazu wird,<br />

wie in Abb. 5.6 dargestellt, über die zu untersuchende Menge ein Gitter mit Gitterabstand<br />

∆x gelegt. Dann werden diejenigen Quadrate gezählt, die mindestens ein Element<br />

der Menge enthalten, in diesem Fall also von mindestens einem Pixel des DLA-Clusters<br />

berührt werden. Im Idealfall hängt diese Anzahl n mit ∆x über ein Potenzgesetz<br />

n ∼ (∆x) −d f<br />

(5.42)<br />

zusammen, wobei der Exponent die fraktale Dimension ist. 1 In der Tat bekäme man<br />

<strong>für</strong> eine Linie (z.B. <strong>für</strong> eine Gerade oder einen Kreis) den Wert d f = 1, <strong>für</strong> eine voll<br />

ausgefüllte Fläche dagegen d f = 2.<br />

Für fraktale Strukturen, die auf einem Rechner erzeugt werden, ist das Potenzgesetz<br />

(5.42) nur in einem bestimmten Bereich gültig. Auf der einen Seite darf ∆x nicht kleiner<br />

als die Gitterkonstante des DLA-Clusters sein, andererseits darf ∆x aber auch nicht<br />

größer als der Cluster selbst werden. Eine grobe Abschätzung des Potenzgesetzes in<br />

dem dazwischenliegenden Bereich mit dem in Abb. 5.6 gezeigten Verfahren führt auf<br />

d f ≈ 1.65. Literaturwerte bewegen sich in der Nähe von d f ≈ 1.7. Damit besitzt ein<br />

DLA-Cluster tatsächlich eine fraktale Struktur, – er ist weder eine Line noch eine Fläche,<br />

sondern ein flockenartiges Gebilde mit nicht-ganzzahliger Dimensionalität.<br />

Die Untersuchung von DLA ist gegenwärtig ein aktives Forschungsgebiet. Insbesondere<br />

gibt es zahlreiche Arbeiten, die zu unterschiedlichen Ergebnissen <strong>für</strong> die fraktale Dimension<br />

gelangen. Neuere numerische Untersuchungen haben gezeigt, dass die fraktale<br />

Dimension möglicherweise mit dem relativen Abstand vom Ursprung variiert. Ein umfassendes<br />

theoretisches Verständnis des DLA-Wachstums fehlt noch.<br />

5.4 Aufgaben<br />

Aufgabe 5.11<br />

Gegeben sei die Summe<br />

(Zentraler Grenzwertsatz)<br />

s N =<br />

N∑<br />

i=1<br />

r −γ<br />

i<br />

,<br />

wobei r i wie üblich gleichverteilte Zufallszahlen zwischen 0 <strong>und</strong> 1 sind während γ > 0 ein<br />

frei wählbarer Exponent ist. Ziel der Aufgabe ist es herauszufinden, <strong>für</strong> welche γ der zentrale<br />

Grenzwertsatz gültig ist <strong>und</strong> wann er versagt. Ausserdem soll im Gültigkeitsbereich<br />

die zu erwartende Streuung der Gaußverteilung im Limes großer N berechnet werden.<br />

Gehen Sie dazu in folgenden Schritten vor.<br />

(a) Bestimmen Sie mit Hilfe von Mathematica R○ analytisch die Wahrscheinlichkeitsverteilung<br />

P (y), wobei y i = r −γ<br />

i<br />

ist.<br />

1 Je nach Verfahren gibt es unterschiedliche fraktale Dimensionen. Die hier definierte wird deshalb in<br />

der Literatur auch häufig als box-counting dimension bezeichnet.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


90 Zufallsbewegung<br />

224 of 256 boxes 737 of 1024 boxes<br />

10 6<br />

number of visited boxes<br />

10 5<br />

10 4<br />

10 3<br />

10 2<br />

10 1<br />

2266 of 4096 boxes<br />

10 0<br />

10 -3 10 -2 10 -1 10 0<br />

∆x<br />

Abbildung 5.6: Veranschaulichung der boxcounting-Methode zur Bestimmung der fraktalen<br />

Dimension.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


5.4 Aufgaben 91<br />

(b) Berechnen Sie mit Hilfe von Mathematica R○<br />

˜P (k) von P (y).<br />

analytisch die Fourier-Transformierte<br />

(c) Führen Sie mit Hilfe von Mathematica R○ eine Taylorentwicklung von ln( ˜P (k)) bis<br />

zur zweiten Ordnung in k durch. Für welche γ ist dies eine Parabel? (Nur dann ist<br />

der zentrale Grenzwertsatz anwendbar).<br />

(d) Isolieren Sie im Wertebereich von γ, in dem der zentrale Grenzwertsatz anwendbar<br />

ist, den quadratischen Anteil der Taylornäherung von ln( ˜P (k)), multiplizieren Sie<br />

laut Faltungssatz mit N <strong>und</strong> führen Sie die inverse Fouriertransformation aus.<br />

(e) Lesen Sie von der resultierenden Gaussverteilung die zu erwartende Streuung σ <strong>für</strong><br />

große N ab.<br />

(f) Schreiben Sie ein C- oder Java-Programm, welches – ähnlich wie in Aufgabe 1 –<br />

die Streuung σ numerisch berechnet <strong>und</strong> verifizieren Sie Ihr analytisches Resultat.<br />

Wenn Sie möchten, lassen Sie dieses Programm auch einmal <strong>für</strong> Werte von γ laufen,<br />

wo der zentrale Grenzwertsatz nicht zutrifft. Sie werden sehen, dass Ihnen die<br />

Abschätzung <strong>für</strong> σ in diesem Fall aus dem Ruder läuft, also nicht konvergiert.<br />

Aufgabe 5.12<br />

(Levy-Flüge)<br />

Die Länge der Flugstrecken d, die Vögel oder Insekten zurücklegen, sind oftmals wie ein<br />

Potenzgesetz verteilt. Schreiben Sie eine Funktion, die unter Verwendung eines Standard-<br />

Zufallszahlengenerators <strong>für</strong> reelle Zahlen r ∈ [0, 1] Flugdistanzen gemäß der Verteilung<br />

{ }<br />

(α − 1)d<br />

−α<br />

falls d > 1<br />

P (d) =<br />

0 falls d ≤ 1<br />

generiert, wobei α > 1 ein reeller Exponent ist. Überprüfen Sie Ihre Funktion, indem Sie<br />

<strong>für</strong> α = 2 das erzeugte Histogramm mit P (d) vergleichen.<br />

Aufgabe 5.13<br />

(Finanzmärkte)<br />

Jeden Tag steigt oder fällt der DAX um den Faktor a = 1.03 mit jeweils gleicher Wahrscheinlichkeit.<br />

Schreiben Sie ein Programm, das diesen Vorgang simuliert. Der DAX habe<br />

einen Anfangsstand von 5000 Punkten. Wie groß ist der Mittelwert <strong>und</strong> die Standardabweichung<br />

des DAX nach einem Jahr? Mitteln Sie dazu über viele unabhängige Simulationen.<br />

Hinweis: Sie können zur Übung das Ergebnis auch analytisch ausrechnen, indem Sie den<br />

DAX logarithmieren.<br />

Aufgabe 5.14<br />

(Brückenmodell)<br />

Lesen Sie die Originalveröffentlichung<br />

M.R. Evans, D.P. Foster, C. Godrèche, and D. Mukamel<br />

Spontaneous Symmetry Breaking in one-dimensional Driven Diffusive Systems<br />

Physical Review Letters 74, 208 (1995).<br />

(in der Bibliothek oder prl.aps.org von Rechnern der Domäne uni-wuerzburg.de)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


92 Zufallsbewegung<br />

<strong>und</strong> schreiben Sie ein Programm, welches das dort beschriebene “Brückenmodell” simuliert.<br />

Reproduzieren Sie damit qualitativ das in Fig. 3 dieses Papiers dargestellte Springen<br />

zwischen links- <strong>und</strong> rechtslaufendem Verkehr (sie dürfen dabei gerne die Parameter variieren).<br />

Aufgabe 5.15<br />

(Rückkehrwahrscheinlichkeit des Random Walks)<br />

Weisen Sie durch numerische Simulation nach, dass die Wahrscheinlichkeit R(t), dass eine<br />

eindimensionale Zufallsbewegung zum ersten Mal an ihren Ausgangspunkt zurückkehrt,<br />

als Funktion der Zeit wie R(t) ∼ t −3/2 abnimmt.<br />

Aufgabe 5.16<br />

(Erzeugung eines deterministischen Fraktals)<br />

Betrachten Sie einen eindimensionalen binären zellulären Automaten, der durch die folgende<br />

deterministische Dynamik definiert ist:<br />

{<br />

1 falls s i−1 (t) ≠ s i+1 (t)<br />

s i (t + 1) :=<br />

0 sonst<br />

Starten Sie mit der Konfiguration . . . 000010000 . . ., also mit<br />

s i (0) = δ i,0<br />

<strong>und</strong> generieren Sie mit Hilfe des zellulären Automaten die oben abgebildete fraktale<br />

Struktur. Berechnen Sie dabei die Gesamtmasse des Clusters<br />

M(T ) =<br />

T∑ ∑<br />

s i (t)<br />

t=0 i∈Z<br />

als Funktion von T . Welcher asymptotischer Gesetzmäßigkeit folgt M(T ) <strong>für</strong> T → ∞ ?<br />

Hinweis: Sie können diese Gesetzmäßigkeit analytisch überprüfen, indem Sie die Struktur des<br />

Fraktals analysieren.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6 Vielteilchensysteme <strong>und</strong><br />

Reaktions-Diffusionsprozesse<br />

In diesem Kapitel wollen wir Vielteilchensysteme<br />

untersuchen, in denen der<br />

Teilchentransport durch Diffusion realisiert<br />

ist. Die freie Weglänge der Teilchen<br />

wird dabei als extrem klein angenommen,<br />

so dass ballistische Effekte vernachlässigt<br />

werden können <strong>und</strong> die Teilchenbewegung<br />

effektiv durch einen random walk beschrieben<br />

werden kann. Man spricht auch oft<br />

davon, dass man im überdämpften Limes<br />

arbeitet.<br />

Reaktions-Diffusionsmodelle werden in der Regel durch Reaktionsgleichungen <strong>für</strong> verschiedene<br />

Teilchensorten beschrieben, wie man sie aus der Chemie kennt. Der Einfachheit<br />

halber werden wir die Teilchensorten mit Großbuchstaben A, B, C, ... bezeichnet. Die<br />

Reaktionsgleichung AB → C würde beispielsweise eine Reaktion beschreiben, wie sie in<br />

der Abbildung dargestellt ist. Dabei wird angenommen, dass nur Teilchen in unmittelbarem<br />

Kontakt miteinander reagieren können. Damit also eine Reaktion stattfinden kann,<br />

müssen die Reaktionspartner erst durch Diffusion zueinander finden.<br />

6.1 Molekularfeldnäherung<br />

6.1.1 Massenwirkungsgesetz<br />

In der Chemie werden zahlreiche Prozesse zufriedenstellend durch das sogenannte Massenwirkungsgesetz<br />

beschrieben. Das Massenwirkungsgesetz besagt, dass die Änderung<br />

der Konzentration einer Substanz X i proportional zur effektiven Reaktionsrate multipliziert<br />

mit dem Produkt der Konzentrationen der beteiligten Reaktionspartner ist. 1 Je<br />

nachdem, ob dabei Teilchen verbraucht oder erzeugt werden, kommt es zu Gewinn- <strong>und</strong><br />

Verlusttermen:<br />

d<br />

dt X i = ∑ k n X n1 X n2 − ∑ k m X m1 X m2<br />

(6.1)<br />

n<br />

m<br />

} {{ } } {{ }<br />

Gewinne<br />

Verluste<br />

Dabei sind die k i die effektiven Reaktionsraten. Für die Reaktion AB → C mit Rate k<br />

1 Das Massenwirkungsgesetz im engeren Sinne geht zusätzlich vom Gleichgewicht eines reversiblen Prozesses<br />

aus, d.h. die linke Seite von Gl. (6.1) wird gleich Null gesetzt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


94 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

Abbildung 6.1: Periodischer Farbumschlag in der Belousov-Zhabotinsky-Reaktion [6]<br />

wäre beispielsweise<br />

d<br />

dt [A] = d d<br />

[B] = −k[A][B] ,<br />

dt<br />

[C] = +k[A][B] . (6.2)<br />

dt<br />

Die Terme auf der rechten Seite von Gl. (6.1) sind immer dann quadratisch in den X i ,<br />

wenn zwei Teilchensorten <strong>für</strong> eine Reaktion erforderlich sind. Dies ist in realistischen<br />

chemischen Reaktionen fast immer der Fall. Spontane Reaktionen einzelner Teilchen ohne<br />

Reaktionspartner wie z.B. bei einem radioaktiven Zerfall entsprächen linearen Termen.<br />

Sind dagegen <strong>für</strong> eine Reaktion drei Teilchensorten erforderlich (wie z.B. bei katalytischen<br />

Reaktionen) erhielte man kubische Ausdrücke.<br />

6.1.2 Chemische Oszillationen<br />

Welchen Anwendungsbereich hat das Massenwirkungsgesetz <strong>und</strong> wann versagt es? Auf<br />

den ersten Blick scheint es einen recht eingeschränkten Anwendungsbereich zu haben, da<br />

jegliche räumliche Information vernachlässigt wird. Das Massenwirkungsgesetz ist also<br />

beschränkt auf Systeme mit guter diffusiver Durchmischung, deren Konzentrationsfelder<br />

als homogen angenommen werden können. Unter diesen Voraussetzungen erwartet man,<br />

dass das durch partielle Differentialgleichungen erster Ordnung beschriebene System relaxiert<br />

<strong>und</strong> schließlich einen stationären Zustand erreicht.<br />

Trotzdem können auch solche Systeme, <strong>für</strong> die das Massenwirkungsgesetz gültig ist, überraschende<br />

Eigenschaften haben, denn nicht immer relaxiert das System direkt in ein chemisches<br />

Gleichgewicht, so sind z.B. chemische Oszillationen möglich. Das bekannteste<br />

Beispiel ist die Belousov-Zhabotinsky-Reaktion [6], die zu einem periodischen Farbumschlag<br />

einer Lösung führt (siehe Abb. 6.1). Diese Oszillationen können über viele St<strong>und</strong>en<br />

stabil sein, bis sich die Substanzen verbraucht haben, denn natürlich ist auch hier kein<br />

perpetuum mobile möglich.<br />

Theoretische Untersuchungen haben gezeigt, dass man <strong>für</strong> chemische Oszillationen mindestens<br />

drei Substanzen braucht. Ein mögliches Modellsystem [7] ist durch die Raten-<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.1 Molekularfeldnäherung 95<br />

Abbildung 6.2: Belousov-Zhabotinsky-Reaktion in einer flachen Petri-Schale [6]<br />

gleichungen<br />

Ẋ = k 1 AY − k 2 XY + k 3 AX − 2k 4 X 2<br />

Ẏ = −k 1 AY − k 2 XY + 1 2 fk 5BZ (6.3)<br />

Ż = 2k 3 AY − k 5 BZ<br />

gegeben. Dabei sind A,B die Konzentrationen von Hilfssubstanzen <strong>und</strong> f eine numerische<br />

Konstante. Offenbar sind diese Gleichungen von der in Gl. (6.1) angegebenen allgemeinen<br />

Form des Massenwirkungsgesetzes.<br />

6.1.3 Raumzeitliche Strukturbildung<br />

Die Belousov-Zhabotinsky-Reaktion ist noch spektakulärer, wenn man sie nicht in einem<br />

Becherglas, sondern in einer flachen Petrischale durchführt. Es bilden sich dann nicht nur<br />

zeitliche, sondern auch räumliche Oszillationen in Form von wandernden Spiralen (siehe<br />

Abb. 6.2). Je nach Versuchsbedingungen können solche Spiralen auch instabil werden<br />

<strong>und</strong> aufbrechen.<br />

In der Theorie beschreibt man solche musterbildenden Systeme durch Ratengleichungen,<br />

die mit Diffusionstermen erweitert werden, also die allgemeine Form<br />

d<br />

dt X i<br />

= ∑ k n X n1 X n2 − ∑ k m X m1 X m2 + D i ∇ 2 X i (6.4)<br />

n<br />

m<br />

} {{ } } {{ }<br />

Gewinne Verluste Diffusion<br />

besitzen, wobei D i die entsprechenden Diffusionskonstanten sind. Ob die Diffusionsterme<br />

relevant sind, also beispielsweise zu Musterbildung führen, kann man durch lineare<br />

Störungstheorie um die homogene Lösung nachweisen. In Übereinstimmung mit dem Experiment<br />

hängt dies entscheidend von der räumlichen Dimension des Systems ab. Gr<strong>und</strong>sätzlich<br />

sind räumliche Effekte in niedrigdimensionalen Systemen ausgeprägter, da hier<br />

die diffusive Durchmischung geringer ist. Die Untersuchung von Musterbildung (pattern<br />

formation) im Rahmen solcher um Diffusionsterme erweiterter Ratengleichungen hat zur<br />

Entstehung zahlreicher Forschungsgruppen im Bereich der <strong>Physik</strong> komplexer Systeme<br />

geführt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


96 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

Abbildung 6.3: Computersimulation eines spiral breakup. [M. Bär, PTB Braunschweig]<br />

6.2 Gittermodelle<br />

Da ein Computer kontinuierliche Größen ohnehin nur mit einer diskretisierten Darstellung<br />

approximieren kann, bietet es sich an, die Teilchenpositionen in einem Reaktions-<br />

Diffusionsmodell von vornherein als diskretisierte Größen anzunehmen. Dadurch wird ein<br />

Gitter eingeführt, auf dem sich die Teilchen bewegen können. Je nach Modelldefinition<br />

können dabei Gitterplätze frei bzw. von einem oder auch mehreren Teilchen besetzt sein.<br />

6.2.1 Gittergeometrien<br />

Die Geometrie des Gitters wird definiert durch<br />

- seine Dimension d,<br />

- die mikroskopische Anordnung der Gitterplätze, <strong>und</strong><br />

- eine Relation, die angibt, welche Gitterplätze benachbart sind.<br />

In bildlichen Darstellungen werden die Gitterplätze (sites, nodes) in der Regel durch<br />

Punkte dargestellt, während als benachbart deklarierte Plätze durch Linien (links, bonds)<br />

verb<strong>und</strong>en werden.<br />

Eindimensionale Gittermodelle wie in Abb. 6.4 sind in der Regel als lineare Kette realisiert,<br />

deren Gitterplätze von 0 bis L − 1 durchnumeriert sind, wobei L die Länge der<br />

Kette ist. Da ein numerisch simuliertes Gittermodell immer endlich ist, müssen zudem<br />

die Randbedingungen spezifiziert werden. Die wichtigsten Typen sind<br />

- Dirichlet-Randbedingungen (geschlossene Enden) durch Fixierung des Zustands der<br />

Randplätze, z.B. indem die Randplätze stets als unbesetzt angenommen werden.<br />

Abbildung 6.4: Eindimensionale Kette mit L sites <strong>und</strong> periodischen Randbedingungen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.2 Gittermodelle 97<br />

Abbildung 6.5: Verschiedene Gittertypen in zwei Dimensionen.<br />

- von-Neumann’sche Randbedingungen (offene Enden) bei denen die Randplätze keine<br />

linken bzw. rechten Nachbarn haben.<br />

- periodische Randbedingungen bei denen die Gitterplätze an gegenüberliegenden<br />

Ränder als benachbart gelten.<br />

Als Faustregel gilt, dass periodische Randbedingungen die wenigsten Probleme bereiten,<br />

da sie die Translationsinvarianz des Systems nicht zerstören. Oft ist man nämlich am<br />

Limes unendlich großer Systeme interessiert <strong>und</strong> möchte sogenannte finite-size-Effekte<br />

nach Möglichkeit gering halten. Es zeigt sich dabei, dass periodische Randbedingungen<br />

am wenigsten störend wirken. Wir werden deshalb im Folgenden stets periodische Randbedingungen<br />

betrachten.<br />

Bemerkung: Ist x ∈ {0, 1, . . . , L−1} eine räumliche Koordinate, so können die Positionen<br />

der linken bzw. rechten Nachbarn x l , x r durch geeignete Modulo-Operationen bestimmt<br />

werden. In C++ ist<br />

xr = (x+1)%L;<br />

xl = (x+L-1)%L;<br />

wobei L die Länge der Kette ist. Die Addition der Konstanten L in der zweiten Zuweisung<br />

ist notwendig, um zu verhindern, dass die Modulo-Operation ein negatives Argument erhält,<br />

was in C++ zu einem negativen Ergebnis führen würde.<br />

In Mathematica R○ arbeitet man dagegen mit der Zählung x ∈ {1, 2, . . . , L} <strong>und</strong> die Nachbarn<br />

sind gegeben durch<br />

xl = Mod[x-2,L]+1;<br />

Allerdings ist Mathematica R○<br />

xr = Mod[x,L]+1;<br />

wegen der vergleichsweise geringeren Geschwindigkeit nur<br />

bedingt zur Simulation von Reaktions-Diffusionmodellen auf einem Gitter geeignet.<br />

In zwei Dimensionen gibt es eine große Vielfalt verschiedener Gittergeometrien. Die wichtigsten<br />

Typen sind das Quadratgitter (square lattice), das Dreiecksgitter (triangular lattice),<br />

<strong>und</strong> das Honigwabengitter (honeycomb lattice), siehe Abb. 6.5. Das Quadratgitter<br />

ist besonders beliebt, da es sich auf einem Rechner bequem als zweidimensionales Array<br />

realsieren lässt. Periodische Randbedingungen werden in diesem Fall dadurch implementiert,<br />

dass man die Gitterplätze an gegenüberliegenden Gitterplätzen sowohl in x- als<br />

auch in y-Richtung identifiziert. Wie in Abb. 6.6 dargestellt, erhält man dadurch die<br />

Topologie eines Torus, weshalb man auch von torodialen Randbedingungen spricht.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


98 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

Abbildung 6.6: Periodische Randbedingungen in zwei Dimensionen entsprechen einem Torus.<br />

6.2.2 Charakterisierung des Zustandsraums<br />

Während die Gitterstruktur als solche zeitlich konstant ist, können sich die Teilchen von<br />

Gitterplatz zu Gitterplatz bewegen. Ein bestimmtes Arrangement von Teilchen bezeichnet<br />

man als Konfiguration oder auch (Mikro-)Zustand des Systems. Die Menge aller<br />

möglichen Zustände wird als Zustandsraum Ω bezeichnet. Die Anzahl möglicher Zustände<br />

|Ω| ist in der Regel sehr hoch <strong>und</strong> wächst exponentiell mit der Systemgröße. Durch<br />

Anwendung der dynamischen Regeln springt das System gewissermaßen durch seinen<br />

Zustandsraum. Wenn es dabei im Prinzip jeden Zustand erreichen kann, bezeichnet man<br />

das System als Ergodizität.<br />

Beispiel: Als Beispiel wollen wir eine eindimensionale Kette mit nur 20 Gitterplätzen<br />

betrachten, auf denen 10 Teilchen diff<strong>und</strong>ieren, wobei jeder Gitterplatz jeweils leer oder<br />

einfach besetzt sein darf. Da die Teilchen auf ( 20<br />

10)<br />

mögliche Weisen arrangiert werden<br />

können, hat dieses System bereits 184756 verschiedene Zustände.<br />

Der Zustand des System, also die aktuelle Konfiguration der Teilchen, wird in der Regel<br />

im Kurzzeitspeicher (random access memory, RAM) 2 des Rechners, also in globalen oder<br />

lokalen Variablen abgelegt. Hier gibt es mehrere Möglichkeiten. Die beiden wichtigsten<br />

sind:<br />

(a) Besetzungszahlorientierte Speicherung: Für jeden Gitterplatz wird der lokale<br />

Zustand, also dessen momentane Belegung mit Teilchen, in einem Array abgespeichert.<br />

(b) Listenbasierte Speicherung: Der Rechner führt eine Liste, ggf. eine dynamisch<br />

erzeugte Liste mit variabler Länge, in der die Teilchen mit ihren entsprechenden<br />

Koordinaten aufgelistet sind.<br />

Bei dem ersten Verfahren benötigt man Schleifen, die über das gesamte Gitter iterieren.<br />

Diese Methode eignet sich deshalb vor allem bei hohen Teilchendichten. Beim listenbasierten<br />

Verfahren iteriert man dagegen über eine Liste der Teilchen <strong>und</strong> hat deshalb einen<br />

Geschwindigkeitsvorteil bei geringen Teilchendichten.<br />

2 Die Speicherung von Daten auf der Festplatte ist sehr viel zeitaufwändiger <strong>und</strong> sollte nur zum Herausschreiben<br />

von Mittelwerten <strong>und</strong> ggf. nur periodischen Sicherung des Systemzustands genutzt werden.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.2 Gittermodelle 99<br />

Bei Systemen, in denen sowohl hohe als auch niedrige Teilchendichten vorkommen können,<br />

eignet sich ein Hybridverfahren, bei dem man sowohl ein Array <strong>für</strong> die Besetzungszahlen<br />

als auch eine Liste <strong>für</strong> die Teilchenpositionen verwendet.<br />

6.2.3 Dynamiken<br />

Anders als bei einer Zufallsbewegung eines Teilchens finden in einem Vielteilchensystem<br />

eine große Anzahl von mikroskopischen Prozessen pro Zeiteinheit statt. In einer<br />

Computersimulation müssen also bestimmte Annahmen gemacht werden, in welcher Reihenfolge<br />

diese Prozesse abgearbeitet werden. Es gibt da<strong>für</strong> eine Anzahl verschiedener<br />

Update-Schemata. Die wichtigsten sind:<br />

1. Parallele Dynamik (parallel updates): In einem Zeitschritt t → t + 1 werden<br />

alle Plätze des Gitters gleichzeitig aktualisiert. Für diff<strong>und</strong>ierende Teilchen darf<br />

man sich eine solche Dynamik als synchrones Hüpfen vorstellen. Parallele Dynamiken<br />

sind in der Regel sehr effizient <strong>und</strong> eignen sich hervorragend zum Einsatz auf<br />

Parallelrechnern. Ein Einzelrechner wird die Gitterplätze zwar nacheinander aktualisieren,<br />

doch die Reihenfolge spielt dabei keine Rolle. In Modellen mit paralleler<br />

Dynamik kommutieren also die lokalen updates.<br />

Beispiel: Wir wollen parallele Dynamik am Beispiel des Koagulationsprozesses auf<br />

einer eindimensionalen Kette diskutieren. In diesem Prozess diff<strong>und</strong>ieren Teilchen mit<br />

Wahrscheinlichkeit p nach rechts <strong>und</strong> 1 − p nach links. Wenn zwei Teilchen auf einem<br />

Gitterplatz kollidieren, verschmelzen sie zu einem Teilchen, führen also die Reaktion<br />

2A → A aus. Der Zustand der Kette ist in einem eindimensionalen Array bool s[L]<br />

gespeichert. Folgende Codesequenz bildet eine gegebene Konfiguration s[i] auf eine<br />

neue Konfiguration u[i] ab, die dann ggf. nach s[i] zurückkopiert werden muss. Beachten<br />

Sie, dass man die lokale Aktualisierung nicht direkt nach s[i] schreiben darf,<br />

da sonst die lokalen Updates nicht kommutieren würden.<br />

void parallel_dynamics (bool s[], bool u[], double p) {<br />

for (int i=0; i


100 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

3. Sequentielle Dynamik (sequential updates). Kommutieren die lokalen updates<br />

nicht, kann man eine bestimmte Reihenfolge der Aktualisierungen als Teil der Modelldefinition<br />

vereinbaren. Man könnte z.B. vereinbaren, eine lineare Kette von links<br />

nach rechts zu aktualisieren. Damit ist allerdings das Risiko verb<strong>und</strong>en, dass man<br />

die Spiegelsymmetrie des Systems verletzt, also eine Vorzugsrichtung auszeichnet,<br />

ohne dies zu beabsichtigen. Sequentielle Dynamiken sind daher <strong>für</strong> Anfänger nicht<br />

zu empfehlen <strong>und</strong> werden deshalb im Rahmen dieser Vorlesung nicht weiter behandelt.<br />

Beispiel: Folgende Codesequenz demonstriert, was bei sequentiellen Updates passieren<br />

kann. Die Kette wird hier von links nach rechts aktualisiert.<br />

void ordered_sequential_dynamics (bool s[], double p) {<br />

for (int i=0; i


6.3 Zelluläre Automaten 101<br />

lokale Dynamik<br />

t<br />

t+1<br />

nichtlokale Dynamik<br />

Abbildung 6.7: Illustration lokale <strong>und</strong> globaler updates in einem zellulären Automaten<br />

diese unregelmäßigen Aktualisierungen oftmals eher dem physikalischen Vorbild <strong>und</strong> können<br />

mit mathematischen Methoden leichter behandelt werden.<br />

6.3 Zelluläre Automaten<br />

Modelle mit paralleler Dynamik, deren Zustände Reihe <strong>für</strong> Reihe konstruiert werden können,<br />

bezeichnet man auch als zelluläre Automaten. Die ‘Zellen’ sind dabei nichts anderes<br />

als die Gitterplätze <strong>und</strong> die Reihen werden mit einem zeitlichen Index t durchnumeriert.<br />

Die dynamischen Regeln erfüllen die sogenannte Markov-Eigenschaft, d.h. die jeweils neu<br />

konstruierte Reihe zur Zeit t + 1 hängt nur vom Zustand der Zellen in der vorherigen<br />

Reihe zum Zeitpunkt t ab. Als Anfangszustand muss also nur eine Reihe (z.B. bei t = 0)<br />

spezifiziert werden.<br />

Man unterscheidet deterministische <strong>und</strong> stochastische zelluläre Automaten, je nachdem,<br />

ob bei der Konstruktion der nächsten Reihe Zufallszahlen involviert sind oder nicht. Ferner<br />

unterscheidet man räumlich lokale <strong>und</strong> nichtlokale Dynamiken. Bei räumlich lokalen<br />

updates hängt der Zustand einer Zelle zum Zeitpunkt t+1 nur von ihrem eigenen Zustand<br />

<strong>und</strong> dem der benachbarten Zellen zum Zeitpunkt t ab (siehe Abb. 6.7).<br />

Beispiel: Als Beispiel betrachteten wir einen deterministischen zellulären Automaten mit<br />

zwei Zuständen per Zelle, dessen lokale Dynamik durch die update-Vorschrift<br />

{<br />

1 falls s i−1(t) ≠ s i+1(t)<br />

s i(t + 1) :=<br />

0 sonst<br />

gegeben ist. Startet man den Prozess mit nur einem Teilchen am Ursprung, so ergibt sich<br />

dabei das in Abb. 6.8 dargestellte fraktale Gebilde, das als Sierpinski-Fraktal (Sierpinski-<br />

Abbildung 6.8: Deterministischer zellulärer Automat: Sierpinski-Fraktal<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


102 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

r(t)<br />

t 1 t t t t t t t t t t t<br />

2 3 4 5 6<br />

7 8 9 10<br />

11t12<br />

13<br />

t<br />

Abbildung 6.9: Unkorrelierte Sprungzeitpunkte einer thermisch induzierten Zufallsbewegung.<br />

gasket) bekannt ist. Die deterministische Konstruktion spiegelt sich in einer hochsymmetrischen<br />

Strukturierung wieder.<br />

6.4 Systeme mit thermisch induzierten Übergängen<br />

Während bei zellulären Automaten mit paralleler Dynamik die Zeit eine diskrete Größe<br />

ist, ist die Zeit in Experimenten eine kontinuierliche Größe. Die Sprünge von einem Zustand<br />

in einen anderen sind dabei oft thermisch induziert. Deponiert man beispielsweise<br />

in MBE-Experimenten (MBE=molecular beam epitaxy) ein Atom auf der Oberfläche eines<br />

Festkörpers, so wird es bei geeigneter Temperatur auf der Oberfläche diff<strong>und</strong>ieren,<br />

also eine Zufallsbewegung ausführen. Dabei springt es von einem lokalen Potentialminimum<br />

zum nächsten, sobald die durch Phononen (Gitterschwingungen) bereitgestellte<br />

Energie da<strong>für</strong> ausreicht. 3<br />

Die Zeitpunkte von thermisch induzierten Übergängen sind unkorreliert <strong>und</strong> gleichen<br />

dem Knattern eines Geigerzählers bei der Messung eines radioaktiven Zerfalls:<br />

• Da die Übergänge als zeitlich punktförmig angenommen werden, ist die Wahrscheinlichkeit<br />

gleichzeitig stattfindender Übergänge gleich Null, so dass die Zeitpunkte<br />

geordnet werden können (siehe Abb. 6.9).<br />

• Die Wahrscheinlichkeit, dass in einem infinitesimalen Zeitintervall [t, t + dt] ein<br />

Übergang stattfindet, ist w dt, wobei w die Reaktionsrate ist.<br />

Wie sind die Zeitintervalle τ = t i+1 − t i zwischen zwei aufeinanderfolgenden Übergängen<br />

statistisch verteilt? Um diese Frage zu beantworten, teilt man das Zeitintervall in<br />

infinitesimale Teilintervalle der Breite dt auf:<br />

dt<br />

t i<br />

t i+1 t i+2<br />

In jedem der infinitesimalen Teilintervalle ist die Wahrscheinlichkeit <strong>für</strong> einen Übergang<br />

gleich w dt. Die Wartezeitverteilung, also die Wahrscheinlichkeit P w (τ)dt, ein Zeitintervall<br />

τ zu beobachten, ist demnach gleich dem Produkt der Wahrscheinlichkeiten 1 − w dt, in<br />

den dazwischenliegenden infinitesimalen Teilintervallen keinen Übergang festzustellen,<br />

3 Oberflächendiffusion wird also durch thermische Fluktuationen des Festkörpers vermittelt <strong>und</strong> sollte<br />

nicht mit dem quantenmechanischen Tunneleffekt verwechselt werden.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.5 Fluktuationseffekte im Koagulationsprozess 103<br />

multipliziert mit der Wahrscheinlichkeit w dt, im letzten Teilintervall zum Zeitpunkt t i+1<br />

einen Übergang festzustellen:<br />

P w (τ) dt = wdt (1 − wdt) τ/dt . (6.5)<br />

Mit der Grenzwertdarstellung der Exponentialfunktion e −x = lim n→∞ (1 − x/n) n erhält<br />

man im Limes dt → 0 bzw. n = τ/dt → ∞:<br />

P w (τ) = w(1 − wτ/n) n → w e −wτ . (6.6)<br />

Diese Wartezeitverteilung ist korrekt normiert <strong>und</strong> wird als Poisson-Verteilung bezeichnet.<br />

Bemerkung: In Lehrbüchern wird die Poisson-Verteilung durch<br />

P (k; λ) = e−λ λ k<br />

definiert <strong>und</strong> gibt die Wahrscheinlichkeit an, in einem gegebenen Intervall k Ereignisse zu<br />

beobachten, wobei λ die mittlere Anzahl der zu erwartenden Ereignisse ist. Die Poisson-<br />

Verteilung hat die besondere Eigenschaft, dass Mittelwert 〈k〉 <strong>und</strong> Varianz σ 2 k ≡ 〈k 2 〉−〈k〉 2<br />

identisch <strong>und</strong> gleich λ sind. Poisson-verteilte Ereignisse bezeichnet man in der Experimentalphysik<br />

auch häufig als shot noise.<br />

In Gl. (6.6) fragt man nach der Wahrscheinlichkeit, in einem Intervall τ mit mittlerer<br />

Ereignisanzahl λ = wτ kein Ereignis zu finden, diese Wahrscheinlichkeit ist P (0; λ) =<br />

e −λ . Diese Wahrscheinlichkeit wird mit der Wahrscheinlichkeit wdt multipliziert, dass im<br />

unmittelbar darauf folgenden infinitesimalen Zeitintervall ein Ereignis stattfindet. Auf diese<br />

Weise bekommt man die Verteilung der Zeiten zwischen aufeinanderfolgenden Ereignissen.<br />

k!<br />

6.5 Fluktuationseffekte im Koagulationsprozess<br />

In den folgenden Abschnitten wollen wir ein konkretes Vielteilchensystem betrachten,<br />

bei dem das Massenwirkungsgesetz, also die Molekularfeldtheorie, falsche Vorhersagen<br />

macht. Es handelt sich um einen Reaktionsprozess mit nur einer Sorte diff<strong>und</strong>ierender<br />

Teilchen A, die immer dann, wenn sie paarweise aufeinandertreffen, miteinander verschmelzen,<br />

also die Reaktion 2A → A ausführen. Diesen Verschmelzungsprozess bezeichnet<br />

man als Koagulation. Die Molekularfeldgleichung <strong>für</strong> diesen Prozess lautet<br />

˙ρ(t) = −w ρ 2 (t) , (6.7)<br />

wobei ρ(t) die Teilchendichte <strong>und</strong> w die Koagulationsrate ist. Offenbar zerfällt die Dichte<br />

asymptotisch wie<br />

ρ(t) ∼ 1/t (6.8)<br />

also mit einem Exponenten α = −1. Wir werden jedoch sehen, dass jedoch in eindimensionalen<br />

Systemen diese Vorhersage falsch ist <strong>und</strong> man de facto einen sehr viel langsameren<br />

Zerfall beobachtet.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


104 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

6.5.1 Experimenteller Hintergr<strong>und</strong><br />

Hintergr<strong>und</strong> ist ein Lumineszenzexperiment mit<br />

einer kristallinen Substanz namens Tetramethylammoniummangantrichlorid,<br />

kurz TMMC.<br />

Dieses Material besteht aus Manganchlorid-<br />

Ketten. Wie in der Abbildung (a) zu sehen ist,<br />

befinden sich dabei die Manganionen in der Mitte,<br />

während die Chlorionen in Dreiergruppen arrangiert<br />

sind. Die Ketten sind parallel angeordnet<br />

<strong>und</strong> räumlich durch Tetramethylammoniumionen<br />

getrennt (siehe Querschnitt in Abb. (b)).<br />

Durch Einstrahlung von Laserlicht lassen sich<br />

nun die Manganionen elektronisch anregen, man<br />

spricht bei solchen angeregten Zuständen von sogenannten<br />

Exzitonen.<br />

Benachbarte Mn 2+ -Ionen können miteinander dadurch wechselwirken, dass ein Exziton<br />

von einem Platz zum nächsten springt. Solche Sprünge sind thermisch aktiviert durch die<br />

Wechselwirkung mit Phononen (Gitterschwingungen) <strong>und</strong> folgen deshalb effektiv einem<br />

random walk. Kommt es dabei zu einer Fusion zweier Exzitonen, so entsteht zunächst ein<br />

doppelt angeregter Zustand. Dieser ist jedoch nicht stabil <strong>und</strong> zerfällt unter Abstrahlung<br />

eines Phonons zu einem einfach angeregten Zustand. Im Teilchenbild bedeutet dies, dass<br />

zwei Teilchen zu einem Teilchen plus Wärme reagieren (siehe Abb. 6.11). Da die Wärme<br />

im Material absorbiert wird, erhält man also einen Koagulationsprozess 2A → A. Durch<br />

die großen Abstände zwischen den Ketten können diese als Ensemble eindimensionaler<br />

Systeme aufgefasst werden.<br />

Mit einer sehr viel geringeren Rate zerfallen die Exzitonen auch spontan, wobei sie Licht<br />

emittieren. Die gemessene Intensität dieses Lichtes ist also ein Maß <strong>für</strong> die momentane<br />

Anzahl der Exzitonen. Bestrahlt man das Material mit einem kurzen Laserpuls, kommt<br />

es zu einem Nachleuchten (Lumineszenz), das mit hoher Genauigkeit gemessen werden<br />

LASER<br />

EXZITON<br />

PHONON<br />

Abbildung 6.10: TMMC: Durch Einstrahlung eines Laserpulses werden Exzitonen auf den Mn 2+ -Ionen<br />

angeregt. Diese Exzitonen springen thermisch induziert mit gleicher Wahrscheinlichkeit<br />

nach links <strong>und</strong> nach rechts. Sprünge zwischen den Ketten sind stark unterdrückt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.5 Fluktuationseffekte im Koagulationsprozess 105<br />

t<br />

PHONON<br />

PHOTON<br />

t<br />

Abbildung 6.11: Oben: Koagulation 2A → A unter Abstrahlung von Wärme. Unten: Lumineszenz<br />

durch spontanen Zerfall einzelner Exzitonen<br />

Abbildung 6.12: Messergebnisse <strong>für</strong> die reziproke Intensität als Funktion der Zeit in einer doppeltlogarithmischen<br />

Darstellung.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


106 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

kann. Auf diese Weise kann man ρ(t), d.h. die Dichte der Exzitonen, als Funktion der<br />

Zeit messen.<br />

Die von Kroon, Fleurent <strong>und</strong> Sprik [8] gemessenen Daten sind in Abb. 6.12 in doppeltlogarithmischer<br />

Darstellung (’log-log’) aufgetragen. Dabei ist zu beachten, dass die Ordinate<br />

den Kehrwert der Intensität wiedergibt, also proportional zu ρ −1 (t) ist. Wie man<br />

erkennen kann, ergeben sich je nach Pulsintensität parallel verschobene Geraden mit der<br />

Steigung 1/2. Folglich zerfällt die Dichte algebraisch (d.h. nach einem Potenzgesetz) wie<br />

ρ(t) ∼ t −1/2 , (6.9)<br />

widerspricht also dem Meanfield-Resultat in Gl. (6.8). Die experimentellen Daten zeigen<br />

auch, dass das Potenzgesetz nur in einem bestimmten Bereich (gelb markiert) gültig ist.<br />

Für sehr große Dichten von Exzitonen ist die abgegebene Wärme bei der Koagulation<br />

noch so groß, dass sie nicht vernachlässigt werden kann, sondern die Diffusionsrate effektiv<br />

erhöht, womit es zu Abweichungen kommt. Für kleine Dichten finden dagegen Koagulationsprozesse<br />

so selten statt, dass die spontane Teilchenvernichtung durch Lumineszenz<br />

trotz ihrer kleinen Rate relevant wird <strong>und</strong> so die Teilchendichten weiter herabsetzt, womit<br />

die Geraden nach oben abbiegen.<br />

6.5.2 Simulation<br />

Das im Experiment beobachtete 1/ √ t-Verhalten kann mit Hilfe einer einfachen Computersimulation<br />

bestätigt werden. In C++ definiert man dazu eine Kette mit der Länge<br />

const int L=100000 in der Form eines Arrays int s[L], wobei s i = 0, 1 die Präsenz<br />

eines Exzitons auf Gitterplatz i angibt. Mit zufällig-sequentiellen Updates selektiert man<br />

zuerst ein zufälliges Paar benachbarter Plätze. Wenn nur ein Platz besetzt ist, wird das<br />

betreffende Exziton zum Nachbarplatz verschoben, wodurch die Teilchen diff<strong>und</strong>ieren.<br />

Sind beide Plätze besetzt, so springt eines der beiden Teilchen <strong>und</strong> koaguliert mit dem<br />

Nachbarn. Ein Zeitschritt (sweep) entspricht einer L-fachen Wiederholung. Diese Dynamik<br />

lässt sich mit folgendem Codefragment realisieren:<br />

void Koagulationsprozess (void) {<br />

int i,links,rechts;<br />

for (i=1; i


6.5 Fluktuationseffekte im Koagulationsprozess 107<br />

t<br />

Abbildung 6.13: Raumzeit-Plot eines Koagulationsprozesses mit einem anfangs voll besetzten Gitters.<br />

bis die Trajektorien sich vereinigen.<br />

Mit dem Codefragment ist es sehr einfach, die Dichte ρ(t) als Funktion der Zeit zu<br />

messen. Das Resultat ist in Abb. 6.14 auf der linken Seite zu sehen. Die Simulation<br />

reproduziert in der Tat den experimentell beobachteten Zerfall ρ(t) ∼ t −1/2 , während die<br />

Meanfield-Lösung ρ(t) ∼ 1/t eindeutig ausgeschlossen werden kann.<br />

Bemerkung: Damit die gemessene Größe nicht zu sehr fluktuiert, ist ein Mittelungsverfahren<br />

erforderlich. Neben dem bereits besprochenen Ensemblemittel, bei dem man über<br />

viele statistisch unabhängige Abläufe (runs) eines genügend großen Systems mittelt, kann<br />

man hier auch das räumliche Mittel benutzen, also einfach ein extrem großes System in nur<br />

einem Ablauf simulieren. Die in Abb. 6.14 gezeigten Daten wurden beispielsweise durch Simulation<br />

eines einzigen runs eines Systems mit 500.000 Gitterplätzen erzeugt. Da man sich<br />

ein solches extrem großes System zu endlichen Zeiten in unkorrelierte Teilsysteme zerlegt<br />

denken kann, sind die beiden Mittelungsprozeduren äquivalent.<br />

6.5.3 Interpretation<br />

Warum zerfällt die Teilchendichte im eindimensionalen Koagulationsprozess so viel langsamer<br />

(ρ ∼ 1/ √ t) als es die Meanfield-Gleichung vorhersagt (ρ ∼ 1/t)? Warum also<br />

versagt die Meanfield-Approximation?<br />

Anschaulich argumentiert sind die Voraussetzungen <strong>für</strong> die Meanfield-Approximation,<br />

nämlich eine homogene korrelationsfreie Mischung von Teilchen, nicht mehr gegeben,<br />

vielmehr kommt es zu Korrelationen zwischen den Teilchen. Der Koagulationsprozess<br />

bestraft nämlich Teilchen, die sich in der Nähe von anderen Teilchen befinden, indem<br />

er sie durch Koagulation entfernt <strong>und</strong> damit die Teilchendichte reduziert. Damit werden<br />

effektiv Antikorrelationen erzeugt, d.h. die Teilchen halten untereinander mehr Abstand,<br />

als dies in einer unkorrelierten (d.h. Poisson-verteilten) Anordnung der Fall wäre. Diese<br />

Antikorrelationen wiederum bremsen den Prozess ab, <strong>und</strong> zwar so stark, dass sich der<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


108 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

10 0<br />

0.6<br />

1×10 -4<br />

ρ(t)<br />

10 -1<br />

ρ(t) t 1/2<br />

0.5<br />

0.4<br />

Steigung -1/2<br />

0.3<br />

10 0 10 1 10 2 10 3 10 4<br />

t<br />

c(r) = <br />

8×10 -5<br />

6×10 -5<br />

4×10 -5<br />

t = 2000<br />

10 -2<br />

Steigung -1<br />

2×10 -5<br />

10 0 10 1 10 2 10 3 10 4<br />

t<br />

0<br />

0 50 100 150 200 250 300<br />

r<br />

Abbildung 6.14: Links: Teilchendichte als Funktion der Zeit eines Koagulationsprozesses auf einer eindimensionalen<br />

Kette mit 500.000 Plätzen in doppelt-logarithmischer Darstellung. Die<br />

Hilfslinien markieren die Steigungen -1/2 <strong>und</strong> -1. Der eingeschobene Graph zeigt die<br />

selben Daten multipliziert mit t 1/2 . Rechts: Zweipunktkorrelationsfunktion eines Koagulationsprozesses<br />

nach 2000 Zeitschritten gemittelt über eine Kette mit 5.000.000<br />

Plätzen.<br />

Exponent des Zerfallsgesetzes dramatisch ändert. Wie wir sehen, ist dieser Effekt von<br />

der räumlichen Dimension des Systems abhängig <strong>und</strong> in niedrigdimensionalen Systemen<br />

besonders ausgeprägt.<br />

Um diese anschauliche Deutung zu verifizieren, wollen wir numerisch feststellen, ob die<br />

Teilchen tatsächlich antikorreliert sind. Dazu messen wir die Dichte-Zweipunktfunktion<br />

c(r) = 〈s i s i+r 〉, wobei der Wert des Index i wegen der räumlichen Translationsinvarianz<br />

keine Rolle spielt. Per Defintion ist diese Korrelationsfunktion stets positiv. Bestimmt<br />

man diese Zweipunktfunktion zu einem gegebenen Zeitpunkt t, so wird man <strong>für</strong> sehr<br />

große Abstände r erwarten, dass die Wahrscheinlichkeit, an diesen Punkten Teilchen zu<br />

finden, unkorreliert ist, also faktorisiert:<br />

lim c(r) = lim 〈s is i+r 〉 = lim 〈s i 〉〈s i+r 〉 = (〈s i 〉) 2 = ρ(t) 2 (6.10)<br />

r→∞ r→∞ r→∞<br />

Bei großen Abständen wird man also eine Konstante erwarten, die gleich dem Quadrat der<br />

mittleren Dichte ist. Für kleine Abstände r wird die Zweipunktfunktion jedoch von diesem<br />

Wert abweichen. Abweichungen nach oben bezeichnet man als (positive) Korrelationen,<br />

Abweichungen nach unten als Antikorrelationen.<br />

Bemerkung: Um Korrelationen <strong>und</strong> Antikorrelationen am Vorzeichen unterscheiden zu<br />

können, zieht man häufig die asymptotische Konstante ab <strong>und</strong> definiert so den sogenannten<br />

zusammenhängenden Anteil (connected part) der Korrelationsfunktion<br />

〈s is i+r〉 conn. = 〈s is i+r〉 − 〈s i〉〈s i+r〉.<br />

Die Bezeichnung ’zusammenhängend’ bezieht sich dabei auf die entsprechende Struktur<br />

von Feynman-Graphen in Feldtheorien.<br />

Der rechte Graph in Abb. 6.14 zeigt die Zweipunktkorrelationsfunktion nach einer Simulation<br />

von 2000 Zeitschritten mit räumlicher Mittelung über 5 × 10 5 Gitterplätze. Trotz<br />

etwa 10-minütiger Rechenzeit sind die Fluktuationen noch erheblich. Dennoch bestätigt<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.6 Aufgaben 109<br />

das Ergebnis die Existenz von Antikorrelationen <strong>für</strong> kleine r <strong>und</strong> den crossover zu einem<br />

konstanten Wert. Man kann aus den Daten schließen, dass die Korrelationslänge nach<br />

2000 Zeitschritten in der Größenordnung von knapp 100 Gitterplätzen liegt.<br />

6.5.4 Exakte Lösung<br />

Erst 1995 gelang es, das Koagulationsmodell in einer Dimension mit zufällig-sequentieller<br />

Dynamik exakt zu lösen [9]. Zur Lösung gelangt man durch Betrachtung der Verteilungsfunktion<br />

<strong>für</strong> leere Intervalle (empty-interval distribution functions) I l , welche die<br />

Wahrscheinlichkeit angeben, dass ein zufällig auf der Kette ausgewähltes Intervall von<br />

l aufeinanderfolgenden Gitterplätzen keine Teilchen enthält. Man kann zeigen, dass die<br />

Master-Gleichung des Prozesses in dieser Basis als<br />

∂ t I l (t) = I l−1 (t) − I l (t)<br />

} {{ }<br />

Gewinne<br />

− I l (t) + I l+1 (t)<br />

} {{ }<br />

Verluste<br />

(6.11)<br />

geschrieben werden kann, wobei I 0 (t) ≡ 1. Die Teilchendichte ist dann einfach durch<br />

ρ(t) = 1 − I 1 (t) gegeben. Geht man nun in den Kontinuumlimes über, erhält man die<br />

Differentialgleichungen<br />

(∂ t − ∂l 2 ) I(l, t) = 0 , I(0, t) = 1 , (6.12)<br />

wobei ρ(t) = ∂ l I(l, t)| l=0<br />

ist. Diese Gleichung hat die Form einer Diffusionsgleichung (5.26).<br />

Deren Lösung impliziert, dass ρ(t) asymptotisch wie t −1/2 zerfällt, womit die experimentelle<br />

<strong>und</strong> numerische Beobachtung bewiesen ist. Für endliche Zeiten gibt es allerdings<br />

kleine Abweichungen, die auch deutlich in den numerischen Daten zu sehen sind.<br />

6.5.5 Dimensionsabhängigkeit<br />

Die skizzierte exakte Lösung ist nur in einer räumlichen Dimension korrekt. In höheren<br />

Dimensionen erhält man dagegen<br />

⎧<br />

⎨ t −1/2 <strong>für</strong> d = 1<br />

ρ(t) ∼ log(t)/t <strong>für</strong> d = 2<br />

(6.13)<br />

⎩<br />

1/t <strong>für</strong> d > 2 .<br />

Offenbar ist die Meanfield-Approximation in d > 2 Dimensionen korrekt, während d = 2<br />

ein Grenzfall ist, <strong>für</strong> den man Meanfield-Verhalten kombiniert mit einer logarithmischen<br />

Korrektur erhält. Diese Grenzdimension bezeichnet man als obere kritische Dimension d c .<br />

Diese Situation ist paradigmatisch <strong>für</strong> Reaktions-Diffusionsprozesse: Während in niedrigen<br />

Dimensionen Korrelationseffekte einen erheblichen Einfluss haben <strong>und</strong> sogar die<br />

Exponenten verändern können, ist in genügend hohen Dimensionen die diffusive Durchmischung<br />

so gut, dass die Teilchen tatsächlich weitgehend unkorreliert <strong>und</strong> homogen<br />

verteilt sind, womit die Voraussetzungen <strong>für</strong> die Meanfield-Näherung erfüllt sind.<br />

6.6 Aufgaben<br />

Aufgabe 6.17<br />

(Straßenverkehr)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


110 Vielteilchensysteme <strong>und</strong> Reaktions-Diffusionsprozesse<br />

Die Bewegung von Fahrzeugen auf einem einspurigen Kreis läßt sich auf stark vereinfachte<br />

Weise durch einen zellulären Automaten beschreiben. Dazu wird der Kreis in N<br />

Abschnitte unterteilt. In jedem dieser Abschnitte befindet sich maximal eines von M ≤ N<br />

Fahrzeugen. Während des Zeitschritts t → t + 1 rücken diejenigen Fahrzeuge, die einen<br />

freien Abschnitt vor sich haben, mit der Wahrscheinlichkeit p um jeweils einen Abschnitt<br />

vor. Simulieren Sie diesen Prozess <strong>für</strong> p = 1 2<br />

<strong>und</strong> bestimmen Sie das sogenannte F<strong>und</strong>amentaldiagramm,<br />

indem Sie <strong>für</strong> hinreichend große N den zeitlich gemittelten Strom der<br />

Fahrzeuge 〈j〉 bestimmen <strong>und</strong> als Funktion der Fahrzeugdichte ρ = M/N auftragen.<br />

Aufgabe 6.18<br />

(Mastergleichung)<br />

Stellen Sie <strong>für</strong> den Koagulations-Dekoagulationsprozess<br />

- Koagulation AA → ∅A <strong>und</strong> AA → A∅ mit Rate λ<br />

- Dekoagulation ∅A → AA <strong>und</strong> A∅ → AA mit Rate µ<br />

- Diffusion ∅A ↔ A∅ mit Rate D<br />

mit zufällig-sequentieller Dynamik auf einer eindimensionalen Kette mit 3 Plätzen <strong>und</strong><br />

periodischen Randbedingungen die Mastergleichung auf. Bestimmen Sie mit Hilfe von<br />

Mathematica <strong>für</strong> λ = D = 1 <strong>und</strong> µ = 0.5 durch numerische Diagonalisierung des<br />

Liouville-Operators die Relaxationszeiten des Systems.<br />

Aufgabe 6.19<br />

(Finite-size Scaling)<br />

Der eindimensionale Koagulationsprozess 2A → A ist asymptotisch invariant unter Reskalierung<br />

• der Länge ⃗r → Λ⃗r<br />

• der Zeit t → Λ z t<br />

• der Teilchendichte ρ → Λ χ ρ<br />

mit dem Dichteexponenten χ = −1 <strong>und</strong> dem dynamischen Exponenten z = 2. Ziel der<br />

Aufgabe ist es, den Koagulationsprozess mit endlicher Systemgröße L <strong>und</strong> periodischen<br />

Randbedingungen zu simulieren <strong>und</strong> dabei die Teilchendichte ρ(L, t) über viele Abläufe<br />

gemittelt zu bestimmen. Wie Sie sehen werden, geht dabei das anfängliche algebraische<br />

Zerfallsgesetz ρ(t) ∼ t −1/2 wegen der endlichen Systemgröße nach einer gewissen Zeit in<br />

ein anderes Verhalten über. Solche finite-size-Effekte skalieren mit den Systemparametern<br />

<strong>und</strong> lassen sich deshalb gut kontrollieren.<br />

(a) Drücken Sie ρ(L, t) unter Ausnutzung der Skaleninvarianz durch eine Funktion mit<br />

nur einem Argument aus, indem Sie Λ := 1/L setzen <strong>und</strong> annehmen, dass L wie<br />

eine Länge skaliert.<br />

(b) Simulieren Sie den eindimensionalen Koagulationssprozess <strong>für</strong> die folgenden Systemgrößen<br />

L bis zur Zeit t max = L 2 :<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


6.6 Aufgaben 111<br />

L t max<br />

16 256<br />

32 1024<br />

64 4096<br />

128 16384 (optional)<br />

256 65536 (optional)<br />

<strong>und</strong> messen Sie die Teilchendichte ρ(L, t) gemittelt über hinreichend viele unabhängige<br />

Simulationsabläufe, so dass Sie einigermassen glatte Kurven erhalten (Achtung:<br />

Die Simulationszeiten <strong>für</strong> L = 128, 256 können lang werden).<br />

(c) Führen Sie wie in der Vorlesung besprochen einen Datenkollaps dieser Kurven in<br />

doppellogarithmischer Darstellung gemäß der in (a) ermittelten Skalenform durch.<br />

(d) Wie groß muss Ihr System mindestens sein, damit bei einer (auf Ihrem Computer<br />

nicht realisierbaren) Simulationszeit von 10 20 Zeitschritten noch keine finitesize-Effekte<br />

sichtbar werden, also noch keine nennenswerten Abweichungen vom<br />

Potenzgesetz ρ(t) ∼ t −1/2 zu erwarten sind ?<br />

(e) Wie <strong>und</strong> warum unterscheiden sich die beobachteten finite-size-Effekte von denen<br />

der in der Vorlesung untersuchten kritischen gerichteten Perkolation?<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7 Phasenübergänge in<br />

Reaktions-Diffusionsprozessen<br />

Der Begriff des Phasenübergangs beschreibt kollektive Phänomene in Vielteilchensystemen,<br />

die mit einer abrupten Veränderung der Eigenschaften des Systems bei nur geringen<br />

Veränderungen der Außenbedingungen einhergehen. Man spricht dabei von unterschiedlichen<br />

Phasen, die am Phasenübergang ineinander übergehen. Beispielsweise geht reines<br />

Wasser bei Normaldruck am Siedepunkt bei 100 ◦ C von der flüssigen in die gasförmige<br />

Phase über. Ebenso verlieren Permanentmagnete bei einer bestimmten kritischen<br />

Temperatur ihr Magnetfeld. Auch in der Kosmologie gibt es Phasenübergänge. So rekombinierten<br />

etwa 500000 Jahre nach dem Urknall die bis dahin freien Ladungsträger<br />

zu elektrisch neutralen Atomen, das Universum wurde schlagartig durchsichtig <strong>und</strong> das<br />

damals emittierte Licht gibt es noch heute in Form des Mikrowellenhintergr<strong>und</strong>s.<br />

Phasenübergänge werden durch einen oder mehrere Kontrollparameter (z.B. Temperatur)<br />

gesteuert, wobei der Phasenübergang bei bestimmten kritischen Werten des Kontrollparameters<br />

stattfindet. Die unterschiedlichen Phasen werden durch einen sogenannten<br />

Ordnungsparameter (z.B. Aggregatszustand oder Magnetfeld) charakterisiert. Zur Darstellung<br />

von Phasenübergängen benutzt man Phasendiagramme, wobei die jeweilge Art<br />

der Phase über die Kontrollparameter aufgetragen wird. Phasenübergänge finden an den<br />

Grenzen dieser Phasen statt. Ist der Ordnungsparameter stetig im Phasenübergang, so<br />

spricht man von einem kontinuierlichen Phasenübergang oder auch von einem Phasenübergang<br />

zweiter Ordnung 1 . Ist der Ordnungsparameter allerdings unstetig, zeigt also<br />

einen endlichen Sprung, so spricht man von einem diskontinuierlichen Phasenübergang<br />

bzw. einem Phasenübergang erster Ordnung.<br />

Während Phasenübergänge erster Ordnung in der Natur häufiger anzutreffen sind, befasst<br />

sich die Mehrzahl der Veröffentlichungen mit Phasenübergängen zweiter Ordnung. Während<br />

nämlich diskontinuierliche Phasenübergänge stark von den jeweiligen System- oder<br />

Modelleigenschaften abhängen, können kontinuierliche Phasenübergänge in sehr verschiedenen<br />

Systemen in ihren langreichweitigen Eigenschaften identisch sein. Solche universellen<br />

Eigenschaften erlauben es, Äquivalenzklassen von Phasenübergängen zu identifizieren<br />

<strong>und</strong> wecken damit das Interesse der theoretischen <strong>Physik</strong>. Ziel ist es dabei, alle möglichen<br />

Universalitätsklassen unter gegebenen Rahmenbedingungen zu klassifizieren. Dabei stellt<br />

sich heraus, dass die jeweilige Universalitätsklasse im wesentlichen durch die Symmetrien<br />

des Systems festgelegt wird <strong>und</strong> durch einen Satz sogenannter kritischer Exponenten gekennzeichnet<br />

werden kann. Mit Universalitätsklassen verhält es sich also ähnlich wie bei<br />

1 Die sog. Ehrenfest-Klassifikation von Phasenübergängen erster, zweiter, dritter Ordnung usw., abhängig<br />

davon ob die erste zweite oder höhere partielle Ableitung eines thermodynamischen Potentials<br />

unstetig ist, hat sich als unzureichend herausgestellt, da sie auf Molekularfeldtheorien beruht <strong>und</strong><br />

thermische Fluktuationen nicht berücksichtigt, die jedoch am kritischen Punkt nicht vernachlässigbar<br />

sind.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


114 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

Elementarteilchen, die durch wenige Parameter <strong>und</strong> ihre Symmetriegruppe vollständig<br />

charakterisiert werden können.<br />

Das klassische Standardbeispiel eines Phasenübergangs zweiter Ordnung ist der Magnetisierungsübergang<br />

in Ferromagneten. Dazu benötigt man aber Gr<strong>und</strong>lagen in der statistischen<br />

<strong>Physik</strong> des thermodynamischen Gleichgewichts. Viel einfacher ist dagegen das<br />

folgende Modellsystem, das in der Literatur als gerichtete Perkolation bekannt ist.<br />

7.1 Gerichtete Perkolation<br />

Der Ausdruck Perkolation (lat. per=durch <strong>und</strong> colare=fließen,leiten) bezeichnet das Hindurchleiten<br />

einer Flüssigkeit durch ein poröses Medium <strong>und</strong> wird oft im Zusammenhang<br />

mit Filtrierungsprozessen verwendet. Ein Filter ist ein poröses Material aus Zellstoff, Papier,<br />

Sand oder Aktivkohle, mit dem man Schwebeteilchen <strong>und</strong> andere Verunreinigungen<br />

zurückhalten kann. Das zurückgehaltene Material sammelt sich in den Poren des Filters<br />

an, so dass dieser nach einiger Zeit verstopft <strong>und</strong> ausgetauscht werden muss. Es ist deshalb<br />

von Interesse, den Übergang vom durchlässigen (perkolierenden) in den verstopften<br />

(nicht perkolierenden) Zustand zu verstehen.<br />

Mit dieser Motivation hat man verschiedene Modelle <strong>für</strong> Perkolation entworfen. In solchen<br />

Modellen werden die Poren durch die Plätze (sites) eines Gitters repräsentiert.<br />

Benachbarte Gitterplätze sind dabei durch Kanäle (bonds) miteinander verb<strong>und</strong>en. Um<br />

die Unregelmäßigkeit eines echten Filtermaterials nachzubilden, wird dabei angenommen,<br />

dass diese Kanäle mit der Wahrscheinlichkeit p durchlässig <strong>und</strong> andernfalls <strong>und</strong>urchlässig<br />

sind. Man stellt sich dann die Frage, wie sich der Parameter p, der die mikroskopische<br />

Durchlässigkeit bestimmt, auf die makroskopische Durchlässigkeit des Materials auswirkt.<br />

Es zeigt sich dabei, dass es in einem genügend großen System zu einem Phasenübergang<br />

von einem makroskopisch durchlässigen in einen verstopften Zustand kommt. Dieser<br />

Phasenübergang tritt bei einer wohldefinierten kritische Schwelle p c auf. Wie wir<br />

sehen werden, sind die langreichweitigen Eigenschaften eines solchen Perkolationsmodells<br />

universell, d.h. sie sind durch Symmetrien bestimmt, hängen jedoch nicht von den<br />

mikroskopischen Details des Modells ab. Die Situation ist ähnlich wie bei einer Zufallsbewegung,<br />

die in der Regel asymptotisch durch eine Normalverteilung beschrieben wird,<br />

unabhängig von der Art der Sprünge.<br />

7.1.1 Isotrope vs. gerichtete Perkolation<br />

Es gibt zwei gr<strong>und</strong>sätzlich verschiedene Versionen von Perkolationsmodellen. In isotroper<br />

Perkolation kann sich das Medium (Wasser) durch offene Kanäle in alle Richtungen<br />

ausbreiten, während in gerichteter Perkolation das Medium nur entlang einer vorgegebenen<br />

räumlichen Richtung fließen kann. In einem porösen Medium könnte eine solche<br />

gerichtete Ausbreitung beispielsweise durch ein Gravitationsfeld hervorgerufen werden.<br />

Wie man in Abbildung 7.1 sehen kann, erhält man unterschiedliche Cluster.<br />

Die Vorzugsrichtung hat eine strikte Ordnung des Clusters nach Ursache <strong>und</strong> Wirkung<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.1 Gerichtete Perkolation 115<br />

Isotrope Perkolation<br />

Gerichtete Perkolation<br />

Abbildung 7.1: Ungerichtete (isotrope) <strong>und</strong> gerichtete Perkolation. Die Abbildung zeigt ein endliches<br />

Gitter mit einer bestimmten Konfiguration von durchlässigen <strong>und</strong> <strong>und</strong>urchlässigen<br />

Kanälen. In der Mitte wird nun eine Flüssigkeit injiziert. Links: Im isotropen Fall<br />

perkoliert das Wasser durch die offenen Kanäle in jede beliebige Richtung <strong>und</strong> erzeugt<br />

dabei einen Cluster benetzter Poren. Rechts: Bei gerichteter Perkolation kann das<br />

Wasser nur entlang einer Vorzugsrichtung perkolieren, was zu einem kleineren länglichen<br />

Cluster führt. Diese Vorzugsrichtung kann als zeitliche Dimension interpretiert<br />

werden.<br />

zur Folge, so dass die ausgezeichnete Koordinate als Zeit interpretiert werden kann. So<br />

kann man beispielsweise in einem gerichteten Perkolationsprozess, in dem die Kanäle mit<br />

Wahrscheinlichkeit p geöffnet sind, die horizontalen Reihen mit einem zeitlichen Index<br />

t markieren (siehe Abb. 7.2). Ist also die Konfiguration benetzter Zellen zum Zeitpunkt<br />

t bekannt, kann man die nächste Konfiguration zum Zeitpunkt t + 1 durch einfache<br />

probabilistische Regeln bestimmen.<br />

7.1.2 Interpretation als Reaktions-Diffusionsprozess<br />

Interpretiert man nun benetzte (=aktive) Gitterplätze als Teilchen A <strong>und</strong> unbenetzte<br />

(=inaktive) Gitterplätze als Leerstellen ∅, so können diese probabilistischen Regeln als<br />

lokale Dynamik eines Reaktions-Diffusionsprozesses interpretiert werden. Sind z.B. beide<br />

Kanäle eines aktiven Platzes blockiert, so endet die Trajektorie des Teilchens, was<br />

einer spontanen Teilchenvernichtung A → ∅ entspricht. Ist nur einer der beiden Kanäle<br />

durchlässig, springt das Teilchen mit gleicher Wahrscheinlichkeit nach links <strong>und</strong> nach<br />

rechts, führt also effektiv einen Diffusionsprozess aus. Wenn beide Kanäle offen sind,<br />

kommt es zu einer Teilchenvermehrung A → 2A. Diese wird aber begrenzt durch die<br />

Tatsache, dass es pro Gitterplatz nur zwei Zustände (benetzt <strong>und</strong> unbenetzt) gibt, dass<br />

sich also an jedem Gitterplatz höchstens ein Teilchen befinden darf. Dies kann man<br />

in einem Reaktions-Diffusionsmodellen dadurch berücksichtigen, dass zwei Teilchen instantan<br />

zu einem verschmelzen. Eine solche Verschmelzung 2A → A bezeichnet man<br />

als Koaleszenz. Zusammenfassend wird also gerichtete Perkolation durch das effektive<br />

Reaktions-Diffusionsschema<br />

• spontane Teilchenvernichtung A → ∅<br />

• Vermehrung<br />

A → 2A<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


116 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

t<br />

Startpunkt<br />

t N(t)<br />

0 1<br />

1 1<br />

2 2<br />

3 1<br />

4 2<br />

5 2<br />

6 3<br />

7 3<br />

Abbildung 7.2: Gerichtete Perkolation interpretiert als ein stochastischer zeitlicher Prozess. Der abgebildete<br />

Cluster startet mit nur einem benetzten Platz am Ursprung <strong>und</strong> entwickelt sich<br />

dann als Sequenz von Konfigurationen benetzter Plätze entlang horizontaler Reihen,<br />

die mit dem zeitlichen Index t durchnummeriert sind. Eine interessante Größe ist die<br />

Anzahl N(t) benetzter Gitterplätze zur Zeit t.<br />

• Koaleszenz<br />

2A → A<br />

in Kombination mit Diffusion ∅A ↔ A∅, wie in Abb. 7.3 zu sehen ist. Wie wir sehen<br />

werden, zeigt jeder Prozess, der dem Geist dieses Reaktions-Diffusionsschemas folgt, einen<br />

Phasenübergang, der zur Universalitätklasse der gerichteten Perkolation gehört.<br />

7.1.3 Algorithmische Implementierung<br />

Mit der dynamischen Interpretation ist es sehr einfach, gerichtete Perkolation auf einem<br />

Rechner zu simulieren. Um einen Zeitschritt von t nach t + 1 auszuführen, iteriert man<br />

über die aktiven (benetzten) Gitterplätze entlang der Reihe t <strong>und</strong> aktiviert die nächsten<br />

Nachbarn in der Reihe t + 1 unabhängig voneinander mit Wahrscheinlichkeit p. Ein<br />

nicht-optimierter Code zur Erzeugung der Cluster ist oft weniger als eine Seite lang. Das<br />

folgende Programm berechnet beispielsweise den Mittelwert der Teilchenanzahl N(t) <strong>und</strong><br />

schreibt das Ergebnis in eine Datei namens N.dat:<br />

const int T=1000; // number of updates<br />

const int R=10000; // number of independent runs<br />

const double p=0.6447001; // percolation probability<br />

int main (void) {<br />

int s[T][T],N[T],i,t,r;<br />

// array of sites, N(t), indices<br />

for (t=0; t


7.1 Gerichtete Perkolation 117<br />

for (i=0; i


118 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

100<br />

<br />

10<br />

1<br />

p=0.7<br />

p=0.65<br />

p=0.64<br />

p=0.6447<br />

p=0.6<br />

0,1<br />

1 10 100 1000<br />

t<br />

Abbildung 7.5: Mittlere Teilchenanzahl 〈N(t)〉 als Funktion der Zeit t <strong>für</strong> verschiedene Perkolationswahrscheinlichkeiten<br />

p.<br />

Darstellung als Gerade, was einem Potenzgesetz entspricht. In der Tat findet man,<br />

dass 〈N(t)〉 am kritischen Punkt <strong>für</strong> große t wie t θ ansteigt, wobei θ ≈ 0.302 nichts<br />

anderes als die Steigung der Geraden im log-log plot ist. Dieses Potenzgesetz ist vor<br />

allem <strong>für</strong> große t mit hoher Genauigkeit erfülllt, während es <strong>für</strong> kleinere Werte von<br />

t, insbesondere während der ersten Zeitschritte, zu Abweichungen kommt. Diese sogenannten<br />

Transienten werden durch die diskrete Struktur des Gitters verursacht<br />

<strong>und</strong> hängen damit von nicht-universellen Details des Modells ab.<br />

Ein asymptotisches Potenzgesetz wird oft mit Hilfe des Symbols ∼ ausgedrückt 2 , das<br />

so viel wie ‘asymptotisch proportional’ bedeutet <strong>und</strong> deshalb transiente Abweichungen<br />

sowie die Proportionalitätskonstante mit Absicht ignoriert. Im obigen Fall schreibt man<br />

also<br />

〈N(t)〉 ∼ t θ . (7.1)<br />

Der Exponent θ ≈ 0.302 ist ein sogenannter kritischer Exponent, der in allen Realisierungen<br />

von DP den gleichen Wert besitzt. Diese Universalität <strong>und</strong> die extrem einfache<br />

Modelldefinition sind wohl die Hauptgründe da<strong>für</strong>, warum DP eine so starke Faszination<br />

ausstrahlt.<br />

Die unterschiedlichen Eigenschaften von 〈N(t)〉 unterhalb <strong>und</strong> oberhalb der kritischen<br />

Schwelle können als Kriterium zur iterativen Approximation des kritischen Punktes herangezogen<br />

werden. Dazu bestimmt man zunächst eine unter- <strong>und</strong> eine überkritische<br />

Schranke bei einer Simulationszeit von einigen Minuten, z.B. 0.64 < p c < 0.65 in dem<br />

oben diskutierten Modell. Dieses Intervall wird dann halbiert <strong>und</strong> eine Simulation am<br />

Halbierungspunkt (z.B. p = 0.645) durchgeführt. Wenn die entsprechende Kurve in einem<br />

doppelt-logarithmischen Graphen nach unten (oben) abweicht, wird das Teilungsverfahren<br />

iterativ im oberen (unteren) Intervall fortgesetzt. Zur Bestimmung solcher Abweichungen<br />

ist übrigens das menschliche Auge sehr gut geeignet. Ist keine Krümmung zu<br />

erkennen, so ist die Simulationszeit entsprechend zu erhöhen. Sind dagegen die Fluktuationen<br />

zu stark, muss die Anzahl der Läufe, über die gemittelt wird, erhöht werden. Das<br />

Verfahren wird so lange fortgesetzt, bis der Rechenaufwand zu groß wird. Die Fehlergrenzen<br />

der Abschätzung sind durch das jeweils letzte Intervall festgelegt. Der Exponent<br />

2 Mathematiker benutzen dieses Symbol <strong>für</strong> ‘asymptotisch gleich’ statt ‘asymptotisch proportional’.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.1 Gerichtete Perkolation 119<br />

Infektion:<br />

Heilung:<br />

Abbildung 7.6: Gerichtete Perkolation als epidemischer Prozess (siehe Text).<br />

ergibt sich aus der Steigung der Geraden.<br />

Bemerkung: Um die Fehlergrenzen <strong>für</strong> den kritischen Exponenten, also <strong>für</strong> die Steigung<br />

der Geraden, zu bestimmen, darf man sich NIE auf den χ 2 -Fehler einer Standardregression<br />

verlassen. Für die in Abb. 7.5 gezeigten Daten würde eine lineare Regression mit xmgrace<br />

das Resultat θ = 0.3017(2) ergeben, der beste Literaturwert θ = 0.313686(8) liegt jedoch<br />

weitab dieser Fehlergrenzen. Eine zuverlässige Abschätzung des Fehlers erhält man durch<br />

Vergleich der Steigungen in der höchsten Dekade gemessen an der unteren <strong>und</strong> oberen<br />

Schranke von p c. Als Faustregel gilt, dass der relative Fehler eines Exponenten mindestens<br />

10× höher als der relative Fehler der kritischen Schwelle ist.<br />

Es sollte betont werden, dass das beschriebene Verfahren voraussetzt, dass der Phasenübergang<br />

asymptotisch durch ein sauberes Potenzgesetz beschrieben wird. Für DP ist<br />

das in der Tat der Fall. In anderen Modellklassen ist das allerdings nicht selbstverständlich,<br />

so können zum Beispiel logarithmische Korrekturen überlagert sein, so dass die<br />

tatsächliche kritische Kurve leicht gekrümmt ist. Da man mit dem oben beschriebenen<br />

Verfahren aber nach einer Geraden sucht, ist man möglicherweise der Versuchung erlegen,<br />

diese Krümmung durch Veränderung des Kontrollparameters zu ’kompensieren’, was zu<br />

schwer einschätzbaren systematischen Fehlern führt. 3<br />

7.1.4 Epidemische Prozesse<br />

Die gerichtete Perkolation wird auch oft als einfaches Modell <strong>für</strong> die Ausbreitung von Epidemien<br />

herangezogen. Dabei befinden sich auf den Gitterplätzen Individuen, die entweder<br />

ges<strong>und</strong> (∅) oder infiziert (A) sind. Der Prozess A → 2A entspricht dabei der Ansteckung<br />

des nächsten Nachbarn, während Individuen durch den Prozess A → ∅ wieder ges<strong>und</strong><br />

werden (siehe Abb. 7.6). Bei großer Ansteckungsrate kann sich die Infektion über die gesamte<br />

Population ausbreiten, während sie bei kleiner Ansteckungsrate räumlich begrenzt<br />

bleibt. Der Phasenübergang in einem solchen Modell gehört zur Universalitätsklasse der<br />

gerichteten Perkolation.<br />

Während Forscher, die oft mit zellulären Automaten arbeiten, das oben besprochene<br />

bond-Perkolationsmodell mit paralleler Dynamik bevorzugen, favorisieren Epidemiker<br />

3 Einen solchen Fehler konnten wir in der Testphase des CIP-Pools mit zwei Wochen Rechenzeit auf<br />

allen 80 CPU’s aufdecken, Details dazu finden Sie in [10].<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


120 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

<strong>und</strong> auch Mathematiker eine andere Realisierung der gerichteten Perkolation, die als<br />

Kontaktprozess bekannt ist. Der Kontaktprozess ist auf einem d-dimensionalen Gitter<br />

definiert, dessen Plätze entweder aktiv (s i (t) = 1) oder inaktiv (s i (t) = 0) sind. Im<br />

Gegensatz zum obigen Modell benutzt der Kontaktprozess eine zufällig-sequentielle Dynamik,<br />

d.h. die elementaren Prozesse (Ansteckung <strong>und</strong> Ges<strong>und</strong>ung) treten spontan mit<br />

gewissen Raten auf. Obwohl sich der Kontaktprozess in mikroskopischer Hinsicht erheblich<br />

von dem oben eingeführten bond-DP-Modell unterscheidet, zeigt er ebenfalls<br />

einen Phasenübergang mit asymptotisch identischen Eigenschaften. Wie wir sehen werden,<br />

gehören also die Phasenübergänge in beiden Modellen zur Universalitätsklasse der<br />

gerichteten Perkolation.<br />

Auf einem Rechner kann der d+1-dimensionale Kontaktprozess folgendermaßen implementiert<br />

werden. Für jeden Aktualisierungsversuch wird zunächst ein Gitterplatz zufällig<br />

ausgewählt. Je nachdem, ob dieser Platz besetzt (infiziert) ist <strong>und</strong> in Abhängigkeit von<br />

der Anzahl der besetzten Nachplätze n i (t) = ∑ j∈ s j(t) wird diesem Platz ein neuer<br />

Zustand s i (t + dt) = 0, 1 mit bestimmten Übergangsraten w[s i (t) → s i (t + dt), n i (t)]<br />

zugewiesen. Diese Übergangsraten sind definiert durch:<br />

w[0 → 1, n] = λn/2d , (7.2)<br />

w[1 → 0, n] = 1 . (7.3)<br />

Dabei spielt der Parameter λ die gleiche Rolle wie die Öffnungswahrscheinlichkeit p im<br />

bond-DP-Modell. Wie zuvor hängt die kritische Schwelle λ c von der Dimension d ab. Die<br />

zur Zeit beste Abschätzung wird mit λ c = 3.29785(8) [11] angegeben.<br />

Um von Raten (Wahrscheinlichkeiten pro Zeiteinheit) zu den im Programmcode benötigten<br />

Übergangswahrscheinlichkeiten zu gelangen, muss man die Raten geeignet normieren,<br />

so dass sie alle kleiner oder gleich 1 sind. Am einfachsten ist es, die Raten durch die Summe<br />

aller Raten, also in diesem Fall durch 1 + λ, zu dividieren. Jeder Update entspricht<br />

dann einem Zeitinkrement von 1/(1 + λ).<br />

In einer räumlichen Dimension kann der Kontaktprozess mit folgendem Programmfragment<br />

realisiert werden. Zunächst definiert man sich die Systemgröße, das Gitter <strong>und</strong><br />

eine Zeitvariable, die wegen der zufällig-sequentiellen Updates eine Fließkommazahl sein<br />

muss.<br />

const int L=128;<br />

int s[L];<br />

double t;<br />

// Systemgröße<br />

// die eindimensionale Kette<br />

// <strong>Physik</strong>alische Zeit<br />

Der Updateschritt folgt dann der in Abb. 7.7 dargestellten Dynamik: Ein Platz auf der<br />

Kette wird zufällig ausgewählt. Wenn dieser besetzt ist, wird das Teilchen mit Wahrscheinlichkeit<br />

1/(1 + λ) entfernt, andernfalls wird an einem der beiden Nachbarplätze ein<br />

t<br />

t+dt<br />

Infektion<br />

Selbstheilung<br />

λ/2 λ/2 1<br />

Abbildung 7.7: Dynamik des 1+1-dimensionalen Kontaktprozesses.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.1 Gerichtete Perkolation 121<br />

Teilchen erzeugt, sofern dieser Platz noch frei ist:<br />

void Update (double lambda)<br />

{<br />

int i = rndint(L);<br />

if (s[i])<br />

// wenn dort ein Teilchen ist<br />

{<br />

if (rnd() λ c ) eines sehr großen Systems mit einem<br />

anfangs voll besetzten Gitter wird sich diese Dichte auf einen stationären Wert ρ stat > 0<br />

einpendeln. Nähert man sich dem kritischen Punkt, an dem der Phasenübergang stattfindet,<br />

so geht diese Dichte gegen Null <strong>und</strong> folgt dabei einem Potenzgesetz<br />

i<br />

ρ stat ∼ (p − p c ) β , (7.5)<br />

wobei β ein kritischer Exponent ist. Für p > p c ist der sich einstellende stationäre Zustand<br />

durch eine bestimmte Korrelationslänge ξ ⊥ <strong>und</strong> eine Korrelationszeit ξ ‖ charakterisiert.<br />

Diese beiden Korrelationsskalen sind im Allgemeinen verschieden <strong>und</strong> sind in Abb. 7.8<br />

anschaulich dargestellt.<br />

Nahe am kritischen Punkt divergieren die beiden Korrelationsskalen algebraisch (d.h. als<br />

Potenzgesetz)<br />

ξ ⊥ ∼ (p − p c ) −ν ⊥<br />

, ξ ‖ ∼ (p − p c ) −ν ‖<br />

(7.6)<br />

wobei ν ⊥ <strong>und</strong> ν ‖ zwei weitere Exponenten sind. Deren Verhältnis<br />

z = ν ‖ /ν ⊥ (7.7)<br />

wird als dynamischer Exponent bezeichnet, da er beschreibt, wie die zeitliche Korrelationsskala<br />

ξ ‖ ∼ ξ⊥ z als Funktion der räumlichen Korrelationslänge am kritischen Punkt<br />

wächst. In einem diffusionsartigen Prozess wie z.B. einem random walk ist z = 2, während<br />

an einem Phasenübergang wie dem der gerichteten Perkolation im Allgemeinen z < 2 ist.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


122 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

ξ<br />

ξ<br />

ξ ||<br />

ξ ||<br />

Abbildung 7.8: Korrelationsskalen ξ ⊥ <strong>und</strong> ξ ‖ .<br />

Exponent d = 1 d = 2 d = 3 d > 4<br />

β 0.276486(8) 0.584(4) 0.81(1) 1<br />

ν ⊥ 1.096854(4) 0.734(4) 0.581(5) 1/2<br />

ν ‖ 1.733847(6) 1.295(6) 1.105(5) 1<br />

1.580745(10) 1.76(3) 1.90(1) 2<br />

δ = β/ν ‖ 0.159464(6) 0.451 0.73 1<br />

θ 0.313686(8) 0.230 0.12 0<br />

Tabelle 7.1: Werte der kritischen Exponenten in der gerichteten Perkolation.<br />

Man geht davon aus, dass die drei Exponenten (β, ν ⊥ , ν ‖ ) eine gegebene Universalitätsklasse<br />

vollständig charakterisieren <strong>und</strong> nur von der Dimension des Systems abhängen<br />

(siehe Tabelle 7.1). Alle anderen universellen Exponenten können durch einfache Formeln,<br />

sogennanten Skalenrelationen auf diese drei Standardexponenten zurückgeführt<br />

werden. Als Beispiel betrachten wir einen DP-Prozess, der mit einem einzigen aktiven<br />

Gitterplatz startet <strong>und</strong> einen Cluster erzeugt. Die mittlere Anzahl der aktiven Gitterplätze<br />

zum Zeitpunkt t,<br />

N(t) = 〈 ∑ s i (t)〉 (7.8)<br />

i<br />

wächst am kritischen Punkt wie<br />

N(t) ∼ t θ . (7.9)<br />

Dabei kann θ durch die sogenannte verallgemeinerte Hyperskalenrelation ausgedrückt<br />

werden:<br />

θ = dν ⊥ − 2β<br />

ν ‖<br />

. (7.10)<br />

7.2 Phänomenologische Skalentheorie<br />

Wir haben bereits an verschiedenen Beispielen gesehen, dass fraktale Strukturen durch<br />

Potenzgesetze charakterisiert werden. Solche Systeme bezeichnet man als skalenfrei (scale<br />

free), d.h. abgesehen von der makroskopischen Systemgröße <strong>und</strong> der mikroskopischen<br />

Gitterkonstante gibt es keine ausgezeichnete typische Länge im System. Ebenso gibt es<br />

abgesehen von der gesamten Simulationszeit <strong>und</strong> der mikroskopischen Update-Zeit keine<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.2 Phänomenologische Skalentheorie 123<br />

weitere typische Zeitskala im System. Beispiele sind DLA-Cluster, Sierpinski-Fraktale, der<br />

Annihilations- <strong>und</strong> Koagulationsprozess, sowie die gerichtete Perkolation am kritischen<br />

Punkt. Skalenfreiheit verbietet beispielsweise einen exponentiellen Zerfall einer Korrelationsfunktion,<br />

denn das Argument der Exponentialfunktion muss immer dimensionslos<br />

sein, also von der Form exp(r/r 0 ) sein, wobei r 0 aber eine ausgezeichnete Länge wäre,<br />

die es in einem skalenfreien System nicht gibt.<br />

Skaleninvariante Systeme können sehr erfolgreich durch eine phänomenologische Skalentheorie<br />

beschrieben werden. ‘Phänomenologisch’ bedeutet dabei, dass die Gültigkeit der<br />

Theorie bis auf wenige exakt lösbare Fälle nicht streng bewiesen werden kann, sondern<br />

vielmehr postuliert <strong>und</strong> dann numerisch verifiziert wird.<br />

7.2.1 Skaleninvarianz<br />

Ausgangspunkt der phänomenologischen Skalentheorie <strong>für</strong> Phasenübergänge wie den in<br />

der gerichteten Perkolation ist die Annahme, dass die makroskopischen (d.h. langreichweitigen)<br />

Eigenschaften eines Systems nahe am Phasenübergang unter einer Skalentransformation<br />

invariant ist. Konkret bedeuted dies, dass eine Reskalierung der Zeit-, Längen,-<br />

<strong>und</strong> Kontrollparameter<br />

∆ → a ∆, ⃗x → a −ν ⊥<br />

⃗x, t → a −ν ‖<br />

t, (7.11)<br />

zu einer Änderung des Ordnungsparameters (der Teilchendichte)<br />

ρ → a β ρ (7.12)<br />

führt, wobei a > 0 ein Skalenfaktor (Zoomfaktor) <strong>und</strong> ∆ = p − p c der Abstand vom<br />

kritischen Punkt ist. Es stellt sich heraus, dass eine solche postulierte Skaleninvarianz<br />

die Form von Funktionen stark einschränkt. Als Beispiel betrachteten wir den Zerfall der<br />

Dichte aktiver Gitterplätze ρ(t) bei einem anfangs voll besetzten Gitter am kritischen<br />

Punkt. Das obige Postulat führt hier auf die Gleichung<br />

a β ρ(t) = ρ(a −ν ‖<br />

t) . (7.13)<br />

Da der Zoomparameter a frei wählbar ist, darf man eine spezielle Wahl vornehmen. Wählt<br />

man a derart dass t a −ν ‖<br />

= 1 ist, erhält man ρ(t) = t −β/ν ‖ρ(1), also einen algebraischen<br />

Zerfall von der Form<br />

ρ(t) ∼ t −δ , δ = β/ν ‖ . (7.14)<br />

In einem endlichen System mit N = L d Gitterplätzen nahe am kritschen Punkt hängt<br />

die Dichte ρ(t, ∆, L) von drei Parametern ab. Eine analoge Rechnung führt hier auf die<br />

Bestimmungsgleichung<br />

a β ρ(t) = ρ(a −ν ‖<br />

t, a∆, a −ν ⊥<br />

L) , (7.15)<br />

denn L ist eine Länge <strong>und</strong> skaliert demzufolge wie ⃗x. Man erhält dann<br />

ρ(t, ∆, L) ∼ t −β/ν ‖<br />

f(∆ t 1/ν ‖<br />

, t d/z /L) . (7.16)<br />

Dabei hängt die Funktion f nur von zwei skaleninvarianten Quotienten ab. Die Funktion<br />

f ist universell, d.h. (bis auf Proportionalitätskonstanten) identisch <strong>für</strong> alle Modelle in<br />

der gleichen Universalitätsklasse, <strong>und</strong> wird deshalb auch als universelle Skalenfunktion<br />

bezeichnet.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


124 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

Bemerkung: Eine Funktion g(x 1, . . . , x n) mit der Eigenschaft g(x 1, . . . , x n) = af(ax 1, . . . , ax n)<br />

heisst homogen. Dementsprechend wird eine Funktion, die eine Bestimmungsgleichung von<br />

der Form (7.13) <strong>und</strong> (7.15) erfüllt, in der also die Skalenfaktoren mit individuellen Potenzen<br />

versehen sind, als verallgemeinerte homogene Funktion bezeichnet. Dabei kann durch<br />

spezielle Wahl des Skalenparameters einer der Funktionsparameter auf einen konstanten<br />

Wert gesetzt werden. Die Funktion g lässt sich damit ausdrücken als ein Potenzgesetz<br />

multipliziert mit einer Skalenfunktion, die von nur n − 1 skaleninvarianten Quotienten der<br />

Parameter abhängt.<br />

7.2.2 Universalität<br />

Wie bereits mehrfach erwähnt, ist die sogenannte Universalität von Phasenübergängen<br />

ein gr<strong>und</strong>legender Begriff. Mit diesem Begriff umschreibt man die Annahme, dass das<br />

kritische Verhalten von Systemen mit kontinuierlichen Phasenübergängen einer endlichen<br />

Anzahl möglicher Universalitätsklassen zugeordnet werden kann.<br />

Bemerkung: Für die Experten: Universalitätsklassen sind bestimmten Feldtheorien zugeordnet.<br />

Diese Feldtheorien werden durch die Symmetrien des Systems <strong>und</strong> die relevanten<br />

Terme im Wirkungsfunktional charakterisiert. Die mikroskopischen Details des Modells<br />

wie z.B. die konkrete Gitterstruktur führen dagegen zu Termen höherer Ordnung, die im<br />

feldtheoretischen Sinne irrelevant sind, also unter Reskalierung gegen Null gehen. Die Irrelevanz<br />

fast aller Terme mit Ausnahme einiger weniger relevanter Terme ist die Ursache <strong>für</strong><br />

Universalität.<br />

Die gerichtete Perkolation ist die wichtigste Klasse im Bereich der statistischen <strong>Physik</strong><br />

fernab vom Gleichgewicht. Sie tritt in unzähligen Modellen auf <strong>und</strong> ist in unzähligen<br />

Publikationen untersucht worden. Die extreme Robustheit dieser Klasse führten Janssen<br />

<strong>und</strong> Grassberger auf die sogenannte DP-Vermutung (DP conjecture). Diese besagt, dass<br />

ein System zur Universalitätsklasse der gerichteten Perkolation gehören sollte, sobald die<br />

folgenden Bedingungen erfüllt sind:<br />

1. Das Modell besitzt einen kontinuierlichen Phasenübergang von einer fluktuierenden<br />

aktiven Phase in einen absorbierenden fluktuationsfreien Zustand.<br />

2. Der Phasenübergang wird durch einen nicht-negativen einkomponentigen Ordnungsparameter<br />

charakterisiert (in der Regel die Dichte der aktiven Gitterplätze)<br />

3. Die Dynamik ist kurzreichweitig, Wechselwirkungen finden also nur lokal statt.<br />

4. Das System hat keine unkonventionellen Eigenschaften wie z.B. zusätzliche Symmetrien<br />

oder eingefrorene Unordnung 4 .<br />

Obwohl diese Vermutung nicht streng bewiesen ist, sind bislang keine Gegenbeispiele<br />

bekannt. Vielmehr scheint die gerichtete Perkolation sogar in Fällen zu existieren, bei<br />

denen eine oder mehrere dieser vier Bedinungen verletzt sind.<br />

4 Die Untersuchung von Systemen mit eingefrorener Unordnung (engl. quenched disorder) ist ein aktuelles<br />

Forschungsgebiet <strong>und</strong> geht über den Rahmen dieser Vorlesung hinaus.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.3 Andere stochastische Prozesse 125<br />

7.3 Andere stochastische Prozesse<br />

Die oben skizzierte phänomenologische Theorie der Skaleninvarianz ist nicht nur auf<br />

Reaktions-Diffusionsprozesse beschränkt, sondern in sehr vielen weiteren Fällen anwendbar.<br />

Als Beispiele wollen wir Wachstumsprozesse <strong>und</strong> das sogannte Wählermodell betrachten.<br />

7.3.1 Wachstumsprozesse<br />

Unter einem Wachstumsprozess versteht man ein<br />

vereinfachtes Modell <strong>für</strong> Oberflächenwachstum durch<br />

Deposition einzelner Atome bzw. Moleküle. Im Experiment<br />

gibt es verschiedene Realisierungsmöglichkeiten.<br />

In <strong>Würzburg</strong> wird vor allem Molekularstrahlepitaxie<br />

(MBE) betrieben, wobei Teilchen in einer<br />

thermischen Quelle (Ofen) freigesetzt <strong>und</strong> danach gezielt<br />

auf einer Probe deponiert werden. Dieses Verfahren<br />

wird vor allem <strong>für</strong> die Herstellung von dünnen<br />

Schichten im Monolagenbereich <strong>und</strong> Nanostrukturen<br />

eingesetzt.<br />

MBE-Experiment, EP III<br />

Arbeitsgruppe Prof. Brunner<br />

Je nachdem, ob das Material des Substrats <strong>und</strong> der aufzubringenden Strukturen gleich<br />

oder verschieden sind, spricht man von Homo- bzw. Heteroepitaxie. Alternativ kann man<br />

eine Oberfläche in eine gasförmige Umgebung bringen, wobei sich allein durch die thermische<br />

Dynamik des Gases Teilchen auf der Oberfläche absetzen. Neben der Deposition von<br />

Teilchen ist bei genügend hohen Temperaturen auch der umgekehrte Prozess, nämlich<br />

die Verdamfung (Desorption) von Teilchen möglich. Beide Prozesse, spontane Deposition<br />

<strong>und</strong> Desorption, konkurrieren miteinander, wodurch es zu interessanten Effekten kommt.<br />

Im einfachsten Fall modelliert man die zu deponierenden Atome bzw. Moleküle durch<br />

würfelförmige Teilchen. Die Konfiguration eines solchen solid-on-solid (SOS)-Modells<br />

wird durch eine Grenzfläche (interface) vollständig beschrieben. Sofern man die Bildung<br />

von Überhängen verbietet, wird die Grenzfläche eindeutig durch eine Höhenfunktion<br />

h(⃗r) beschrieben, welche die Höhe der Grenzfläche am (zweidimensionalen) Ort ⃗r auf der<br />

Oberfläche in Bezug auf ein willkürlich festgelegtes Höhenniveau angibt (siehe Abb. 7.9).<br />

Abbildung 7.9: Modellierung eines Wachstumsprozesses durch stoachstische Deposition <strong>und</strong> Verdampfung<br />

würfelförmiger Teilchen. Die Konfiguration wird dabei durch eine Grenzfläche<br />

beschrieben.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


126 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

Das einfachste Wachstumsmodell dieser Art ist die zufällige Deposition (random deposition):<br />

Teilchen ‘regnen’ zufällig von oben herab <strong>und</strong> stapeln sich auf der Oberfläche.<br />

Ein solches Programm <strong>für</strong> das Wachstum einer eindimensionalen Oberfläche ist denkbar<br />

einfach:<br />

int main (void)<br />

{<br />

InitRandom();<br />

XWindow W; W.Open(L,Y);<br />

for (int i=0; i=h[i] and h[(i+L-1)%L]>=h[i]) h[i]++;<br />

Dabei wurden periodische Randbedingungen angenommen. Wie man in Abb. 7.10 sehen<br />

kann, ergeben sich erheblich glattere Oberflächen.<br />

Die mikroskopische Beschaffenheit einer wachsenden Oberfläche wird experimentell vor<br />

allem durch Streuung von Röntgenstrahlen analysiert. Eine wichtige experimentell messbare<br />

Größe ist die Rauigkeit (engl. roughness) w der Oberfläche, die als Standardabweichung<br />

der Höhen definiert ist:<br />

(<br />

2<br />

w 2 = (h − h) 2 = h 2 − h 2 = 1 ∑<br />

h(⃗r) 2 1 ∑<br />

− h(⃗r))<br />

(7.18)<br />

N<br />

N<br />

(<br />

2<br />

w 2 = 〈(h − 〈h〉) 2 〉 = 〈h 2 〉 − 〈h〉 2 = 1 ∑<br />

h(⃗r) 2 1 ∑<br />

− h(⃗r))<br />

(7.19)<br />

N<br />

N<br />

⃗r<br />

⃗r<br />

⃗r<br />

⃗r<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.3 Andere stochastische Prozesse 127<br />

Abbildung 7.10: Grenzfläche eines eindimensionalen solid-on-solid (SOS) <strong>und</strong> eines restricted-solidon-solid<br />

(RSOS)-Modells nach etwa 600 Zeitschritten.<br />

Dabei wird über alle N = L d Gitterplätze der Oberfläche summiert. Die Rauigkeit ist<br />

sehr viel interessanter als die (linear wachsende) Höhe, da sie den Einfluss der Oberflächenspannung<br />

quantitativ widergibt. Eine einfache Simulation zeigt, dass die Rauigkeit<br />

in den beiden betrachteten Modellen wie<br />

{ t<br />

1/2<br />

<strong>für</strong> das SOS-Modell<br />

w(t) ∼<br />

t 1/3 <strong>für</strong> das RSOS-Modell<br />

(7.20)<br />

ansteigt. Im Fall des SOS-Modells ist dieses Ergebnis einfach zu verstehen, denn hier<br />

gibt es keine Wechselwirkung zwischen benachbarten Plätzen, vielmehr wächst jede Säule<br />

unabhängig durch stochastische Deposition. Das Histogramm der Höhen, auch Höhenprofil<br />

genannt, ist deshalb wie bei einem random walk Gauß-verteilt mit einer Breite von<br />

√<br />

h ∼<br />

√<br />

t. Wegen der fehlenden Wechselwirkung spielt die Systemgröße dabei keine Rolle.<br />

Im Fall des RSOS-Modells wechselwirken benachbarte Plätze durch die Restriktion. Das<br />

obige Potenzgesetz ist deshalb nur gültig <strong>für</strong> eine unendlich große Oberfläche. Ist das<br />

System dagegen endlich, gibt es eine maximale Rauigkeit, die nicht überschritten werden<br />

kann. Die Kurve <strong>für</strong> w(t) saturiert also nach gewisser Zeit.<br />

Es zeigt sich, dass auch <strong>für</strong> Wachstumsprozesse das im vorangegangenen Abschnitt diskutierte<br />

Konzept der dynamischen Skaleninvarianz erfolgreich angewandt werden kann.<br />

Dabei muss die Höhe, aufgefasst als kontinuierlicher Freiheitsgrad, geeignet mitskaliert<br />

werden. Es sei an dieser Stelle nur erwähnt, dass beispielsweise die Rauigkeit in einem<br />

endlichen System mit Seitenlänge L einer Skalenform<br />

w(L, t) = L α f(t/L z ) (7.21)<br />

genügt, wobei α der sogeannte Rauigkeitsexponent ist. Dynamisches Scaling ist also ein<br />

sehr allgemeines Konzept, das auf eine Vielzahl unterschiedlicher Systeme angewandt<br />

werden kann. Auch hier lassen sich Wachstumsprozesse je nach ihren Symmetrieeigenschaften<br />

verschiedenen Universalitätsklassen zuordnen. Als Einführung in die Theorie der<br />

Wachstumsprozesse eignet sich das Buch von Barabasi <strong>und</strong> Stanley [16] an.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


128 Phasenübergänge in Reaktions-Diffusionsprozessen<br />

Abbildung 7.11:<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


7.4 Aufgaben 129<br />

7.3.2 Voter Modell<br />

7.4 Aufgaben<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8 Fourier-Transformation<br />

Jean B. J. Fourier (1768-1830)<br />

8.1 Fourier-Transformation – kurz gefasst<br />

Die Fourier-Transformation ist eine lineare invertierbare Transformation, die physikalisch<br />

einer Spektralzerlegung entspricht. Eine Fourier-Transformation ist in verschiedenen Situationen<br />

sinnvoll, insbesondere dann wenn<br />

• das betrachtete System einem linearen Superpositionsprinzip gehorcht,<br />

• es abgesehen von Rand- <strong>und</strong> Anfangsbedingungen translationsinvariant ist.<br />

Ein Beispiel ist die Wellengleichung<br />

∂ 2 t φ(⃗x, t) − c 2 ∇ 2 φ(⃗x, t) = 0 . (8.1)<br />

Diese Differentialgleichung ist linear, d.h. die Summe zweier Lösungen ist wiederum eine<br />

Lösung. Außerdem ist sie translationsinvariant in Raum <strong>und</strong> Zeit, da weder t noch ⃗x in<br />

der Gleichung explizit auftreten. Hier bietet sich also sowohl in den räumlichen als auch<br />

in den zeitlichen Freiheitsgraden eine Fourier-Transformation an.<br />

Anschaulich ist eine Fourier-Transformation eine Entwicklung nach ebenen Wellen. Dabei<br />

spielt sowohl die Amplitude als auch die Phasenlage jedes Wellenanteils eine Rolle.<br />

Die Phasenlage wird in der <strong>Physik</strong> durch eine komplexe Phase ausgedrückt. Eine reelle<br />

Darstellung als “Cosinus- <strong>und</strong> Sinus-Transformierte” ist in der <strong>Physik</strong> eher ungebräuchlich.<br />

Die ebenen Wellen, nach denen entwickelt wird, müssen mit den Randbedingungen des<br />

betrachteten Systems kompatibel sein, wodurch es zu einer Auswahl, also zu einer Einschränkung<br />

des Funktionenraums kommen kann. Beispielsweise müssen in einem Resonator<br />

die ebenen Wellen am Rand einen Knoten besitzen, womit nur bestimmte Wellenzahlen<br />

möglich sind. Je nach Art der Randbedingungen unterscheidet man in der Theorie<br />

deshalb kontinuierliche Fourier-Transformationen, Fourier-Reihen <strong>und</strong> diskrete Fourier-<br />

Transformationen. Ohne auf mathematische Details einzugehen, wollen wir diese drei<br />

Typen hier kurz zusammenfassen.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


132 Fourier-Transformation<br />

8.1.1 Kontinuierliche Fouriertransformationen<br />

Funktionen, die auf einem unbeschränkten Zahlenkörper (also in der Regel R oder C)<br />

definiert sind, werden mit Hilfe einer kontinuierlichen Fourier-Transformation spektral<br />

zerlegt. Sei beispielsweise f(x) : R → R eine reelle Funktion auf einem (unbeschränkten)<br />

eindimensionalen Zahlenstrahl, dann ist<br />

˜f(k) = √ 1 ∫ +∞<br />

dx e ikx f(x) (8.2)<br />

2π<br />

−∞<br />

die Fourier-Transformierte von f(x). Mit Hilfe der Identität<br />

∫ +∞<br />

−∞<br />

dk e ik(x−x 0) = 2π δ(x − x 0 ) (8.3)<br />

kann man leicht überprüfen, dass die Umkehrtransformation durch<br />

f(x) = √ 1 ∫ +∞<br />

dk e −ikx ˜f(k) (8.4)<br />

2π<br />

−∞<br />

gegeben ist. Die mathematischen Voraussetzungen, die <strong>für</strong> eine kontinuierliche Fourier-<br />

Transformation erfüllt sein müssen, finden Sie in einschlägigen Lehrbüchern oder im<br />

Internet [2].<br />

Der Vorfaktor 1/ √ 2π rührt daher, dass <strong>Physik</strong>er gerne e ikx anstatt e 2πikx benutzen.<br />

Außerdem gibt es verschiedene Konventionen, die sich nur dadurch unterscheiden, wie<br />

der Vorfaktor auf Hin- <strong>und</strong> Rücktransformation verteilt ist. <strong>Physik</strong>er bevorzugen die oben<br />

eingeführte symmetrische Verteilung.<br />

Auch die Sprache Mathematica R○<br />

fs[k_] = FourierTransform[f[x],x,k];<br />

f[x_] = InverseFourierTransform[fs[k],k,x];<br />

hält sich an diese Konvention. Der Befehl lauten<br />

Dabei ist das erste Argument die zu transformierende Funktion, das zweite deren ursprüngliche<br />

unabhängige Variable, in der transformiert werden sollen, <strong>und</strong> das dritte<br />

Argument die neue unabhängige Variable der Fourier-Transformierten.<br />

Überzeugen Sie sich, dass die Fourier-Transformierte einer rellen Funktion im Allgemeinen<br />

komplexwertig ist. Wie man leicht nachrechnen kann, gilt <strong>für</strong> eine solche Fourier-<br />

Transformierte ˜f(k) = ˜f ∗ (−k). An dieser Eigenschaft erkennt man also, dass die ursprüngliche<br />

Funktion reell war.<br />

Eine Funktion, die von mehreren Variablen abhängt, kann sukzessive in jeder Variable<br />

einzeln Fourier-transformiert werden, wobei es auf die Reihenfolge nicht ankommt. Die<br />

Fourier-Transformierte einer Funktion mit zwei Variablen ist beispielsweise<br />

˜f(k x , k y ) = √ 1 ∫ +∞<br />

dx 1 ∫ +∞<br />

√ dy e i(kxx+kyy) f(x, y) (8.5)<br />

2π 2π<br />

−∞<br />

mit entsprechender Umkehrtransformation. In Mathematica R○ schreibt man da<strong>für</strong><br />

−∞<br />

FT = FourierTransform[f[x,y],{x,y},{kx,ky}];<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.1 Fourier-Transformation – kurz gefasst 133<br />

Fourier-Transformationen in d Dimensionen kann man mit Hilfe des euklidischen Skalarprodukts<br />

elegant darstellen als<br />

∫ ∫ ∫<br />

˜f( ⃗ 1<br />

+∞<br />

k) =<br />

(2π) d/2 · · · d d x e i⃗k·⃗x f(⃗x) , (8.6)<br />

wobei man statt des Vielfachintegrals in der Regel nur ein Integralzeichen hinschreibt.<br />

−∞<br />

8.1.2 Fourier-Reihen<br />

Im vorherigen Abschnitt haben wir kontinuierliche Fouriertransformationen von Funktionen<br />

auf einer unbeschränkten Urbildmenge betrachtet, also von Funktionen, die auf<br />

ganz R bzw. C definiert sind. Was aber passiert, wenn die zu transformierende Funktion<br />

auf einer beschränkten Urbildmenge, also beispielsweise auf einem endlichen Intervall<br />

I = [a, b] ⊂ R definiert ist?<br />

Um eine solche Funktion Fourier-transformieren zu können, muss sie auf geeignete Weise<br />

ergänzt werden, so dass sie auf dem gesamten Zahlenkörper erklärt ist, beispielsweise<br />

muss die Funktion außerhalb des Intervalls [a, b] auf sinnvolle Weise definiert werden.<br />

Eine Möglichkeit wäre, die Funktion außerhalb des Intervalls gleich Null zu setzen. Eine<br />

andere Möglichkeit, mit der wir uns in diesem Abschnitt befassen wollen, besteht darin,<br />

die Funktion periodisch fortzusetzen. Eine Funktion f(x) mit der Periode ∆x (im obigen<br />

Beispiel ∆x = b − a) mit der Definitionseigenschaft<br />

führt bei Fourier-Transformation wegen<br />

f(x + ∆x) = f(x) ∀x ∈ R (8.7)<br />

˜f(k) = √ 1 ∫ +∞<br />

dx e ikx f(x) = 1 ∫ +∞<br />

√ dx e ikx f(x + ∆x) = e −ik ∆x ˜f(k) (8.8)<br />

2π 2π<br />

−∞<br />

−∞<br />

auf die Bedingungsgleichung e −ik ∆x = 1 ist, d.h. k ∆x muss ein Vielfaches von 2π sein:<br />

Als Faustregel gilt also:<br />

k n<br />

= 2πn<br />

∆x<br />

, n ∈ Z. (8.9)<br />

Funktionen auf einem beschränkten Intervall, die periodisch<br />

fortgesetzt werden, besitzen ein diskretes Spektrum.<br />

Als Beispiel betrachten wir die Funktion f(x) = cos 4 (x) auf [0, 2π], die sich auf natürliche<br />

Weise periodisch fortsetzen lässt. Mit dem Befehl<br />

FourierTransform[Cos[x]^4, x, k]<br />

liefert Mathematica R○ die Fourier-Transformierte<br />

˜f(k) = 1 √ (<br />

)<br />

π<br />

δ(k − 4) + 4δ(k − 2) + 6δ(k) + 4δ(k + 2) + δ(k + 4) , (8.10)<br />

8 2<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


134 Fourier-Transformation<br />

Abbildung 8.1: Approximation einer Rechteckschwingung durch eine Fourier-Reihe.<br />

die in der Tat aus fünf äquidistanten δ-peaks besteht. Im Allgemeinen können sogar<br />

unendlich viele äquidistante δ-peaks auftreten. Wendet man nun auf eine solche Funktion<br />

die inverse Fourier-Transformation an, so erhält man eine Summe von oszillierenden<br />

Termen. Im obigen Beispiel besteht diese Summe aus 5 Termen, sie kann aber auch<br />

unendlich viele Summanden haben. Man spricht dann von einer Fourier-Reihe.<br />

Bei einer Fourier-Reihe reicht es aus, die Koeffizienten<br />

c n =<br />

∫<br />

1 b<br />

√ dx e iknx f(x) (8.11)<br />

b − a<br />

a<br />

der Entwicklung anzugeben, wobei k n<br />

nimmt dann die Gestalt einer Reihe<br />

an.<br />

f(x) =<br />

= 2πn<br />

∆x<br />

1<br />

√<br />

b − a<br />

+∞ ∑<br />

n=−∞<br />

ist. Die inverse Fourier-Transformation<br />

e −iknx c n (8.12)<br />

Als Beispiel betrachten wir eine Rechteckschwingung, die als Klang von elektronischen<br />

Geräten wie z.B. von Digitalweckern erzeugt wird:<br />

f(x) =<br />

{ +1 falls 0 < x ≤<br />

1<br />

2<br />

−1 falls 1 2 < x ≤ 1. (8.13)<br />

Die Koeffizienten sind dann<br />

c n =<br />

{ 0 falls n gerade<br />

falls n ungerade.<br />

2i<br />

nπ<br />

<strong>und</strong> man erhält die Fourier-Reihe<br />

f(x) = 2i ∞∑ exp[2πi(2m + 1)x]<br />

π<br />

2m + 1<br />

m=−∞<br />

= 4 π<br />

∞∑<br />

m=0<br />

sin[2π(2m + 1)x]<br />

2m + 1<br />

(8.14)<br />

. (8.15)<br />

Bricht man diese Reihe nach M Gliedern ab, so erhält man eine Approximation der<br />

Rechteckschwingung. Abb. 8.1 zeigt diese Approximation <strong>für</strong> M = 0, . . . , 4.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.1 Fourier-Transformation – kurz gefasst 135<br />

f(x) ˜f(k) Datenmenge<br />

kontinuierlich, nicht periodisch kontinuierlich, nicht periodisch überabzählbar unendlich<br />

kontinuierlich, periodisch diskret, nicht periodisch abzählbar unendlich<br />

diskret, nicht periodisch kontinuierlich, periodisch abzählbar unendlich<br />

diskret, periodisch diskret, periodisch endlich<br />

Tabelle 8.1: Vier unterschiedliche Typen von Fourier-Transformationen<br />

Bemerkung: Für unendliche Fourier-Reihen kennt Mathematica R○ keine eigenen Befehle,<br />

sondern man muss die betreffenden Integrale <strong>und</strong> Summen per Hand eingeben. Nicht immer<br />

sind die Ergebnisse dabei sofort transparent. Wertet man z.B. mit Mathematica R○ die Reihe<br />

in Gl. (8.15) aus, so erhält man das Ergebnis<br />

f(x) = 2i [<br />

]<br />

arctanh(e 2πix ) − arctanh(e −2πix ) . (8.16)<br />

π<br />

Man muss schon genau hinsehen um zu erkennen, dass diese Formel tatsächlich eine periodische<br />

Rechteckschwingung wie in Gl. (8.13) reproduziert.<br />

8.1.3 Diskrete Fourier-Transformationen<br />

Ist die zu transformierende Funktion diskret <strong>und</strong> periodisch, so ist auch die Fourier-<br />

Transformierte der Funktion diskret <strong>und</strong> periodisch. In diesem Fall liegt sowohl die<br />

Funktion als auch die Fourier-Transformierte in Form einer endlichen Menge von Koeffizienten<br />

{a 0 , . . . , a N−1 } bzw. {ã 0 , . . . , ã N−1 }vor. Die diskrete Fourier-Transformation<br />

ist also der einzige Typus, der auf einem Rechner numerisch realisiert werden kann. Die<br />

Transformationsformeln lauten<br />

ã k =<br />

a n =<br />

N−1<br />

1 ∑ ( 2πikn<br />

)<br />

√ a n exp<br />

N N<br />

n=0<br />

N−1<br />

1 ∑<br />

√<br />

N<br />

k=0<br />

(<br />

ã k exp<br />

− 2πikn<br />

N<br />

Diese linearen Transformationen lassen sich in Matrixschreibweise<br />

)<br />

k = 0, . . . , N − 1 (8.17)<br />

n = 0, . . . , N − 1 . (8.18)<br />

ã k = F kn a n , a n = F −1<br />

nk ãk (8.19)<br />

darstellen, wobei die Matrizen durch<br />

F kn = √ 1 ( 2πikn<br />

)<br />

exp , F −1<br />

N N<br />

nk = √ 1 (<br />

exp − 2πikn )<br />

N N<br />

(8.20)<br />

gegeben sind. Es gilt F kn F −1<br />

nk<br />

= δ ′ kk ′. Zum Beweis benötigt man die f<strong>und</strong>amentale Relation<br />

N−1<br />

∑<br />

n=0<br />

( 2πikn<br />

) { N falls k ein Vielfaches von N ist,<br />

exp =<br />

N 0 andernfalls.<br />

(8.21)<br />

Die obige Definition diskreter Fourier-Transformationen eignet sich <strong>für</strong> alle Programmiersprachen,<br />

bei denen Vektoren (Arrays) von 0 bis N − 1 indiziert werden, also beispielsweise<br />

C/C++. Dagegen benutzt Mathematica R○ die schwer nachvollziehbare Konvention<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


136 Fourier-Transformation<br />

der Indizierung von 1 bis N. In diesem Fall sehen die Transformationsformeln etwas<br />

komplizierter aus, unterscheiden sich aber nur durch eine Verschiebung in den Indices:<br />

ã k =<br />

a n =<br />

1<br />

√<br />

N<br />

1<br />

√<br />

N<br />

N ∑<br />

n=1<br />

∑<br />

N<br />

k=1<br />

(<br />

a n exp 2πi<br />

(<br />

ã k exp −2πi<br />

(k − 1)(n − 1)<br />

)<br />

N<br />

(k − 1)(n − 1)<br />

)<br />

N<br />

k = 1, . . . , N (8.22)<br />

n = 1, . . . , N . (8.23)<br />

Mit Mathematica R○ führt man diese Transformation einfach durch den Befehl<br />

FT=Fourier[{a1,a2,a3,a4,...,aN}]<br />

aus. Die ursprüngliche Liste erhält man dann durch InverseFourier[FT] zurück.<br />

Merke: Fourier[Liste] ≡ diskrete Fourier-Transformation<br />

FourierTransform[f[x],x,k] ≡ kontinuierliche Fourier-Transformation<br />

8.1.4 Invarianz des Skalarprodukts<br />

Wie man leicht überprüfen kann, erfüllen die in Gl. (8.20) definierten Matrizen die Relation<br />

FF † = F † F = 1 , (8.24)<br />

die Fourier-Transformation ist also eine unitäre Transformation (analog zu orthogonalen<br />

Transformation in reellen Vektorräumen). Eine diskrete Fourier-Transformation ist also<br />

im gewissen Sinne eine Drehung im N-dimensionalen Vektorraum <strong>und</strong> dementsprechend<br />

muss das dazugehörige euklidische Skalarprodukt<br />

a · b := ∑ n<br />

a n b ∗ n (8.25)<br />

invariant bleiben. Man kann sich davon leicht überzeugen, indem man zunächst das Skalarprodukt<br />

programmiert<br />

ScalarProduct[a_List,b_List] := a.Conjugate[b]<br />

<strong>und</strong> damit ein Beispiel ausprobiert:<br />

a={1,2,3}; b={4,5,6};<br />

ScalarProduct[a,b]<br />

ScalarProduct[Fourier[a],Fourier[b]];<br />

Ausgegeben werden 32 <strong>und</strong> 32. + 0.i, die Ergebnisse sind also bis auf winzige numerische<br />

Fehler im Imaginärteil identisch.<br />

Ähnliches gilt <strong>für</strong> kontinuierliche Fouriertransformationen. Diese lassen sich als ‘Drehungen’<br />

in einem (unendlich-dimensionalen) Funktionenraum interpretieren. Das entsprechende<br />

Skalarprodukt lautet<br />

f · g :=<br />

∫ +∞<br />

−∞<br />

f(x)g ∗ (x) (8.26)<br />

<strong>und</strong> ist unter Fourier-Transformation erhalten. Dies kann man mit dem folgenden Beispiel<br />

exemplarisch überprüfen:<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.1 Fourier-Transformation – kurz gefasst 137<br />

Abbildung 8.2: Gleitende diskrete Fourier-Transformation unter KDE mit KRecord.<br />

f[x_]:=x^2;<br />

fs[k_]=FourierTransform[f[x],x,k];<br />

g[x_]:=Exp[-x^2];<br />

gs[k_]=FourierTransform[g[x],x,k];<br />

ScalarProduct[f_,g_] := Integrate[f[x]*Conjugate[g[x]],{x,-Infinity,Infinity}]<br />

ScalarProduct[f,g]<br />

ScalarProduct[fs,gs]<br />

In beiden Fällen wird √ π/2 ausgegeben.<br />

8.1.5 Gleitende diskrete Fourier-Transformationen<br />

Oft benötigt man in der <strong>Physik</strong> Informationen über das Spektrum einer Zeitreihe, also<br />

einer zeitlichen Abfolge diskreter Amplituden. Insbesondere möchte man wissen, wie sich<br />

das Frequenzspektrum zeitlich ändert. Die meisten Programme zur Audio-Bearbeitung<br />

wie z.B. KRecord (siehe Abb. 8.2) bieten diese Möglichkeit. Die oben eingeführte diskrete<br />

Fourier-Transformation erlaubt aber nur, die gesamte Zeitreihe en bloc zu transformieren.<br />

Um ein zeitabhängiges Spektrum zu erhalten, benutzt man in der Regel ein gleitendes<br />

Zeitfenster, mit dem ein Teil der Zeitreihe isoliert <strong>und</strong> Fourier-transformiert wird. Für<br />

eine solche gleitende diskrete Fourier-Transformation gilt die ‘Unschärferelation’<br />

Zeitfensterbreite × Frequenzauflösung ≃ 1 . (8.27)<br />

Je breiter das Zeitfenster ist, um so genauer ist das Spektrum aufgelöst, jedoch wird es<br />

dadurch in seiner Zeitabhängigkeit träger.<br />

8.1.6 Allgemeine Eigenschaften von Fourier-Transformationen<br />

Wichtig <strong>für</strong> den praktischen Umgang mit Fourier-Transformationen ist eine gute Intuition.<br />

Eine wichtige Faustregel besagt, dass Welligkeit (Oszillation) auf der einen Seite<br />

Verschiebung (Translation) auf der anderen Seite zur Folge hat.<br />

• Multiplziert man insbesondere eine Funktion mit einer ebenen Welle, so führt das zu<br />

einer Translation der Fourier-Transformierten <strong>und</strong> umgekehrt. Für kontinuierliche<br />

Fourier-Transformationen heisst das konkret:<br />

f(⃗x) → f(⃗x + ⃗a) ⇔ ˜f( ⃗ k) → e<br />

−i ⃗ k·⃗a ˜f( ⃗ k) , (8.28)<br />

f(⃗x) → e i⃗q·⃗x f(⃗x) ⇔ ˜f( ⃗ k) → ˜f( ⃗ k + ⃗q) (8.29)<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


138 Fourier-Transformation<br />

Für diskrete Fourier-Transformationen gelten entsprechende Formeln, allerdings<br />

ist hier die Translation periodischen Randbedingungen zu unterwerfen, also stets<br />

modulo N auszuführen. Für Indizierung 0 . . . N − 1 erhält man<br />

a n → a (n+s)%N ⇔ ã k → e −2πiks/N ã k , (8.30)<br />

a n → e 2πiqn/N a n ⇔ ã k → ã (k+q)%N (8.31)<br />

wobei s, q ∈ {0, . . . N − 1} sind <strong>und</strong> ‘%’ wie in C/C++ <strong>für</strong> die Modulo-Operation<br />

steht. Für die Indizierung 1 . . . N sind diese Formeln um 1 in den Indices zu verschieben.<br />

So lässt sich der Verschiebungseffekt gemäß Gl. (8.30) mit Mathematica R○ demonstrieren:<br />

Liste = {1, 2, 3, 4, 5, 6};<br />

FT = Fourier[Liste];<br />

s = 2;<br />

Welle = Table[Exp[-2*Pi*I*j/Length[Liste]*s], {j, 0, Length[Liste]-1}];<br />

InverseFourier[Welle*FT]<br />

Als Ausgabe erhält man {3,4,5,6,1,2}, also die um s = 2 Position zyklisch nach<br />

links verschobene Liste. Beachten Sie, dass eine Verschiebung des Index n → n + s<br />

die Liste nicht etwa nach rechts, sondern um s Positionen nach links schiebt. Es<br />

verhält sich hier ganz ähnlich wie bei Funktionen: Wenn man f(x) <strong>und</strong> f(x+1) gemeinsam<br />

grafisch darstellt, so ist die letztere gegenüber f(x) nach links verschoben 1<br />

• Eine Punktspiegelung ⃗x → −⃗x auf der einen Seite ist äquivalent zu einer Punktspiegelung<br />

⃗ k → − ⃗ k auf der jeweils anderen Seite, d.h.<br />

f(⃗x) → f(−⃗x) ⇔ ˜f( ⃗ k) → ˜f(− ⃗ k) . (8.32)<br />

Anders ausgedrückt: Die Operation der Punktspiegelung kommutiert mit der Fouriertransformation.<br />

• Eine weitere wichtige Regel besagt, dass die Komplexkonjugation auf der einen<br />

Seite einer Punktspiegelung plus Komplexkonjugation auf der jeweils anderen Seite<br />

entspricht, also<br />

f(⃗x) → f ∗ (⃗x) ⇔ ˜f( ⃗ k) → ˜f ∗ (− ⃗ k) (8.33)<br />

f(⃗x) → f ∗ (−⃗x) ⇔ ˜f( ⃗ k) → ˜f ∗ ( ⃗ k) (8.34)<br />

Für diskrete Fouriertransformationen (Zählung 0 . . . N − 1) gilt entsprechend:<br />

a n → a ∗ n ⇔ b k → b ∗ N−k (8.35)<br />

a n → a ∗ N−n ⇔ ˜bk → b ∗ k (8.36)<br />

1 Dieser Sachverhalt ist in komplizierteren Zusammenhängen nichttrivial <strong>und</strong> führt häufig zu Fehlern.<br />

Stellen Sie sich beispielsweise eine Drehmatrix R vor, die einen zweidimensionalen Vektor ⃗x nach<br />

rechts dreht. In der Quantenmechanik würde diese Matrix, auf das Argument einer Wellenfunktion<br />

ψ(⃗x) angewandt, entgegengesetzt wirken, d.h. ψ(R⃗x) beschreibt ein nach links gedrehtes Objekt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.1 Fourier-Transformation – kurz gefasst 139<br />

Die komplexe Konjugation der Koeffizienten entspricht also einer Umkehrung der<br />

Reihenfolge (Spiegelung) der Fourier-transformierten Koeffizienten <strong>und</strong> umgekehrt.<br />

Nur ein Koeffizient, nämlich derjenige, an dem gespiegelt wird, bleibt an seinem<br />

Platz: k = 0 bzw. n = 0. Mit Mathematica R○ lässt sich das leicht überprüfen:<br />

Liste = {1, 2, 3, 4, 5, 6};<br />

FT = Fourier[Liste];<br />

InverseFourier[Conjugate[FT]]<br />

Die Ausgabe lautet [1,6,5,4,3,2], also die an der ersten Komponente zyklisch<br />

gespiegelte Liste.<br />

• Fourier-Transformationen sind im Allgemeinen <strong>für</strong> komplexwertige Funktionen definiert,<br />

können aber (<strong>und</strong> werden oft) auf reelle Funktionen angewandt. Die Fourier-<br />

Transformierte einer reellen Funktion hat die Eigenschaft<br />

f(⃗x) ∈ R d ⇒ ˜f( ⃗ k) = ˜f ∗ (− ⃗ k) (8.37)<br />

<strong>und</strong> <strong>für</strong> diskrete Fourier-Transformationen entsprechend<br />

a n ∈ R<br />

⇒<br />

{<br />

ãk = ã ∗ N−k<br />

<strong>für</strong> Zählung k = 0, . . . N − 1 ,<br />

ã k = ã ∗ N+1−k<br />

<strong>für</strong> Zählung k = 1, . . . N .<br />

(8.38)<br />

Die Fourier-Transformierte einer reellen Funktion ist zwar komplex, ist aber spiegelsymmetrisch<br />

bezüglich k = 0 <strong>und</strong> besitzt damit nur halb so viele Freiheitsgrade.<br />

In der Tat haben reelle Funktionen haben wegen des verschwindenden Imaginärteils<br />

auch nur ‘halb so viele’ Freiheitsgrade wie komplexe Funktionenen.<br />

Bemerkung: Eng verwandt mit Fourier-Transformationen sind Laplace-Transformationen,die<br />

sich ganz grob als in der komplexen Ebene um 90 ◦ gedrehte Fourier-Transformationen interpretieren<br />

lassen. Die Transformationsformeln lauten<br />

F (s) =<br />

∫ ∞<br />

0<br />

dt e −st f(t) , f(t) =<br />

∫ +i∞+ɛ<br />

−i∞+ɛ<br />

ds e st F (s) (8.39)<br />

Dabei wird bei der Rücktransformation entlang der imaginären Achse integriert (mit einer<br />

infinitesimalen Verschiebung wegen der Residuen). Für die Laplace-Transformation gelten<br />

ähnliche Sätze <strong>und</strong> Merkregeln wie <strong>für</strong> die Fourier-Transformation.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


140 Fourier-Transformation<br />

8.1.7 Faltungssatz<br />

Das Faltungsprodukt ‘∗’ (engl. convolution product) zweier Funktionen f <strong>und</strong> g ergibt<br />

wiederum eine Funktion h = f ∗ g; es ist durch<br />

h(x) = [f ∗ g](x) =<br />

∫ +∞<br />

−∞<br />

dy f(x − y)g(y) (8.40)<br />

definiert. Faltungsprodukte braucht man z.B. bei der Glättung <strong>und</strong> Filterung von Daten.<br />

Ist beispielsweise g(x) eine schmale Gaußglocke, so wird die Funktion f(x) effektiv über<br />

die Breite dieser Gaußglocke gemittelt <strong>und</strong> damit geglättet. Die glättende Funktion g(x)<br />

wird dabei oft als mollifier bezeichnet.<br />

Das Faltungsprodukt verhält sich weitgehend wie ein normales Produkt:<br />

Kommutativität: f ∗ g = g ∗ f<br />

Assoziativität: (f ∗ g) ∗ h = f ∗ (g ∗ h) = f ∗ g ∗ h<br />

Bilinearität: f ∗ (g + h) = f ∗ g + f ∗ h, (f + g) ∗ h = f ∗ h + g ∗ h<br />

Skalare:<br />

λ ∗ f = λf ∀λ ∈ C<br />

Produktregel: (f ∗ g) ′ = f ′ ∗ g + f ∗ g ′<br />

Außerdem ist es translationsinvariant im dem Sinne, dass eine Verschiebung der Funktion<br />

f auf gleiche Weise das Faltungsprodukt f ∗ g verschiebt 2 . Bei der Glättung von<br />

Daten wird durch die Translationsinvarianz sichergestellt, dass die Funktion f(x) <strong>für</strong> alle<br />

x auf die gleiche Weise geglättet wird.<br />

Auch in höheren Dimensionen kann man ein Faltungsprodukt definieren. Im R n ist beispielsweise<br />

∫<br />

[f ∗ g](⃗x) = d d y f(⃗x − ⃗y)g(⃗y) . (8.41)<br />

R n<br />

Wegen Bilinearität <strong>und</strong> Translationsinvarianz ist das Faltungsprodukt prädestiniert <strong>für</strong><br />

die Fourier-Transformation. Man erhält<br />

h(x) = [f ∗ g](x) =<br />

∫ +∞<br />

= 1<br />

2π<br />

=<br />

dy 1<br />

2π<br />

−∞<br />

∫ +∞<br />

−∞<br />

∫ +∞<br />

−∞<br />

∫ +∞<br />

−∞<br />

∫ +∞<br />

dk 1 dk 2 e ik 1(x−y)+ik 2 y ˜f(k1 )˜g(k 2 )<br />

−∞<br />

∫ +∞<br />

dk 1 dk 2 2πδ(k 1 − k 2 )e ik 1x ˜f(k1 )˜g(k 2 ) (8.42)<br />

−∞<br />

dke ikx ˜f(k)˜g(k) . (8.43)<br />

Fourier-transformiert man diese Gleichung auf beiden Seiten, so erhält man den sogenannten<br />

Faltungssatz<br />

˜h(k) = [˜f ∗ g](k) = √ 2π ˜f(k)˜g(k) . (8.44)<br />

Ein Faltungsprodukt geht also durch Fourier-Transformation in ein gewöhnliches Produkt<br />

über.<br />

2 Ist also F (x) := f(x+a) eine gegenüber f um den Abstand a verschobene Funktion, so gilt [F ∗g](x) =<br />

[f ∗ g](x + a).<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.2 Klänge mit Mathematica R○ 141<br />

8.2 Klänge mit Mathematica R○<br />

8.2.1 Erzeugung eines Klanges mit Funktionen<br />

Mathematica R○ (Version 6.0) ermöglicht es, auf besonders einfache Weise mit der So<strong>und</strong>karte<br />

des Rechners Töne zu erzeugen. Das folgende Beispiel zeigt, wie man beispielsweise<br />

eine Sinusschwingung mit der Frequenz von 440 Hz (Kammerton a) erzeugen kann:<br />

Nach Berechnung der Funktion erzeugt<br />

Mathematica R○ ein Klangobjekt, das im<br />

Wesentlichen aus einer Liste der<br />

diskretisierten Amplituden besteht.<br />

Sie können sich den erzeugten Klang<br />

durch Klicken auf das Wiedergabesymbol<br />

ohne Neuberechnung beliebig oft anhören.<br />

Entscheidend <strong>für</strong> die Tonqualität ist die Abtastrate (engl. sample rate), also die Schrittweite<br />

der internen Diskretisierung. Sie ist bei Mathematica R○ standardgemäß auf 8.000<br />

Amplitudenwerte pro Sek<strong>und</strong>e (8 kHz) eingestellt <strong>und</strong> ist bei diesem Wert noch hörbar.<br />

Eine höhere Abtastrate kann als Option angegeben werden:<br />

Play[Sin[2 π ν t],{t,0,2},SampleRate→25000]<br />

Erst oberhalb des vom Menschen wahrnehmbaren Frequenzbereichs von etwa 20.000 Hz<br />

wird die Diskretisierung unhörbar. Musikaufnahmen benutzen deshalb in der Regel die<br />

Abtastrate 44.100 Hz.<br />

Mit dem Befehl Play können auch zwei Funktionen getrennt auf beiden Lautsprechern<br />

wiedergegeben werden, womit Stereo-Effekte ermöglicht werden. Zwei gegeneinander verstimmte<br />

Sinusschwingungen erzeugen beispielsweise eine räumliche Schwebung:<br />

ν=220; µ=222;<br />

Play[{Sin[2π ν t],Sin[2π µ t]},{t,0,4},SampleRate→25000]<br />

8.2.2 Hochladen von Klangdateien<br />

Sie können auch Klangdateien auf Ihrem Rechner hochladen, diskretisieren <strong>und</strong> mit<br />

Mathematica R○ verarbeiten. Die Klangdatei muss dabei im wavetable-Format (.wav) vorliegen.<br />

Komprimierte Formate (z.B. ogg oder mp3) sind nicht geeignet <strong>und</strong> müssen erst<br />

konvertiert werden. Das Klangbeispiel sollte nicht länger als einige Sek<strong>und</strong>en sein, damit<br />

sich die Ausführungszeiten in Grenzen halten. Hochgeladen wird die Datei mit:<br />

Klangdaten = Import["Vorlesung/V02-Fourier/Trompete.wav", "WAV"]<br />

Die Abtastrate wird dabei durch die eingelesene Datei festgelegt. In dem Objekt namens<br />

Klangdaten befindet sich dann eine Liste von Zahlenwerten, die den diskretisierten<br />

Verlauf der Schwingung beschreibt. Diese Liste kann man durch 3<br />

3 Wo sich die Liste in dem Objekt befindet, kann von den Eigenschaften der Klangdatei (z.B. Mono<br />

oder Stereo) abhängen, die Indizierung [[1,1,1]] ist also nicht immer korrekt.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


142 Fourier-Transformation<br />

Liste = Klangdaten[[1, 1, 1]];<br />

isolieren <strong>und</strong> dann mit dem Befehl<br />

ListPlay [Liste, SampleRate -> 25000, PlayRange -> {-2, 2}]<br />

wieder hörbar machen. Die SampleRate muss dabei natürlich der Diskretisierung der ursprünglichen<br />

Klangdatei entsprechen. Etwas kritisch ist die Wahl des PlayRange, dessen<br />

Grenzen der minimalen <strong>und</strong> maximalen Auslenkung der Lautsprechermembran entsprechen.<br />

Ohne diese Option wählt Mathematica R○ automatische Mittelwerte, doch damit<br />

kann es leicht zum Übersteuern der So<strong>und</strong>karte kommen. Hier empfiehlt es sich, einfach<br />

auszuprobieren.<br />

8.2.3 Manipulation von Klängen<br />

Sie können den hochgeladenen Klang Fourier-transformieren, beliebig manipulieren, <strong>und</strong><br />

wieder zurücktransformieren. Mit der Befehlsequenz<br />

FT = Fourier[Liste];<br />

FT2 = Conjugate[FT];<br />

Liste2 = InverseFourier[FT2];<br />

ListPlay [Re[Liste2], SampleRate -> 25000, PlayRange -> {-3, 3}]<br />

wird beispielsweise die Fourier-Transformierte komplex konjugiert; Sie hören dann den<br />

Klang rückwärts. Zyklisch verschieben kann man dagegen einen Klang durch Muliplikation<br />

mit einer ebenen Welle:<br />

FT = Fourier[Liste];<br />

Welle = Table[Exp[100*I*k], {k, 1, Length[FT]}];<br />

FT2 = FT * Welle;<br />

Liste2 = InverseFourier[FT2];<br />

ListPlay [Re[Liste2], SampleRate -> 25000, PlayRange -> {-3, 3}]<br />

Versehentlich entstandene kleine Imaginärteile werden in der letzten Zeile durch Re[...]<br />

eliminiert. Durch lineare Superposition von Wellen mit verschiedenen Wellenzahlen lässt<br />

sich leicht ein Stimmengewirr erzeugen.<br />

8.2.4 Künstlicher Nachhall<br />

Akustischer Nachhall wie etwa in einer Kirche entsteht durch Superposition zahlreicher<br />

Einzelechos von diversen Gebäudeteilen. Dabei kommt es zu mehrfachen Reflexionen<br />

(Mehrfachechos), die in ihrer Intensität abnehmen, da bei jeder Reflexion ein bestimmter<br />

Anteil der Schallenergie dissipiert wird.<br />

Ein einfaches Modell <strong>für</strong> die Erzeugung von Nachhall ist ein Echo mit konstanter Laufzeit<br />

β, das bei jeder Reflexion um den Faktor α < 1 abgeschwächt wird, also nach n<br />

Reflexionen nur noch einen Bruchteil α n der anfänglichen Energie besitzt. Ein Nachhall<br />

ist also eine Folge von unendlich vielen Echos n = 1, 2, . . ., verschoben um die Zeit βn<br />

<strong>und</strong> abgeschwächt um den Faktor α n .<br />

Im Fourier-Raum lässt sich wie oben die zeitliche Translation durch Multiplikation mit<br />

der ebenen Welle e inβk erreichen, die zusätzlich noch mit α n gewichtet werden muss. Die<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.3 Bildbearbeitung mit Mathematica R○ 143<br />

Fourier-Transformierte ist also mit einer geometrischen Reihe<br />

g(k) =<br />

∞∑<br />

α n e inβk =<br />

n=0<br />

1<br />

1 − αe iβk (8.45)<br />

zu multiplizieren. Diese einfache geometrische Reihe erzeugt einen erstaunlich guten<br />

Nachhall. Dieser Effekt kann noch gesteigert werden, wenn Sie auf beiden Stereo-Kanälen<br />

geringfügig verschiedene Nachhallzeiten benutzen, wodurch ein räumlicher Halleffekt entsteht:<br />

FT = Fourier[Liste];<br />

FTSL = Table [1 / (1 - 0.8 * Exp[0.005*I*k]), {k, 1, Length[FT]}] * FT;<br />

FTSR = Table [1 / (1 - 0.8 * Exp[0.006*I*k]), {k, 1, Length[FT]}] * FT;<br />

ListPlay[{InverseFourier[FTSL] // Re, InverseFourier[FTSR] // Re},<br />

SampleRate -> 44100, PlayRange -> {-2, 2}]<br />

8.3 Bildbearbeitung mit Mathematica R○<br />

Auf ähnliche Weise kann man mit Mathematica R○ Bilder bearbeiten. Der einzige Unterschied<br />

besteht darin, dass nun die Daten nun eine zweidimensionale Struktur besitzen.<br />

Diskrete zweidimensionale Fourier-Transformationen sind aber <strong>für</strong> den Befehl Fourier<br />

kein Problem.<br />

Zum praktischen Umgang empfiehlt sich die Definition der Funktionen<br />

GetBitmap[filename_] :=<br />

Transpose[Import[filename][[1, 1]], {2, 3, 1}];<br />

ShowBitmap[b_] := Module[{max}, max = Max[b];<br />

Show[Graphics[Raster[Transpose[b, {3, 1, 2}]/max]]]];<br />

Mit M=GetBitmap[”tux.png”] können Sie beispielsweise das Bild des Linux-Pinguins<br />

in diskretisierter Form hochladen. 4 Dem Bezeichner M wird dann eine 3 × X × Y -Liste<br />

zugeordnet, wobei X <strong>und</strong> Y die Pixel-Abmessungen des Bildes sind. M[[1]], M[[2]] <strong>und</strong><br />

M[[3]] sind drei X ×Y -Matrizen mit Intensitätswerten <strong>für</strong> die drei Farben rot, grün <strong>und</strong><br />

blau. 5<br />

Wir können nun die Daten (<strong>für</strong> jede Farbe einzeln) Fourier-transformieren <strong>und</strong> ähnlich wie<br />

bei den Klängen manipulieren. Eine Komplexkonjugation der Fourier-Transformierten<br />

beispielsweise führt zu einer Punktspiegelung des Bildes:<br />

FT = Table[Fourier[bild[[i]]], {i, 1, 3}];<br />

FT2 = Conjugate[FT];<br />

IM = Table[InverseFourier[FT2[[i]]], {i, 1, 3}];<br />

a = ShowBitmap[Abs[IM]]<br />

Dabei werden durch den Absolutwert in der letzten Zeile imaginäre <strong>und</strong> negative R<strong>und</strong>ungsfehler<br />

eliminiert.<br />

4 Verwenden Sie nur kleine Bilddateien, da sonst die Ausführungszeiten unpraktisch groß werden.<br />

5 Das menschliche Auge hat nur drei verschiedene Arten von Farbrezeptoren mit überlappenden Bandbreiten.<br />

Es kann deshalb z.B. die Farbe gelb nicht von einer Superposition aus rot <strong>und</strong> grün unterscheiden.<br />

Zur Darstellung von Farben reicht deshalb ein RGB-Triplet aus.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


144 Fourier-Transformation<br />

8.3.1 Faltungsprodukte in der Bildbearbeitung<br />

Wegen der umständlichen Handhabung der drei Farben bietet es sich an, zunächst eine<br />

Funktion zu schreiben, welche die Fourier-Transformation, die Faltung mit einer vorgegebenen<br />

Funktion f[kx,ky], die Rücktransformation <strong>und</strong> die Anzeige automatisiert:<br />

Faltung := Module[{FT, F, X, Y, FT2, IM},<br />

FT = Table[Fourier[bild[[i]]], {i, 1, 3}];<br />

X = Dimensions[FT][[3]];<br />

Y = Dimensions[FT][[2]];<br />

F = Table[f[Mod[X/2 + kx - 1, X] - X/2, Mod[Y/2 + ky - 1, Y] - Y/2 - 1],<br />

{c, 1, 3}, {ky, 1, Y}, {kx, 1, X}];<br />

FT2 = FT*F;<br />

IM = Table[InverseFourier[FT2[[i]]], {i, 1, 3}];<br />

ShowBitmap[Abs[IM]]]<br />

Faltungen sind translationsinvariant, d.h. sie wirken überall in gleicher Weise. Damit sind<br />

sie prädestiniert <strong>für</strong> Filterfunktionen in der Bildbearbeitung, denn die Filter sollen in der<br />

Regel an jedem Ort des Bildes auf gleiche Weise wirken.<br />

8.3.2 Scharfzeichnen <strong>und</strong> Weichzeichnen<br />

Jedes Bildbearbeitungsprogramm <strong>für</strong> Digitalkameras bietet die Möglichkeit, eine Aufnahme<br />

zu schärfen oder zu glätten. Diese Filterfunktionen ähneln einem Hochpass <strong>und</strong><br />

Tiefpass in der Akkustik. Eine Funktion, die zur Schärfung des Bildes führt, muss also<br />

hohe Wellenzahlen begünstigen. Außerdem sollte sie isotrop sein, also nicht von ⃗ k,<br />

sondern nur von | ⃗ k| oder ⃗ k 2 abhängen. Eine Möglichkeit von vielen ist:<br />

f[kx_, ky_] := Exp[(kx*kx + ky*ky)/20000]<br />

Für einen Weichzeichner muss man die großen Wellenlängen begünstigen – am einfachsten<br />

durch einen Vorzeichenwechsel im Exponenten.<br />

f[kx_, ky_] := Exp[-(kx*kx + ky*ky)/2000]<br />

Der Effekt dieser beiden Filter ist in Abb. 8.3 zu sehen.<br />

Abbildung 8.3: Filter f( ⃗ k) = e ±αk2<br />

zum Weichzeichnen <strong>und</strong> Scharfzeichnen von Bildern.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


8.4 Fast-Fourier-Transform (FFT) 145<br />

8.4 Fast-Fourier-Transform (FFT)<br />

Für die Effizienz eines Algorithmus ist die Ausführungszeit ein wichtiges Kriterium. Dabei<br />

spielt die absolute Ausführungszeit allerdings eine eher untergeordnete Rolle; viel<br />

wichtiger ist dagegen die Frage, wie die Ausführungszeit mit der Größe des gestellten<br />

Problems skaliert. Mit dieser Information lässt sich schon anhand kleinerer Testläufe auf<br />

einem Arbeitsplatzrechner vorhersagen, welche Ausführungszeit auf einem Großrechner<br />

benötigt werden wird. Außerdem legt das Skalierungsverhalten fest, welcher Algorithmus<br />

asymptotisch das Rennen gewinnt.<br />

Die Problemgröße bei einer diskreten Fourier-Transformation ist die Anzahl der Datenpunkte<br />

N. Im Abschnitt 8.1.3 haben wir besprochen, dass die diskrete Fourier-Transformation<br />

eine lineare Transformation ist <strong>und</strong> deshalb als Matrixmultiplikation aufgefasst<br />

werden kann (siehe Gl. 8.20). Die Ausführungszeit, die man <strong>für</strong> eine solche Matrixmultiplikation<br />

benötigt, steigt dabei proportional zur Anzahl der Matrixelemente, also zu N 2 .<br />

Man spricht im Jargon auch von einem N 2 -Algorithmus.<br />

Die Fast-Fourier-Transform (FFT) ist ein alternativer Algorithmus, der wie N ln N skaliert,<br />

also erheblich besser ist als die direkte Matrixmultiplikation. Allerdings unterliegt<br />

er folgenden Einschränkungen:<br />

• Die Stützstellen müssen äquidistant sein, was bei der ‘normalen’ diskreten Fouriertransformation<br />

im Prinzip nicht unbedingt der Fall sein muss.<br />

• Der FFT-Algorithmus arbeitet besonders effizient, wenn N eine Zweierpotenz ist.<br />

Der FFT-Algorithmus gehört zu den Standardalgorithmen <strong>und</strong> ist in vielen Programmbibliotheken<br />

verfügbar. Er beruht auf einer rekursiven Zweiteilung der Datenmenge, womit<br />

plausibel wird, warum er besonders gut <strong>für</strong> N = 2 n funktioniert. 6 Die in Gl. (8.17) auftretende<br />

Summe wird dazu in gerade <strong>und</strong> ungerade Anteile getrennt (hier <strong>für</strong> Zählung<br />

0, . . . , N − 1, in der Vorlesung hatten wir 1, . . . , N):<br />

ã k =<br />

N/2−1<br />

∑<br />

t=0<br />

F (N)<br />

k,2t a 2t<br />

} {{ }<br />

gerade<br />

+<br />

N/2−1<br />

∑<br />

t=0<br />

F (N)<br />

k,2t+1 a 2t+1<br />

} {{ }<br />

ungerade<br />

, (8.46)<br />

wobei F (N)<br />

k,n = 1<br />

√<br />

N<br />

exp( 2πikn<br />

N<br />

) ist. Wegen<br />

F (N)<br />

k,2t = 1 √<br />

2<br />

F (N/2)<br />

k,t<br />

, F (N)<br />

k,2t+1<br />

lässt sich dieser Ausdruck umformen zu<br />

ã k = √ 1<br />

N/2−1<br />

∑<br />

2<br />

t=0<br />

F (N/2)<br />

k,t<br />

a 2t<br />

} {{ }<br />

gerade<br />

N )<br />

2πik<br />

exp(<br />

= √<br />

2<br />

F (N/2)<br />

k,t<br />

(8.47)<br />

2πik<br />

exp(<br />

N<br />

+ √ )<br />

N/2−1<br />

∑<br />

F (N/2)<br />

2<br />

k,t<br />

a 2t+1 , (8.48)<br />

t=0<br />

} {{ }<br />

ungerade<br />

6 Professionelle Implementierungen des FFT-Algorithmus arbeiten auch dann, wenn N keine Zweierpotenz<br />

ist. Das kostet aber zusätzliche Ausführungszeit, so dass man in der Praxis, wenn N frei wählbar<br />

ist, mit Zweierpotenzen arbeiten sollte.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


146 Fourier-Transformation<br />

Abbildung 8.4: FFT-Chip SPIFFEE von Bevan Baas [3].<br />

Über den geschweiften Klammern stehen dabei zwei diskrete Fourier-Transformationen<br />

von jeweis halb so viel Datenpunkten. Mit diesen Formeln lässt sich die FFT bequem<br />

rekursiv programmieren. Man muss lediglich als Abbruchbedingung hinzufügen, dass die<br />

Fourier-Transformierte einer einzigen Zahl bei N = 1 die Zahl selbst ist.<br />

Hier sehen Sie eine rekursive Mathematica R○ -Funktion <strong>für</strong> den FFT-Algorithmus. Argument<br />

ist die Liste lst. Bei der Länge L = 1 wird abgebrochen <strong>und</strong> die Liste unverändert<br />

zurückgegeben, ansonsten wird die Liste in zwei Teillisten even <strong>und</strong> odd zerlegt wird. Beide<br />

werden rekursiv Fourier-transformiert. Mit Join[fteven, fteven] bzw. Join[ftodd,<br />

ftodd] werden die Fouriertransformierten periodisch verzweifacht <strong>und</strong> anschließend mit<br />

den in phases abgelegten Phasenfaktoren elementweise multipliziert:<br />

FFT[lst_ ] := Module[{L, even, odd, fteven, ftodd, phases},<br />

L = Length[lst];<br />

If[L == 1, lst,<br />

even = Table[lst[[2 x - 1]], {x, 1, L/2}];<br />

odd = Table[lst[[2 x]], {x, 1, L/2}];<br />

fteven = FFT[even]; ftodd = FFT[odd];<br />

phases = Table[Exp[2 Pi I (s - 1)/L], {s, 1, L}];<br />

(Join[fteven, fteven] + phases*Join[ftodd, ftodd])/ Sqrt[2] ]]<br />

Dieser Algorithmus kann nur Daten verarbeiten, welche die Länge einer Zweierpotenz<br />

haben. Sonderbehandlungen oder eine Sicherheitsabfrage fehlen noch.<br />

Bei manchen Anwendungen ist es notwendig, einen Datenstrom extrem schnell Fouriertransformieren<br />

zu können. Zu diesem Zweck gibt es sowohl universitäre als auch kommerzielle<br />

Hardware-Chips (Abb. 8.4). Unter http://nova.stanford.edu/˜bbaas/spiffee.html<br />

finden Sie eine Liste mit Weltrekorden, so liegt der Geschwindigkeitsrekord <strong>für</strong> eine FFT<br />

von N = 1024 Werten derzeit bei etwa 10µs, aber genau so wichtig ist es, <strong>für</strong> die Transformation<br />

nur wenig Energie zu verbrauchen.<br />

8.5 Aufgaben<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


Literaturverzeichnis<br />

[1] W. Kinzel and G. Reents, Physics by Computer, Springer, Berlin (1998), zu beziehen<br />

über Prof. Reents.<br />

[2] Siehe beispielsweise http://mathworld.wolfram.com/FourierTransform.html<br />

oder http://de.wikipedia.org/wiki/Fourier-Transformation<br />

[3] Bevan M. Baas, A Low-Power, High-Performance, 1024-point FFT Processor,<br />

IEEE Journal of Solid-State Circuits (JSSC), pp. 380-387, March 1999, vgl.<br />

http://nova.stanford.edu/ bbaas/spiffee.html<br />

[4] G. Marsaglia and A. Zaman, A new class of random number generators, The Annals<br />

of Applied Probability 1, No. 3, 462-480 (1991).<br />

[5] R. M. Ziff, Four-tap shift-register-sequence random-number generators, Computers<br />

in Physics 12, No. 4, 385-392 (1998), im Internet frei unter<br />

http://arxiv.org/abs/cond-mat/9710104.<br />

[6] zu chemischen Oszillationen siehe:<br />

http://de.wikipedia.org/wiki/Belousov-Zhabotinsky-Reaktion Die gezeigten<br />

Abbildungen stammen ebenfalls von dort.<br />

[7] R. Field, E. Körös, and R. Noyes, Oscillations in Chemical Systems. II. Thorough<br />

Analysis of Temporal Oscillation in the Bromate-Cerium-Malonic Acid System, J.<br />

Am. Chem. Soc. 94, 8649 (1972).<br />

[8] R. Kroon and H. Fleurent and R. Sprik, Diffusion-limited exciton fusion reaction<br />

in one-dimensional tetramethylammonium manganese trichloride (TMMC), Phys.<br />

Rev. E 47, 2462 (1993).<br />

[9] D. ben-Avraham, The method of inter-particle distribution functions for diffusionreaction<br />

systems in one dimension, Mod. Phys. Lett. B 9, 895 (1995).<br />

[10] H. Hinrichsen The phase transition of the diffusive pair contact process revisited,<br />

Physica A 361, 457 (2006), als Zeitschrift in der Bibliothek vorhanden, im Internet<br />

frei unter http://arxiv.org/abs/cond-mat/0501075.<br />

[11] R. Dickman and J. K. da Silva, Moment ratios for absorbing-state phase<br />

transitions, Phys. Rev. E 58, 4266 (1998), im Internet frei unter<br />

http://arxiv.org/abs/cond-mat/9805294.<br />

[12] A. L Barabási and H.E. Stanley, Fractal concepts in surface growth, Cambridge<br />

University Press, U.K., 1995.<br />

[13] S. Redner, A Guide to First-Passage Processes, Cambridge University Press, Cam-<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


148 Literaturverzeichnis<br />

bridge, UK (2001), vorhanden in der Lehrstuhlbibliothek von TP III.<br />

[14] T. A. Witten and L. M. Sander, Phys. Rev. Lett. 47, 1400 (1981), als Zeitschrift in<br />

der Bibliothek vorhanden,<br />

[15] B. B. Mandelbrot, B. Kol, and A. Aharony, Angular gaps in radial diffusion-limited<br />

aggregation: Two fractal dimensions and nontransient deviations from linear selfsimilarity,<br />

Physical Review Letters 88, 055501 (2002), als Zeitschrift in der Bibliothek<br />

vorhanden, im Internet frei unter http://arxiv.org/abs/cond-mat/0109426.<br />

[16] A. L Barabási and H.E. Stanley, Fractal concepts in surface growth, Cambridge<br />

University Press, U.K., 1995.<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


Index<br />

„ 2<br />

Abbildung<br />

chaotische, 60<br />

iterative, 46, 61<br />

logistische, 51<br />

Abtastrate, 141<br />

Adams-Bashforth-Methode, 18<br />

Aggregat, 86<br />

Algorithmus<br />

leapfrog,leapfrog-Algorithmus, 16<br />

symplektischer,Iteration<br />

symplektische, 16<br />

Anfangswerte, 19<br />

Antikorrelationen, 60<br />

Apfelmännchen, 52<br />

asymptotisch proportional, 118<br />

Attraktor, 44<br />

seltsamer, 45<br />

Automat<br />

zellulärer, 101<br />

Belousov-Zhabotinsky-Reaktion, 94<br />

Bewegungsgleichung<br />

stochastische, 81<br />

Bifurkation, 48<br />

Billard, 37<br />

Box-Muller-Transformation, 69<br />

Chaos, 37<br />

deterministisches, 37<br />

chaotische Abbildung, 60<br />

Cluster, 86<br />

unendlicher, 117<br />

diffusionsbegrenztes Wachstum, 86<br />

Diffusionsgleichung, 82<br />

Diffusionskonstante, 82<br />

Dimension<br />

fraktale, 89<br />

kritische, 109<br />

Diskretisierung, 10<br />

DLA, 86<br />

Dreiecksgitter, 97<br />

Dynamik<br />

lokale, 101<br />

nichtlokale, 101<br />

zufällig-sequentielle, 120<br />

dynamischer Exponent, 121<br />

Einschrittverfahren, 10, 17<br />

Ensemblemittel, 59<br />

ergodisch, 98<br />

Euler-Verfahren,Interationsverfahren<br />

Euler, 11<br />

Exponent<br />

kritischer, 118<br />

Exponenten<br />

kritische, 113<br />

Exzitone, 104<br />

Faltung<br />

mehrfache, 76<br />

Faltungsintegral, 75<br />

Faltungsprodukt, 75, 140<br />

Faltungssatz, 77, 140<br />

Fast-Fourier-Transform, 145<br />

Fehlerfunktion, 69<br />

Feigenbaumkonstante, 50<br />

Fenster<br />

chaotisches, 43<br />

Fixpunkt, 46<br />

Fokker-Planck-Gleichung, 82<br />

Forminvarianz, 83<br />

Fourier-Reihen, 134<br />

Fourier-Transformation, 131<br />

diskrete, 135<br />

gleitende diskrete, 137<br />

kontinuierliche, 132<br />

Fraktal, 45, 88<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


150 Index<br />

Funktion<br />

charakteristische, 77<br />

Gaußverteilung, 68<br />

Liouville<br />

gewöhnliche Differentialgleichungen,Differentialgleichungen<br />

gewöhnliche, 9<br />

Gitter, 96<br />

Gittergeometrien, 97<br />

Grenzfläche, 125<br />

Häufigkeit<br />

relative, 67<br />

Heteroepitaxie, 125<br />

Heun<br />

Verfahren von, 11<br />

Histogramm, 67<br />

Homoepitaxie, 125<br />

homogene Funktionen, 124<br />

Honigwabengitter, 97<br />

Hyperskalenrelation, 122<br />

Integration<br />

numerische, 1<br />

Iteration<br />

einstufige, 61<br />

Tiefe, 63<br />

Iterationsfehler, 11<br />

Iterationsindex, 10<br />

iterative Abbilung, 61<br />

Koagulation, 103<br />

Komplexkonjugation<br />

einer Fourier-Transformierten, 138<br />

Konfiguration, 98<br />

Konfindenzniveau, 68<br />

Kontaktprozess, 120<br />

Kontinuumlimes, 82<br />

Kontrollparameter, 113<br />

Korrektor, 11<br />

Korrelationen<br />

Anti-, 107<br />

Korrelationsfreiheit, 58<br />

Korrelationsfunktion, 59<br />

Zweipunkt-, 59<br />

kritischen Schwelle, 114<br />

Lösung<br />

einfach-periodische, 42<br />

mehrfach-periodische, 43<br />

Laplace-Transformationen, 139<br />

Limes<br />

überdämpfter, 93<br />

Satz von, 40<br />

Lyapunov-Exponent, 40, 41<br />

mittlerer, 41<br />

Lyapunov-Exponenten<br />

Spektrum, 40, 41<br />

Lypunov-Exponent<br />

maximaler, 41<br />

Mandelbrotmenge, 52<br />

Markov-Eigenschaft, 101<br />

Massenwirkungsgesetz, 93<br />

Mastergleichung, 81<br />

Mehrschrittverfahren, 10, 17<br />

explizites, 18<br />

implizites, 18<br />

lineares, 18<br />

Mittel<br />

arithmetisches, 59<br />

Enseble-, 59<br />

Modenzerlegung, 24<br />

Molekularstrahlepitaxie, 125<br />

Musterbildung, 95<br />

Newton-Cotes-Verfahren, 3<br />

Niveauabstoßung, 38<br />

Niveaukreuzungen, 38<br />

Normalverteilung, 68<br />

Numerov-Verfahren, 22<br />

Oberflächenspannung, 126<br />

Ordnungsparameter, 113<br />

Oszillationen<br />

chemische, 94<br />

Periode, 60<br />

Periodenverdopplung, 43, 48<br />

periodisches Fortsetzen,Fortsetzung<br />

periodische, 133<br />

Perkolation, 114<br />

gerichtete, 114<br />

isotrope, 114<br />

phänomenologische Skalentheorie, 123<br />

Phasenübergang, 113, 114<br />

diskontinuierlicher, 113<br />

erster Ordnung, 113<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


Index 151<br />

kontinuierlicher, 113<br />

zweiter Ordnung, 113<br />

Phasendiagramm, 113<br />

Poincaré-Schnitt, 44<br />

Prädikator, 11<br />

Pseudozufallszahlen, 60<br />

Quadratgitter, 97<br />

Quantenbillard, 38<br />

Quantenchaos, 37<br />

Quantenzustand, 20<br />

Rückkehrexponent, 85<br />

Randbedingungen<br />

Dirichlet-, 96<br />

periodische, 97<br />

torodiale, 97<br />

von Neumann, 97<br />

random walk, 80<br />

Randwerte, 19<br />

Raten, 120<br />

Rauigkeit, 126<br />

Rauigkeitsexponent,Exponent<br />

Rauigkeits, 127<br />

Rauschen<br />

weisses, 79<br />

Reaktions-Diffusionsmodelle, 93<br />

Rechteckverfahren, 1<br />

Rekursion,Algorithmen<br />

rekursive, 146<br />

Reskalierung, 83, 123<br />

Runge-Kutta Verfahren<br />

klassisches, 13<br />

Runge-Kutta-Fehlberg Verfahren, 14<br />

Runge-Kutta-Verfahren,Iterationsverfahren<br />

RungeKutta, 12<br />

Runge-Lenz-Vektor,Vektor<br />

Runge-Lenz, 17<br />

Sampling, 67<br />

Schmetterlingseffekt, 37<br />

Schrödingergleichung, 18, 82<br />

stationäre, 21<br />

zeitabhängige, 24<br />

Schrittweite, 10<br />

Selbstähnlichkeit, 45<br />

Simpsonregel, 3<br />

Skalenform, 83<br />

Skalenfreiheit, 122<br />

Skalenfunktion, 83<br />

Skaleninvarianz, 117<br />

Skalenrelationen, 122<br />

Skalentransformation, 123<br />

Skalierungseigenschaften, 83<br />

Spitzeneffekt, 88<br />

Stützstellen, 1<br />

System<br />

-zustand, 98<br />

System von Differentialgleichungen,Differentialgleichunge<br />

System, 9<br />

Systeme<br />

integrable, 21<br />

Transformation<br />

Box-Muller, 69<br />

unitäre, 136<br />

Transienten, 118<br />

Translation<br />

einer Fourier-Transformierten, 137<br />

Trapezregel, 2<br />

Umkehrfunktion, 66<br />

Unitarität, 29<br />

Universalität, 79, 113, 114, 124<br />

der Feigenbaumkonstante, 51<br />

Universalitätsklasse, 113, 124<br />

universelle Skalenfunktion, 123<br />

Updates<br />

alternierende, 99<br />

ordered-sequential, 100<br />

parallele, 99<br />

random-sequential, 100<br />

verallgemeinerte homogene Funktionen,<br />

124<br />

Verteilung<br />

bimodale, 81<br />

Vielteilchensysteme, 93<br />

Wärmeleitungsgleichung, 18, 82<br />

Wachstum<br />

diffusionsbegrenztes, 86<br />

Wachstumsprozess, 125<br />

Wahrscheinlichkeitsdichte, 59<br />

Wahrscheinlichkeitsverteilung, 81<br />

faktorisierende, 58<br />

Wellenfunktion, 20<br />

Wellengleichung, 18, 131<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics


152 Index<br />

Wellenpaket<br />

Zerfließen, 26<br />

Zeitreihe, 137<br />

Zellulärer Automat, 101<br />

deterministischer, 101<br />

stochastischer, 101<br />

Zerfließen des Wellenpakets, 31<br />

Zufallsbewegung, 80<br />

Zufallsgröße, 81<br />

Zufallszahlen<br />

Fließkomma, 59<br />

Pseudo, 60<br />

reelle, 59<br />

Zufallszahlengenerator, 58<br />

Zustand, 63, 81<br />

stationärer, 87<br />

Zustandsraum, 98<br />

Haye Hinrichsen — Vorlesungsskript Computational Physics

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!