Computergestützte Methoden der exakten Naturwissenschaften

Werbung
Computergestützte Methoden der
exakten Naturwissenschaften
Daniel Sebastiani
Vorwort
Dieses Skript entstand aus der Vorlesung Computergestützte Methoden der exakten
Naturwissenschaften am Fachbereich Physik der Freien Universität Berlin im Wintersemester 2009/2010. Die Vorlesung orientiert sich inhaltlich in Teilen an dem Buch
Stoer/Bulirsch: Numerische Mathematik sowie an der Vorgängervorlesung aus den
vorhergehenden Jahren, die von E.K.U. Groß gehalten wurde.
Mein großer Dank gilt Arvid Conrad Ihrig, der das handschriftliche Vorlesungsmanuskript im Sommer 2011 vollständig in LATEX gesetzt hat, vielerorts inhaltlich
überarbeitet und an allen relevanten Stellen mit anschaulichen Grafiken versehen
hat. Ohne ihn gäbe es dieses Skript nicht in der vorliegenden Form. Sollten sich trotz
aller Sorgfalt dennoch Fehler eingeschlichen haben, so sind wir natürlich sehr dankbar
für Hinweise an [email protected] oder [email protected]
Berlin, Oktober 2011
Daniel Sebastiani
3
Inhaltsverzeichnis
1. Fehlerarithmetik
1.1. Näherungsfehler . . . . . . . . . . . . . . . .
1.2. Modellfehler . . . . . . . . . . . . . . . . . .
1.3. Rundungsfehler . . . . . . . . . . . . . . . .
1.3.1. Binärdarstellung von reellen Zahlen .
1.3.2. Rundung . . . . . . . . . . . . . . . .
1.4. Fehlerfortpflanzung in Algorithmen . . . . .
1.4.1. Formale Darstellung von Algorithmen
1.4.2. Fehlerfortpflanzung im Detail . . . .
1.4.3. Konditionszahlen von Algorithmen .
.
.
.
.
.
.
.
.
.
7
7
10
12
12
14
15
16
18
19
.
.
.
.
23
23
26
29
33
3. Approximative Darstellung von Funktionen
3.1. Interpolation mit Polynomen . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Interpolation mit Lagrange-Polynomen . . . . . . . . . . . . .
3.1.2. Neville-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3. Newtondarstellung, Horner-Schema und dividierte Differenzen
3.1.4. Mögliche Probleme: Extrapolation und Runges Phänomen . .
3.2. Interpolation mit rationalen Funktionen . . . . . . . . . . . . . . . .
3.3. Kubische Spline-Interpolation . . . . . . . . . . . . . . . . . . . . . .
3.4. Trigonometrische Interpolation . . . . . . . . . . . . . . . . . . . . . .
39
40
40
42
44
48
51
53
58
4. Fouriertransformationen
4.1. Trigonometrische Interpolation und Fouriertransformationen . . . . .
63
63
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2. Grundlagen linearer Gleichungssysteme
2.1. Endlich dimensionale Vektorräume . . . . . . . . . . . . . .
2.1.1. Normen auf Vektorräumen von Matrizen . . . . . . .
2.2. Gaußsches Eliminationsverfahren . . . . . . . . . . . . . . .
2.3. Iterative Verfahren zur Lösung von LGS (”Linear Descent“)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
Inhaltsverzeichnis
4.2. Algorithmik der Fouriertransformation . . . . . . . .
4.2.1. Diskrete Fourier-Transformation . . . . . . . .
4.2.2. Fast Fourier Transform . . . . . . . . . . . . .
4.3. Bedeutung der Fouriertransformation in der Numerik
5. Numerische Integration
5.1. Quadratur nach Newton/Cotes
5.2. Integration nach Gauß . . . . .
5.3. Monte Carlo Integration . . . .
5.3.1. Importance Sampling . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6. Bestimmung von Nullstellen
6.1. Einfache Algorithmen zur Nullstellensuche . . .
6.1.1. Intervallhalbierungsverfahren . . . . . .
6.1.2. Fixpunkte und sukzessive Approximation
6.1.3. Newtonverfahren . . . . . . . . . . . . .
6.2. Nichtlineare Gleichungssysteme . . . . . . . . .
6.3. Nullstellen von Polynomen . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
64
65
66
69
.
.
.
.
77
77
82
91
93
.
.
.
.
.
.
97
97
97
99
102
104
105
7. Extrema und nichtlineare Optimierung
111
7.1. Steepest Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.2. Conjugate Gradients . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.2.1. Preconditioning . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8. Eigenwertprobleme
121
8.1. Die Potenzmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
8.2. Householder-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 126
9. Matrix-Inversion
133
9.1. Matrix-Inversion mit Gauß-Elimination . . . . . . . . . . . . . . . . . 133
9.2. QR-Zerlegung und Matrixinversion . . . . . . . . . . . . . . . . . . . 134
10.Lineare Regression
139
A. Anhang
149
A.1. Liste der Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . 149
A.2. Liste der Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
A.3. Liste der Sätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6
1. Fehlerarithmetik
Eines der grundlegenden Ziele in den Naturwissenschaften ist die Beschreibung der
Natur durch einfache Gleichungen und deren Lösungen. Diese Gleichungen sind normalerweise jedoch nicht mit Papier und Bleistift lösbar. Stattdessen kann man entweder die Gleichungen mit Randbedingungen bis zur Lösbarkeit vereinfachen oder aber
versuchen diese Gleichungen numerisch zu lösen. Dabei ist es eine wichtige Fähigkeit,
die Genauigkeit numerischer Rechenergebnisse beurteilen zu können. Bei der numerischen Lösung eines Problems können verschiedene Fehlerquellen auftreten:
1. Eingabefehler (Startwerte)
2. Darstellungsfehler (Näherungs-/Approximationsfehler)
3. Modellfehler
4. Rundungsfehler
Die Fehler, die durch Ungenauigkeiten in den Eingabedaten entstehen, sind mit den
Mitteln der Numerik natürlich nicht korrigierbar. Darstellungsfehler entstehen durch
die Verwendung von Näherungen anstelle der exakten (mathematischen) Ausdrücke
und lassen sich durch eine geeignete Wahl der verwendeten Approximationen kontrollieren. Modellfehler entstehen durch die Verwendung eines einfacheren Modells
anstelle des echten Problems und lassen sich mit ein dem ursprünglichen Problem
ähnlicherem Modell reduzieren. Durch die numerische Darstellung einer Zahl und der
damit verbundenen endlichen Genauigkeit entstehen außerdem noch Rundungsfehler.
1.1. Näherungsfehler
Viele mathematische Ausdrücke, die im Rahmen physikalischer Problemstellungen
auftreten sind in ihrer exakten Formulierung nicht numerisch berechenbar oder zu
aufwändig zu berechnen. Die Ersetzung dieser Probleme durch einfachere Ersatzprobleme führt dann zu Näherungsfehlern, zusätzlich zu den Fehlern, die aus nicht
7
1. Fehlerarithmetik
exakten Startwerten und Rundungen entstehen. Häufig auftretende Probleme dieser
Art sind beispielsweise Funktionen, die in ihrer exakten Darstellung durch unendliche
Reihen oder ähnliches definiert sind.
Beispiel 1.1. Bei der Berechnung der Exponentialfunktion greift man in der Regel
auf ihre Reihendarstellung zurück. Um diese unendliche Reihe numerisch handhaben
zu können, nähert man sie jedoch durch eine endliche Taylorreihe an.
ex =
∞
X
xn
n=0
n!
→ ex ≈
N
X
xn
n=0
n!
Beispiel 1.2. Die Lösungen der Schrödinger-Gleichung können durch die Basis des
sie enthaltenden Funktionenraumes dargestellt werden. Da diese Basis jedoch unendlich ist, ist die numerische Handhabung dieser “unendlichdimensionalen“ Lösung problematisch. Als numerisch lösbares Ersatzproblem bietet sich die Verwendung eines
endlichen Satz an orthonormalen Basisfunktionen an.
|Ψi ≈
b |Ψi = E |Ψi →
⇒H
N
X
n=0
N
X
n=0
αn |ϕn i
b |ϕn i = E
αn H
N
X
αn |ϕn i
n=0
Neben der Approximation unendlicher Ausdrücke, ist auch die Näherung kontinuierlicher Variablen durch eine Diskretisierung auf ein “Gitter” eine häufig anzutreffende
Variante des Näherungsfehlers. In dem Beispiel mit der Schrödinger-Gleichung tritt
dieser Fehler natürlich zusätzlich zu dem Fehler aus der Darstellung durch die endliche
Basis auf.
Beispiel 1.3. Die Lösung einer Differentialgleichung kann man durch die Untersuchung des Ersatzproblems finden, bei dem man den Vektorraum auf eine endliche
Menge von Gitterpunkten reduziert. Durch die Beschränkung der Untersuchung der
Differentialgleichung auf diese Gitterpunkte führt man das kontinuierliche Problem
in eine diskrete Differenzengleichung über.
d
∆f
f (x) = f (x) →
= f (x)
dx
∆x
Besitzt die Lösung eine oder mehrere Polstellen, ergeben sich bei diesem Ansatz
natürlich Probleme.
8
1.1. Näherungsfehler
f(x)
f(x)
xk
...
x1
x2
x3
Δf(x)
Δx
x
x
(a) Diskretisierung einer kontinuierlichen Variable (b) Differenzenquotienten als numerische Approximation von Ableitungen
Abbildung 1.1.: Verfeinerung der Diskretisierung zur Kontrolle des Näherungsfehlers
Beispiel 1.4. Ähnlich kann man auch bei der Berechnung von Integralen verfahren,
indem man das Integral in eine Riemann-Summe umschreibt und diese dann durch
eine endliche Summe approximiert.
Z
f (x)dx →
N
X
∆xi f (xi
i=1
f(x)
f(x)
Die auf diese Weise entstehenden Fehler sind (im Prinzip) durch die Feinheit des
Gitters oder die Dimensionalität der Basis kontrollierbar.
x
(a) grobe Diskretisierung
x
(b) feine Diskretisierung
Abbildung 1.2.: Verfeinerung der Diskretisierung zur Kontrolle des Näherungsfehlers
Eine Verfeinerung, beziehungsweise Vergrößerung dieser bringt aber auch Nachteile
mit sich: es müssen mehr Rechenoperationen durchgeführt werden und die Rundungsfehler nehmen darüber hinaus auch zu.
Beispiel 1.5. Verfeinert man das Gitter für die Diskretisierung der Differentialgleichung aus Beispiel 1.3 so werden sowohl die Differenzen der Funktionswerte als auch
die Abstände zwischen den Gitterpunkten immer kleiner. Durch die immer kleiner
werdenden Differenzen und die endliche Genauigkeit (mehr dazu in Abschnitt Ab-
9
1. Fehlerarithmetik
schnitt 1.3) haben Rundungsfehler in dem Differenzenquotienten dann einen zunehmenden Einfluss auf die Genauigkeit des Ergebnisses.
Die Kunst der numerischen Physik ist nun, den optimalen Kompromiss zwischen den
einzelnen Fehlern und dem Rechenaufwand zu finden.
1.2. Modellfehler
Die Grundgleichungen der Physik haben oft eine erfreulich einfache Struktur, die
Einteilchen-Schrödinger-Gleichung beispielsweise ist eine lineare Differentialgleichung
mit nur einem Differentialoperator und einer Potentialfunktion. Aber selbst die einfachsten Gleichungen führen in der Praxis meist zu einer solchen Komplexität der
Lösungen, dass eine direkte numerische Berechnung undenkbar ist. Zumeist ist die
Dimensionalität des Systems das Hauptproblem.
Beispiel 1.6. Am Beispiele der Schrödinger-Gleichung lässt sich dies anschaulich
erklären. Betrachtet man zunächst die Schrödinger-Gleichung für ein einzelnes Teilchen in drei Dimensionen.
~2
∇ + V (~r) Ψ(~r) = EΨ(~r)
−
2m
Ein naheliegender Lösungsansatz ist hier hier die Diskretisierung des Raumes auf
ein Gitter. Mit einer Einteilung von je 10 Gitterpunkten entlang jeder Achse kommt
man also auf eine Gesamtzahl von 1000 Gitterpunkten beziehungsweise Funktionswerten für die Lösungswellenfunktion Ψ~r. Betrachtet man nun jedoch statt eines ein-
-
-
- 2s,2p
1s
-
+
(a) 3D-Gitter für Einteilchen-Wellenfunktion
-
-
-
(b) Stickstoffatom
Abbildung 1.3.: schematische Darstellung des Dimensionalitätsproblems
zelnen Teilchens ein Stickstoff-Atom, hat man sieben Elektronen im System und die
10
1.2. Modellfehler
Vielteilchen-Schrödinger-Gleichung zu lösen. Die Gesamtwellenfunktion ergibt sich
als Produkt der einzelnen Wellenfunktionen und die Dimensionalität des Problems
skaliert entsprechend.
b=
H
X e2
X
X ~2
Ze2
∇2i +
−
2m
|~ri − ~rj |
|~rcore − ~ri |
i,j
i
i
Bei der Anwendung derselben Diskretisierung haben wir nun also eine Gesamtwellenfunktion, die von 7 verschiedenen Ortskoordinaten abhängt und damit effektiv ein
21-dimensionales Problem darstellt. Da jede Dimension 10 Gitterpunkte besitzt, sind
also 1021 Funktionswerte zur Darstellung der Lösung notwendig. Unter der Annahme
der Schätzwerte eines Platzbedarfs von 10 Byte pro Zahl und einer Speicherkapazität
von 1010 Byte pro DVD und eines DVD-Gewichts von 10g bräuchte man dafür bereits
107 t an DVDs.
Dieses Komplexitätsproblem verschärft sich exponentiell mit der Systemgröße. Ein
einfaches Wassermolekül würde bereits einen Speicherplatz von 1016 t DVDs verbrauchen. Da eine direkte Behandlung des Problems also keine Option ist, muss eine
Vereinfachung der Fragestellung vorgenommen werden - die Modellbildung.
Beispiel 1.7. Eine mögliche Vereinfachung des eben angeführten Problems lässt sich
durch Ausnutzung der starken Bindung der 1s-Elektronen erzielen. Aufgrund der
Kernnähe fasst man den Kern und die kernnahen 1s-Elektronen zu einem effektiven
Potential (“Pseudopotential”) zusammen und reduziert auf diese Weise die Dimensionalität des Problems.
b = EΨ → H
bpseudo Ψpseudo = Epseudo Ψpseudo
HΨ
Die Aufgabe des Physikers besteht nun darin, ein Pseudopotential Vpseudo zu finden,
welches die echten Valenzorbitale möglichst gut reproduziert. Der Unterschied Ψ(~ri ) ↔
Ψpseudo (~ri ) ist der Modellfehler.
Oft ist man in der Situation, bei einem gegebenen Problem entweder die echte Gleichung mit großen Näherungsfehlern (grobes Gitter oder dergleichen) oder eine Modellgleichung mit einem deutlich kleineren Näherungsfehlern lösen zu können. Ein
zentrales Problem des Modellfehlers ist, dass man ihn schwer kontrollieren kann, da
hierzu die echten Gleichungen oder ein besseres Modell mit Näherungsfehlern derselben Größe zu lösen wären.
11
1. Fehlerarithmetik
1.3. Rundungsfehler
Beim Ausführen von Rechenoperationen auf der Menge der reellen Zahlen treten im
Computer Rundungsfehler auf, deren Ursprung im Folgenden beleuchet werden soll.
Wie weitreichend die Auswirkungen sein können wird in Abschnitt 1.4 aufgezeigt.
1.3.1. Binärdarstellung von reellen Zahlen
Reelle Zahlen werden im Computer im Gleitpunktformat abgespeichert. Gegenüber
dem Festpunktformat ermöglicht dieses eine deutlich bessere Handhabung sehr großer
und sehr kleiner Zahlen ohne einen unnötig hohen Bedarf an Speicherplatz.
Festpunktformat
4
1234.567 = 0. 1234567
| {z } 10 |{z}
Mantisse
Gleitpunktformat
Exponent
Die Computer-interne Darstellung dieser Zahlen erfolgt nicht im Dezimalsystem, sondern im Binärsystem, da nur die Zustände “keine Spannung“ und “Spannung” existieren. Eine reelle Zahl wird im Computer also wie folgt dargestellt:
x = ±
N
X
αn 2n + α0 20 +
n=1
N, M ∈ N
M
X
!
α−m 2−m
m=−1
αi ∈ {0, 1}
Theoretisch lässt sich auf diese Weise jede reelle Zahl durch eine passende Wahl von
N und M beliebig genau darstellen. In der Informatik werden die hier mit αi bezeichneten Werte als “Bit“ bezeichnet und stellen die kleinste Speichereinheit dar, in der
Anwendung werden je 8 Bit als “Byte“ zusammengefasst. Neben der Beschränkung
des Computers auf die Verwendung endlich vieler Bits zur Darstellung einer Zahl
ergeben sich jedoch noch weitere Schwierigkeiten in der Anwendung.
Beispiel 1.8. Im folgenden Beispiel sind alle mit Subskript 10 versehenen Zahlen als
dezimal dargestellte Zahlen zu verstehen und alle mit Subskript 2 als binäre Darstellungen.
(5.0625)10 = 1 · 22 + 0 · 21 + 1 · 20 + 0 · 2−1 + 0 · 2−2 + 0 · 2−3 + 1 · 2−4
= (101.0001)2 = (0.1010001)2 · 2(11)2
12
1.3. Rundungsfehler
Die Darstellung einer Zahl im Binärsystem kann sich aber auch als kompliziert oder
sogar nicht-endlich erweisen, auch wenn sie im Dezimalsystem eine einfache Darstellung besitzt, wie an folgendem Beispiel gut zu erkennen ist.
(12.34)10 = 1 · |{z}
23 +1 · |{z}
22 +0 · |{z}
21 +0 · |{z}
20 +0 · |{z}
2−1
=8
−2
=4
=2
=1
=0.125
−4
=0.5
1 · |{z}
2
+0 · |{z}
2
+1 · |{z}
2
+0 · |{z}
2
+1 · |{z}
2−6 + . . . ?
=0.25
−3
=0.625
−5
=0.03125
=0.015625
= (1101.010101 . . .)2 = (0.1101010101 . . .)2 · 2(100)2
Im Computer ist die Anzahl der Bits zur Darstellung einer Zahl aber wie bereits
erwähnt endlich und, bedingt durch die Prozessorarchitektur, auch nicht frei wählbar,
um eine effektive Ausführung der Rechenoperationen zu gewährleisten. Die in den
meisten Programmiersprachen implementierten Gleitpunktzahlenformate float und
double haben in der Regel eine Länge von 32 respektive 64 Bits. Mit dieser Wortlänge
muss allerdings die komplette Zahl dargestellt werden, also sowohl Mantisse als auch
Exponent. Die übliche Aufteilung ist in der folgenden Tabelle dargestellt.
Bits für
float
double
Vorzeichen
Exponent
Mantisse
1
8
23
1
11
52
Tabelle 1.1.: Aufteilung der Bits auf die verschiedenen Komponenten der Zahl bei float und double
Aufgrund dieser Einteilung können floats 6 und doubles 15 Dezimal-Ziffern ab der
ersten signifikanten Stelle eindeutig unterscheiden.
Bemerkung. Aufgrund der Binärdarstellung ist diese Aussage natürlich nicht ganz
exakt, aber nach der angegeben Anzahl Ziffern ist es nicht mehr sichergestellt, dass
zwei unterschiedliche Zahlen nicht dieselbe Näherungsdarstellung besitzen und somit
für den Computer unterscheidbar sind.
Außerdem bedeutet diese endliche Darstellung auch, dass auch die Menge der im
Computer darstellbaren Zahlen endlich ist. Demzufolge existiert sowohl eine größte als
auch eine kleinste darstellbare Zahl und für den ”Computer-Zahlenraum” M ergeben
sich folgende Probleme:
• Sei x ∈ M die größte darstellbare Zahl → x + x ∈
/M
13
1. Fehlerarithmetik
• Sei y ∈ M die kleinste darstellbare Zahl → y · 2−1 ∈
/M
In beiden Fällen liegen die Ergebnisse also ausserhalb des darstellbaren Bereichs, das
Ergebnis der ersten Operation ist die symbolische Konstante ∞, die zweite liefert die
Zahl 0 als Ergebnis. Beide Extremfälle sind im Allgemeinen unerwünschte Ergebnisse.
Eine größere Bedeutung für die Numerik haben jedoch die Vorgänge, die zwischen
diesen beiden Extremen stattfinden: Rundungen.
1.3.2. Rundung
Die Rundung im Computer basiert auf denselben Regeln wie das aus der Schule bekannte “Auf- und Abrunden” oder mathematisch ausgedrückt ist der Rundungswert
rd(x) die Zahl y im vorgegebenen Zahlenraum M , die den geringsten Abstand zur
echten Zahl x hat.
x∈
/M
1
rd(x) = argminy∈M ||x − y||
Der relative Rundungsfehler ε und der maximale relative Rundungsfehler εmax ergeben sich dann als:
rd(x) − x
x
= sup ε(x)
ε(x) =
εmax
x∈R
Zur sinnvollen Anwendung dieser Definition in der Numerik ist x aus dem Teilintervall
der reellen Zahlen zu wählen, die im Computer dargestellt werden können.
Beispiel 1.9. Im Dezimalsystem mit 4 Ziffern in der Mantisse verlaufen Rundungen
also wie folgt:
rd(0.12345) = 0.1235
rd(3.141592) = rd(0.3141592 · 101 )
= 0.3142 · 101
Der maximale relative Rundungsfehler ergibt sich in diesem Beispiel als 5 · 10−4 .
1
Die Funktion argmin liefert als Ergebnis die Menge an Argumenten, die den nachfolgenden Ausdruck minimieren.
14
1.4. Fehlerfortpflanzung in Algorithmen
Der maximale relative Fehler hängt demzufolge von der Wortlänge, die die verwendete
Computerarchitektur verwendet ab. Im Binärsystem mit t Mantissenziffern ergibt sich
dieser, auch Maschinengenauigkeit genannte, Wert dann als:
εmax = 2−t
rd(x) = x(1 + ε)
|ε| ≤ εmax
1.4. Fehlerfortpflanzung in Algorithmen
Nach den Betrachtungen des vorherigen Abschnitts ist es naheliegend, zu überlegen,
was genau bei der Ausführung elementarer Rechenoperationen passiert. Denn das
Ergebnis einer binären Operation auf zwei Zahlen aus M muss nicht zwangsweise
wieder in M liegen und wird deswegen gerundet. Formal lassen sich Ersatzoperationen
für x, y ∈ M wie folgt definieren:
x ⊕ y := rd(x + y)
x  y := rd(x − y)
...
Eine Ausnahme stellt natürlich der Fall eines Ergebnisses dar, das größer als der darstellbare Zahlenbereich ist. In diesem wird die Konstante ∞ zurückgegeben.
Diese modifizierten Rechenoperationen führen dazu, dass die bekannten arithmetischen Gesetze nicht mehr uneingeschränkt gelten.
Beispiel 1.10. Die folgenden Beispiele sind der Anschaulichkeit halber mit einer
Darstellungsgenauigkeit von 4 Mantissenstellen und einer Exponentenziffer im Dezimalsystem verfasst.
Bei der Addition oder Subtraktion von Zahlen, deren Exponenten sich deutlich unterscheiden, kann es passieren, dass die kleinere Zahl im Rundungsfehler verloren
geht.
x⊕y = x
falls |y| < εmax |x|
1234 ⊕ 0.5 = rd(1234.5) = 1234
Die Multiplikation zweier kleiner Zahlen oder die Division mit deutlich unterschiedlichen Exponenten kann ebenfalls zu unerwünschten Ergebnissen führen.
x⊗y = 0
falls x, y 6= 0 ; y zu klein
15
1. Fehlerarithmetik
(0.2 · 10−5 ) ⊗ (0.3 · 10−6 ) = rd(0.6 · 10−12 ) = 0
xy = ∞
falls x, y 6= 0 ; xzu groß und y zu klein
(0.6 · 105 ) (0.3 · 10−6 ) = rd(0.2 · 1012 ) = ∞
Ebenso sind die Assoziativitätsgesetze der Grundrechenarten nicht mehr uneingeschränkt gültig.
x ⊕ (y ⊕ z) 6= (x ⊕ y) ⊕ z
−3
(0.1111 · 10 ) ⊕ (−0.1234 ⊕ 0.1243) = (0.1111 · 10−3 ) ⊕ (0.9 · 10−3 )
= 0.1011 · 10−2
((0.1111 · 10−3 ) ⊕ −0.1234) ⊕ 0.1243 = 0.1233 ⊕ 0.1243
= 0.1 · 10−2
Wie zu erkennen ist, ist der relative Fehler zum echten Ergebnis 0.10111 · 10−2 in
den beiden Beispielen deutlich unterschiedlich und in zweiterem Falle deutlich größer
als die Maschinengenauigkeit annehmen lässt. Doch auch der erste Fall, in dem die
führenden Mantissenstellen ausgelöscht werden, kann gefährlich werden, wenn die
Eingabewerte bereits fehlerbehaftet sind:
(0.2 ⊕ 0.11 · 10−3 ) (0.2 0.11 · 10−3 ) = 0.2001 0.1999
= 0.0002
Im Vergleich zum echten Ergebnis 0.00022 liegt der relative Fehler hier bei 10%.
1.4.1. Formale Darstellung von Algorithmen
Aufgrund der eben gezeigten Effekte ist es wichtig zwischen verschiedenen, mathematisch äquivalenten Realisierungen eines Problems zu unterscheiden. Im Folgenden
soll nun die Fehlerfortpflanzung in Algorithmen genauer untersucht werden. Hierzu
muss ein Algorithmus zuerst etwas formaler definiert werden:
Definition 1.1 (Algorithmus)
Ein Algorithmus ϕ ist eine eindeutig festgelegte Reihenfolge von elementaren Operationen, die aus einer endliche Menge an Eingabedaten x = {x1 . . . xn } eine endliche
Menge an Ausgabedaten y = {y1 . . . ym } berechnet.
ϕ
:
Rn → Rm
y = ϕ(x)
16
1.4. Fehlerfortpflanzung in Algorithmen
Jeder Zwischenschritt des Algorithmus lässt sich durch einen Vektor x(i) aus Rni
darstellen:
ϕ(i)
:
Rni → Rni+1
x(i+1) = ϕ(i) (x(i) )
Der Algorithmus in seiner Gesamtheit ist dann die Verkettung aller I Einzelschritte.
ϕ = ϕ(I) ◦ ϕ(I−1) ◦ . . . ϕ(2) ◦ ϕ(1)
(1.1)
Beispiel 1.11. Die Assoziativgesetze gelten in der Numerik nicht mehr unbedingt,
wie in Beispiel 1.10 gezeigt wurde. Die beiden dort gezeigten unterschiedlichen Rechenwege in der eben eingeführten Definition des Algorithmus sehen wie folgt aus:
y = ϕ(a, b, c) = a + b + c
!
a
+
b
(0)
Alg. 1:
ϕ(a,b,c) =
c
(1)
∈R
ϕ(u,v) = u + v
Alg. 2:
(0)
ϕ(a,b,c) =
a
b+c
(1)
ϕ(u,v) = u + v
∈ R2
!
∈ R2
∈R
Beispiel 1.12. Für das folgende Beispiel mag die zweite Variante auf den ersten
Blick umständlich und überflüssig erscheinen, ihr Sinn wird aber später deutlich werden, wenn die Konditionszahlen der Probleme analysiert werden.
p
y = ϕ(p, q) = −p + p2 + q


p


(0)
∈ R3
Alg. 1:
ϕ(p,q) =  q 
p2
!
p
(1)
ϕ(p,q,s) =
∈ R2
s+q
!
p
(2)
√
ϕ(p,t) =
∈ R2
t
(3)
ϕ(p,u) = −p + u
∈R
17
1. Fehlerarithmetik

Alg. 2:

p


=  q 
p2


p


=  q 
s+q


p


=  q 
√
t
!
q
=
p+u
(0)
ϕ(p,q)
(1)
ϕ(p,q,s)
(2)
ϕ(p,q,t)
(3)
ϕ(p,q,u)
(4)
∈ R3
∈ R3
∈ R2
∈R
ϕ(q,v) = q/v
Die zweite Variante dieses Beispiels (ϕ(p, q) =
∈ R3
√q
p+
p2 +q
) ist zwar für Fälle, in denen
der Nenner gegen 0 tendiert möglicherweise instabil, ist aber weniger anfällig für
Auslöschungseffekte, die in der ersten Variante für kleine q auftreten können. Wendet
man diese beiden Algorithmen nun auf dieselben Ausgangswerte an, kommt man für
eine Genauigkeit von 12 Mantissenstellen zu folgenden Ergebnissen:
p = 1000
q = 0.018000000081
Alg. 1 : 0.900030136108 · 10−5
Alg. 2 : 0.899999999999 · 10−5
exakt : 0.9 · 10−5
1.4.2. Fehlerfortpflanzung im Detail
Verschiedene Algorithmen können also zu verschiedenen Lösungen für dasselbe mathematische Problem führen. Um die Ursache dafür zu verstehen, werden der relative
Rundungsfehler und seine Auswirkungen bei mehreren aufeinander folgenden Rechenoperationen nun am Beispiel 1.11 ausführlicher betrachtet.
y = ϕ(a, b, c) = a + b + c
Alg. 1:
η = a ⊕ b = (a + b)(1 + ε1 )
y = η ⊕ c = (η + c)(1 + ε2 )
18
1.4. Fehlerfortpflanzung in Algorithmen
= [(a + b)(1 + ε1 ) + c] (1 + ε2 )
2
a+b
= (a + b + c) 1 + ε2 +
ε1 + σ(ε1 ε2 )
a+b+c
y = ϕ(a, b, c) = a + b + c
Alg. 2:
η = b ⊕ c = (b + c)(1 + ε3 )
y = a ⊕ η = (a + η)(1 + ε4 )
b+c
ε3 + σ(ε3 ε4 )
= (a + b + c) 1 + ε4 +
a+b+c
Alle relativen Fehler |εi | sind an sich kleiner als εmax . Aufgrund der Vorfaktoren
beeinflusst kann der Gesamtfehler aber deutlich größer als εmax werden. Bei dem
gegebenen Problem ist der Algorithmus 1 also deutlich besser, wenn |a + b| |b + c|.
Der zweite Algorithmus hingegen ist zu bevorzugen, wenn |a + b| |b + c| gilt. Je
nach den konkreten Werten von a, b und c kann diese simple Summe bereits einen
Genauigkeitsverlust von mehreren Stellen bedeuten.
Beispiel 1.13. Für den Fall |a| |b| und b ≈ −c lässt sich dies leicht an einem
Beispiel zeigen.
a=1
b = 0.5 · 105
a+b
≈ 0.49 · 102
a+b+c
b+c
≈ 0.99
a+b+c
c = −0.49 · 105
Der relative Fehler unterscheidet sich hier also um 2 Größenordnungen, da bei dem
ersten Algorithmus eine deutliche Verstärkung des Fehlers auftritt.
1.4.3. Konditionszahlen von Algorithmen
Das in Teilabschnitt 1.4.2 vorgestellte, relativ umständliche Verfahren zur Fehleranalyse lässt sich zu den sogenannten “Konditionszahlen” verallgemeinern. Hierzu wird
2
σ sind vernachlässigbare Restterme der angegeben Ordnung (und allgemein auch höherer Ordnung)
19
1. Fehlerarithmetik
wieder ein beliebiger Algorithmus betrachtet:

ϕ = Rn → Rm

ϕ1 (x)


..
, ϕ(x1 . . . xn ) = 

.
ϕm (x)
Wie wirkt sich ein Fehler in den Ausgangswerten xi nun auf das Endergebnis aus? Die
Fehleranalyse muss letztendlich wieder für jeden Teilschritt des Algorithmus (wie in
Gleichung 1.1 definiert) seperat durchgeführt werden, liefert aber dieses Mal ein allgemeingültiges Verfahren, in dem die einzelnen Teilschritte unabhängig voneinander
betrachtet werden können um die Robustheit eines Algorithmus gegenüber Fehlern
in den Ausgangswerten zu bewerten. Im folgenden wird deswegen nur ein beliebiger
Teilschritt ϕ mit einem Vektor x an Eingabewerten und einem Vektor y an Ausgabewerten betrachtet.
Sei hierfür xj der exakte Wert einer Variable und
x̃j = xj + ∆xj
∆xj
ε xj =
xj
der Eingabewert mit einem absoluten Fehler,
der relative Fehler von xj .
Bekommt der Algorithmus nun x̃ statt x als Eingabe3 , so ist das Ergebnis ỹ = ϕ(x̃)
statt dem exakten Ergebnis ϕ(x). Der absolute und der relative Fehler von y ergeben
sich dann als:
∆yi = ỹi − yi = ϕi (x̃) − ϕi (x)
n
X
∂ϕi 2
=
∆xj + σ(∆x )
∂x
j
x
j=1
Anschaulicher lässt sich dies in



∆y1
 .. 

 .  = 
∆ym
einer Matrixdarstellung4 darstellen:
 

∂ϕ1
∂ϕ1
. . . ∂x
∆x
1
∂x1
n
..
..   .. 
..
·  .  + σ(∆x2 )
.

.
.
∂ϕm
∂ϕm
.
.
.
∆xn
∂x1
∂xn
x
Der relative Fehler ergibt sich aus diesen Betrachtungen folglich als:
n
X
xj ∂ϕi ∆xj
∆yi
=
+ σ(∆x2 )
εyi (x, ∆x) =
ϕi (x)
ϕ
(x)
∂x
x
i
j x
j
j=1
3
Ob es sich dabei nun um Fehler in den Startwerten oder Rundungsfehler aus vorangegangenen
Teilschritten handelt, spielt keine Rolle.
4
Hierbei handelt es sich um eine Matrix im Funktionenraum (genauer gesagt um die Jakobi-Matrix),
nicht im Rm×n .
20
1.4. Fehlerfortpflanzung in Algorithmen
n X
xj ∂ϕi 2
=
εxj + σ(∆x )
ϕ
(x)
∂x
i
j
x
j=1
=
n
X
kij εxj + σ(∆x2 )
j=1
Die Beträge der Koeffizienten |kij | sind die “Konditionszahlen” des Algorithmus und
beschreiben wie stark die relativen Fehler in den Eingabedaten sich auf das Endergebnis auswirken. Sind alle |kij | ≈ 1 dann nennt man den Algorithmus “gut konditioniert”. Werden eine oder mehere der Konditionszahlen aber groß, ist der Algorithmus
“schlecht konditioniert”.
Beispiel 1.14. Mit den Konditionszahlen lässt sich der Unterschied, der im Zahlenbeispiel aus Beispiel 1.12 aufgetreten ist, gut nachvollziehen. Hierzu sollen zuerst die
Konditionszahlen des kompletten Problems untersucht werden.
p
y = ϕ(p, q) = −p + p2 + q
∂ϕ
p
1
= −1 + p
= −p
ϕ
2
2
∂p
p +q
p +q
1
∂ϕ
= p
∂q
2 p2 + q
!
!
p ∂ϕ q ∂ϕ εy =
εp +
εq
ϕ ∂p p,q
ϕ ∂q p,q
q
1
p
p
· εq
p2 + q
−p + p2 + q 2 p2 + q
p
p + p2 + q
p
= −p
· εp + p
· εq
p2 + q
2 p2 + q
= −p
p
· εp +
Solange die Vorfaktoren ≤ 1 sind ist die Gesamtformel also gut konditioniert, für
q ≈ −p2 divergieren die Konditionszahlen jedoch gegen ∞. In dem konkreten Beispiel,
war dies jedoch nicht der Fall, der Fehler stammt also nicht aus der Kondition der
Gesamtformel, sondern aus einem schlecht konditionierten Teilschritt.
Da die ersten Teilschritte identisch sind, ist es ausreichend sich die Konditionszahlen
des bzw. der letzten Teilschritte(s) anzuschauen.
Alg. 1
y = −p + u
Alg. 2
v =p+u
q
y=
v
21
1. Fehlerarithmetik
Für die gegebenen Werte p = 1000 und q = 0.018000000081 ergeben sich die folgenden
Konditionszahlen:
1000
p ∂y
≈ − −5 = −108
Alg. 1:
y ∂p
10
u ∂y
1000
≈
= 108
y ∂u
10−5
1000
p ∂v
≈
=1
Alg. 2, Schritt 1:
v ∂p
1000
u ∂v
1000
≈
=1
v ∂u
1000
Schritt 2:
10−2 1
q ∂y
≈
=1
y ∂q
10−5 v
v ∂y
103 −q
≈
=1
y ∂v
10−5 v 2
Wie an den Konditionszahlen eindeutig zu erkennen ist, tritt im Algorithmus 1 eine
massive Verstärkung der Eingangsfehler auf, während im Algorithmus 2 keine nennenswerte Verstärkung der Fehler auftritt. Für diese Wahl der Startwerte ist Algorithmus 2 also deutlich besser geeignet.
Bemerkung. Konditionszahlen spielen insbesondere bei Operationen mit Matrizen
eine wichtige Rolle. Zur Lösung des linearen Gleichungssystems Ax = b wird die
Matrix A invertiert, der relative Fehler des Lösungsvektors x ergibt sich also als:
∆x
||A−1 ∆b||
=
x
||A−1 b||
Um die Güte der Lösung nun allgemein beurteilen zu können, untersucht man das
Maximum des Verhältnisses der relativen Fehler des Ergebnisses und der Eingabewerte:
||A−1 ∆b|| ||A−1 b||
||b|| ||A−1 ∆b||
·
= max n
max
b,∆b∈R
b,∆b∈Rn ||∆b||
||A−1 b||
||∆b||
||b||
Der erhaltene Ausdruck beinhaltet die induzierte Matrixnorm und führt zu dem folgenden Resultat für die Konditionszahl κ(A):
λmax
λmin
Die λ sind hier die Eigenwerte der Matrix. Diese Konditionszahl ist insbesondere in
der Konvergenztheorie von Optimierungsalgorithmen wichtig und gibt Aufschluss über
die lokale Konvergenzgeschwindigkeit.
κ(A) = ||A−1 || · ||A|| =
22
2. Grundlagen linearer
Gleichungssysteme
Lineare Gleichungssysteme spielen in der numerischen Physik eine entscheidene Rolle,
weil diese im Prinzip exakt lösbar sind und sich viele Probleme (näherungsweise) auf
LGS zurückführen lassen und auch einige Verfahren zur Lösung nichtlinearer Gleichungssysteme auf der Lösung mehrerer LGS basieren (bspw. Newton-Verfahren).
Deswegen werden in diesem Kapitel zuerst ein paar grundlegende Eigenschaften von
normierten Räumen wiederholt. Anschließend werden einige grundlegende Verfahren
zur Lösung linearer Gleichungssysteme vorgestellt werden. Ausgefeiltere Algorithmen, die ebenfalls zur approximativen Lösung linearer Gleichungssysteme verwendet
werden können, werden in Kapitel 7 vorgestellt.
2.1. Endlich dimensionale Vektorräume
Definition 2.1 (Normierter Raum)
Ein Vektorraum V über einen Körper K in Kombination mit einer Funktion k·k : V →
R (“Norm”) heißt “normierter Raum“ (V, K, k · k), wenn die folgenden Bedingungen
erfüllt sind:
1. kxk ≥ 0 ∀ x ∈ V
2. kxk = 0 ⇔ x = 0
3. kλxk = |λ| · kxk
∀ λ ∈ K, x ∈ V
4. kx + yk ≤ kxk + kyk
∀ x, y ∈ V
Aus der vierten Bedingung für die Norm folgt noch eine weitere Ungleichung.
kxk = kx − y + yk ≤ kx − yk + kyk ⇒ kxk − kyk ≤ kx − yk
kyk = ky − x + xk ≤ ky − xk + kxk ⇒ kyk − kxk ≤ kx − yk
23
2. Grundlagen linearer Gleichungssysteme
⇒ kxk − kyk ≤ kx − yk
Beispiel 2.1. Zur Erinnerung sind hier noch einige Beispiele für normierte Räume
gegeben, die wohlbekannt sein sollten.
• V =K
kxk = |x|
• V = Kn
• V = Kn
kxk = kxk∞ = maxj=1...n |xj |
P
kxk = kxk1 = nj=1 |xj |
• V = Kn
kxk = kxk2 =
P
n
j=1
|xj |2
21
Die Konvergenz von Folgen ist ein wichtiges Element in der Numerik, beispielsweise
für Abbruchbedingungen iterativer Verfahren bei Erreichen einer Konvergenzschranke, und hängt bekanntlich von der Norm ab. (Zur Erinnerung: Eine Folge (x(i) ) wird
als konvergent mit Grenzwert x = limi→∞ x(i) bezeichnet, falls limi→∞ kx − x(i) k = 0
gilt.) Die Konvergenz einer Folge ist also im allgemeinen abhängig von der gewählten
Norm.
Beispiel 2.2. Gegeben sei der Raum C[a,b] der stetigen Funktionen auf dem Intervall
[a, b] → R und dazu zwei Normen
kf k∞ := sup |f (x)|
x∈[a,b]
Z
kf k2 :=
b
(f (x))2 dx
12
a
sowie die Funktionenfolge (fn ), die wie folgt aussieht:
1
fn
0.8
y
0.6
0.4
0.2
0
a
a+1/n
b
x
Abbildung 2.1.: graphische Darstellung der zu untersuchenden Folge (fn )
24
2.1. Endlich dimensionale Vektorräume
Offensichtlich ist kfn k∞ = 1 ∀ n und kfn k2 → 0. Bezüglich kf k2 konvergiert die Folge
also gegen die Nullfunktion, aber für kf k∞ gibt es keine Funktion f mit kf − fn k∞ →
0, bezüglich dieser Norm ist die Folge also divergent.
Glücklicherweise gibt es dieses Problem nur im unendlichdimensionalen Fall, da in
endlichdimensionalen Vektorräumen alle Normen äquivalent sind.
Definition 2.2 (Äquivalenz von Normen)
Seien k · ka und k · kb zwei Normen auf einem Vektorraum V . k · ka wird als äquivalent
zu k · kb (k · ka ∼ k · kb ) bezeichnet, falls es zwei Konstanten A, B ≥ 0 gibt mit
Akxka ≤ kxkb ≤ Bkxka
x∈V
Diese Definition einer Äquivalenzrelation erfüllt die nötigen Reflexivitäts-, Transitivitäts- und Symmetrie-Eigenschaften.
Beweis. Für die Reflexivität setzt man A, B = 1. Die Symmetrie lässt sich durch zwei
einfache Umformungen zeigen.
Ak · ka ≤ k · kb ≤ Bk · ka
1
1
k · k b ≤ k · ka
⇒ k · ka ≤ k · k b
A
B
1
1
⇒ k · k b ≤ k · ka ≤ k · k b
B
A
Für die Transitivität geht man von k · ka ∼ k · kb und k · ka ∼ k · kc aus. Unter
Anwendung der Symmetrie ergibt sich daraus:
Ak · ka ≤ k · kb ≤ Bk · ka
Ck · kc ≤ k · ka ≤ Dk · kc
⇒ ACk · kc ≤ k · kb
⇒ k · kb ≤ BDk · kc
⇒ ACk · kc ≤ k · kb ≤ BDk · kc
Satz 2.1 (Äquivalenz von Normen in endlichdimensionalen Vektorräumen)
In einem endlichdimensionalen Vektorraum sind alle Normen äquivalent.
Beweis. Alle endlichdimensionalen Vektorräume V (dimV = m < ∞) sind zu einem
Rn isomorph. Unter Ausnutzung der Transitivität der Normäquivalenz reicht es also
zu zeigen, dass in Rn jede Norm k · k zu k · k1 äquivalent ist.
n
x∈R ,x=
n
X
xj ~ej
xj ∈ R, ~ej Basisvektoren
j=1
25
2. Grundlagen linearer Gleichungssysteme
⇒ kxk = k
X
xj ~ej k ≤
X
j
≤
X
j
|xj | · k~ej k
j
|xj | max ·k~ek k = B
k
X
|xj | = Bkxk1
j
Damit ist die obere Schranke für die Äquivalenz erledigt und es fehlt nur noch die
untere Schranke. Wegen kxk − kyk ≤ kx − yk ≤ Bkx − yk1 ist die Abbildung k · k :
V → R auf Rn stetig. Deswegen muß das Bild von k · k auf der kompakten Teilmenge
S1 = {x ∈ Rn : kxk1 = 1} ebenfalls kompakt sein und es existiert ein z ∈ S1 mit
x
∈ S1 ∀ x ∈ Rn gilt, folgt daraus:
kzk = inf x∈S1 kxk > 0. Da nun kxk
1
x kxk = kxk1 · kxk1 ≥ kxk1 kzk = Akxk1
Daraus folgt die Äquivalenz k · k ∼ k · k1 . Die Transitivität und Symmetrie stellen
dann die Äquivalenz aller Normen auf diesem Vektorraum sicher.
In einem endlichdimensionalen Vektorraum folgt also aus der Konvergenz einer Folge
bezüglich einer beliebigen Norm die Konvergenz bezüglich aller Normen. Insbesondere
konvergiert eine Folge genau dann, wenn ihre einzelnen Komponenten konvergieren.
x = lim x(j) ⇔ lim x − x(j) = 0
j→∞
j→∞
⇔ lim x − x(j) ∞ = 0
j→∞
(j) ⇔ lim xk − xk = 0 ∀ k
j→∞
2.1.1. Normen auf Vektorräumen von Matrizen
In den folgenden Abschnitten wird die Norm einer Matrix öfter eine Rolle spielen,
weswegen hier ihre Definition und einige wichtige Eigenschaften wiederholt werden
sollen.
Definition 2.3 (Matrixnorm)
Eine Abbildung k · k : Km×n → R heißt Norm auf K m×n (Raum der m × n-Matrizen
mit Elementen aus K) wenn die folgenden Bedingungen erfüllt sind:
1. kAk ≥ 0 ∀ A ∈ Km×n
2. kAk = 0 ⇔ A = 0
26
2.1. Endlich dimensionale Vektorräume
3. kλAk = |λ| · kAk
∀ λ ∈ K, x ∈ Km×n
∀ A, B ∈ Km×n
4. kA + Bk ≤ kAk + kBk
Die Dimension von Km×n ergibt sich als m · n · dimK.
Definition 2.4 (Verträglichkeit von Normen)
Sei k · ka eine Norm auf Kn , k · kb eine Norm auf Km und k · kM eine Norm auf Km×n .
Dann heißt k · kM verträglich mit k · ka und k · kb , falls gilt:
∀ x ∈ Kn , A ∈ Km×n
kAxkb ≤ kAkM · kxka
Definition 2.5 (Induzierte Norm)
Sei k · k eine Norm auf Kn , dann wird durch
kAkM :=
kAxk
= sup kAyk
y∈S1
x∈Kn \{0} kxk
sup
S1 = {x ∈ Kn : kxk = 1}
eine Norm auf Kn×n definiert, die mit k·k verträglich ist. Diese Norm wird ”induzierte
Norm“ oder auch ”zugehörige Norm“ genannt.
Diese induzierte Matrixnorm ist neben der Verträglichkeit mit der dazugehörigen
Vektornorm auch submultiplikativ, dass heißt, es gilt:
kA · BkM ≤ kAkM · kBkM
Beispiel 2.3. Abschließend gibt es noch ein paar Beispiele für induzierte und auch
nicht-induzierte Matrixnormen auf Kn×n .
• ”maximale Zeilensumme“
kxk∞ = max |xj |
j=1...n
X
kAxk∞ = max ajk xk j=1...n k
!
⇒ kAxk∞ ≤ max
j=1...n
X
|ajk ||xk |
k
!
≤ max
j=1...n
X
k
|ajk | · max |xk |
k
27
2. Grundlagen linearer Gleichungssysteme
!
= max
X
⇒ Definition: kAk∞ := max
X
j=1...n
|ajk |
· kxk∞
k
!
j=1...n
|ajk |
k
Die Erfüllung der Normeigenschaften für die soeben hergeleitete ”maximale Zeilensumme“ lässt sich leicht überprüfen und aus der Herleitung ergibt sich auch
sofort die Verträglichkeit mit k·k∞ . Desweiteren ist diese Matrixnorm auch von
k · k∞ induziert (der Beweis ist eine Übungsaufgabe).
• ”maximale Spaltensumme“
kxk1 =
n
X
|xj |
j=1
!
X
kAxk1
= max
|ajk |
kAk1 := sup
k=1...n
kxk1
x
j
Die Definition von kAk1 ist identisch mit der der induzierten Norm, wie man
erkennen kann, wenn man die kartesischen Einheitsvektoren in die Definition
der induzierten Norm einsetzt. Da jeder andere Vektor von S1 sich als Linearkombination von diesen (entsprechend skalierten) Vektoren darstellen lässt,
ist es offensichtlich, dass es sich hier um die von k · k1 induzierte Matrixnorm
handelt.
• ”euklidische Norm“ und ”Spektralnorm“
n
X
kxk2 = kxk2 =
! 12
|xj |2
j=1
kAk2 := kxk2 =
n
X
! 12
|ajk |2
j,k=1
Die euklidische Matrixnorm ist zwar mit der euklidischen Vektornorm verträglich, aber nicht von dieser induziert. Um dies zu zeigen, betrachtet man
die Einheitsmatrix im Kn×n .
! 21
X
√
kEk2 =
= n
δjk
k,j
sup
x
28
√
kExk2
kxk2
= sup
= 1 6= n
kxk2
x kxk2
2.2. Gaußsches Eliminationsverfahren
Die durch die euklidische Vektornorm induzierte Matrixnorm ist die ”Spekp
tralnorm“, die als kAks = λmax [A† A] definiert ist. λmax ist hierbei der betragsmäßig größte Eigenwert der Matrix.
2.2. Gaußsches Eliminationsverfahren
Eine Möglichkeit zur Lösung von linearen Gleichungssystemen Ax = b mit nichtsingulärer Matrix A bietet das Gaußverfahren. Bei diesem Verfahren wird die Matrix
durch elementare Transformationen wie Zeilenvertauschung und Addition zweier Zeilen in die Form einer Dreiecksmatrix gebracht. Als deterministisches Verfahren bietet
das Gaußverfahren die Vorteile einen nur von der Dimension des LGS abhängigen
Arbeitsaufwand zu haben und keine besonderen Anforderungen an dieses zu stellen um Konvergenz zu gewährleisten. Allerdings hängt der numerische Fehler trotzdem von der Kondition der Matrix ab und kann für schlecht konditionierte Systeme
nachträgliche Korrekturen des Ergebnisses erforderlich machen. Ein weiterer Nachteil
ist die Laufzeit des Verfahrens, da es mit O(n3 ) skaliert.
Ax = b
→ Rx = c
A ∈ Cn×n x, b ∈ Cn

r1,1 r1,2 . . . r1,n


r2,2 . . . r2,n
R=
..
..

.
.

0
rn,n






Das System Rx = c lässt sich dann auf einfache Weise lösen:
Zeile n :
Zeile j < n :
⇒ xn =
rn,n xn = cn
rj,j xj +
n
X
cn
rn,n
rj,k xk = cj
k=j+1
Löst man diese Gleichungen nun in absteigender Reihenfolge für j, sind die in der
jeweiligen Summe auftauchenden xk bereits bekannt und es ergibt sich als Lösung:
"
#
n
X
1
cj −
rj,k xk
⇒ xj =
rj,j
k=j+1
(2.1)
29
2. Grundlagen linearer Gleichungssysteme
Beginnt man mit A(0) := A, kann man die einzelnen Gleichungen schrittweise umformen um A in die gewünschte Dreiecksform zu bringen.

(0)
A


=


a1,1 a1,2
a2,1 a2,2
..
..
.
.
an,1 an,2
. . . a1,n
. . . a2,n
..
..
.
.
. . . an,n






Multipliziert man nun für alle m > 1 die erste Gleichung mit
dies von der m-ten Gleichung, erhält man:

A
(1)


=


am,1
·
a1,1
a1,1
a1,2
...
a1,n
a2,1
a1,n
0 a2,2 − a1,1 a1,2 . . . a2,n − aa2,1
1,1
..
..
.
..
..
.
.
.
0
an,2 −
an,1
a
a1,1 1,2
. . . an,n −
an,1
a
a1,1 1,n
und subtrahiert






Nach dem ersten Schritt hat das Gleichungssystem dann die Form,






a1,1 a1,2 . . . a1,n
0
..
Ã(1)
.
0


b1





x = 
 b̃(1)








die exakt wie das Ausgangsproblem in einer Dimension weniger aussieht. Wiederholt
man nun dasselbe Verfahren für die Matrix Ã(1) , bringt man die zweite Spalte der
Ausgangsmatrix in die notwendige Form für eine Dreiecksmatrix und kann durch
Iteration die komplette Matrix umformen. Solange alle ajj 6= 0 sind, funktioniert
dieser Algorithmus, ist jedoch ein Diagonal-Element 0, so kann man einfach zwei
Zeilen vertauschen um das Problem zu lösen. Ist die Matrix dann in Dreiecksform
gebracht, kann man das LGS wie zuvor beschrieben lösen.
Algorithmus 2.1 (Gauß-Algorithmus)
Gegeben sei ein lineares Gleichungssystem Ax = b mit einer regulären Matrix A ∈
Cn×n und einem Vektor b ∈ Cn . Dieses Gleichungssystem lässt sich mit folgendem
Algorithmus in eine Dreiecksform bringen und lösen.
Die Erweiterung des Algorithmus mit der Pivot-Elementsuche wird im Anschluss auf
Seite 32 erläutert. Im folgenden Pseudocode ist Aj als j-te Zeile der Matrix zu verstehen.
30
2.2. Gaußsches Eliminationsverfahren
for i = 1, 2 . . . n − 1 do
gegebenenfalls Pivotisierung der i-ten Spalte
for j = i + 1, i + 2 . . . n do
(i)
(i−1)
(i−1)
Aj = Aj
− Ai
· aj,i /ai,i
(i)
(i−1)
(i−1)
bj = bj
− bi
· aj,i /ai,i
end for
end for
for i =hn, n − 1, . . . 1 do
i
P
(n−1)
(n−1)
(n−1)
x i = bi
− nk=i+1 ai,k xk /ai,i
end for
Für Matrizen, die die Regularität nicht erfüllen, liefert dieser Algorithmus kein Ergebnis, da x nicht eindeutig bestimmt ist. Im Falle einer singulären Matrix wird eine
komplette (Teil-)Spalte 0, womit auch eine Zeilenvertauschung keinen Effekt mehr
hat. Die Nachteile dieses Algorithmus sind die kubisch mit der Matrixdimension skalierende Laufzeit und die Fehlerfortpflanzung. Zumindest für das zweite Problem lässt
sich durch eine genauere Untersuchung der Transformationen eine Lösung finden. Formal lassen sich diese Umformungen auch als Matrix-Transformationen darstellen:
A(1) = G1 P1k A(0)

0 0

 0 1

 ..
 .

 0
P1 = 

 1 0

 0

 ..
 .
... 0 1
..
0
..
.
.
1
...
0
b(1) = G1 P1k b(0)

0 ... 0
.. 
. 










1


..
.

0 ...

1

 −g21

 −g31
G1 = 

 ..
 .

−gn1
1

0 0 ... 0

1 0 ... 0 

0 1
.. 
. 

..

..
.

.
0 
0 ... 0 1
31
2. Grundlagen linearer Gleichungssysteme
G1 bewirkt die im Algorithmus 2.1 beschriebenen Zeilenadditionen, wobei sich die Matrixelemente gij gemäß dem Algorithmus ergeben. P1 ist die Matrix zur Vertauschung
der ersten und der k-ten Zeile und kann zur ”Pivotisierung” des Systems benutzt
werden. Das Element, dass nach dem Zeilentausch die oberste Diagonalstelle besetzt,
heißt “Pivotelement“. Rein theoretisch kann jedes Matrixelement der ersten Spalte als
Pivotlement genutzt werden, eine Fehleranalyse des Algorithmus ergibt jedoch, dass
das betragsmäßig größte Element die optimale Wahl darstellt (”Spaltenpivotsuche”).
Alternativ dazu ist auch die allgemeinere Form der “Totalpivotsuche“ möglich, bei
der das betragsmäßig größte Element der kompletten Matrix an die oberste Diagonalstelle gesetzt wird. Hierfür sind allerdings nicht nur Zeilenvertauschungen, sondern
auch Spaltenvertauschungen notwendig.
Am Ende der Gauß-Elimination können wir unser Gleichungssystem Ax = b dann
wie folgt schreiben:
A(n) x = b(n)
A(n) = Gn Pn Gn−1 Pn−1 . . . G1 P1 A = SA(0)
(2.2)
b(n) = Gn Pn Gn−1 Pn−1 . . . G1 P1 b = Sb(0)
(2.3)
Die einzelnen Matrizen Gj und Pj hängen hierbei nur von von der Ausgangsmatrix
A ab, nicht aber von der rechten Seite des Gleichungssystems. Diese Eigenschaft lässt
sich nutzen, um die numerischen Fehler durch Nachiterationen zu reduzieren.
Angenommen es liegt eine mittels Gauß-Elimination gefundere Näherung x0 des
Lösungsvektors x (Ax0 ≈ b) vor. Definiert man den Fehler von x über r0 = b − Ax0 ,
so ergibt sich mit z0 = x − x0 (mit unbekanntem z0 ):
b = Ax = A(x0 + z0 )
= Ax0 + Az0
= (b − r0 ) + Az0
⇒ Az0 = r0
Da die Matrix in dem neuen LGS dieselbe wie im Ausgangsproblem ist, können
wir unsere bereits bekannte Lösungsmatrix S wiederverwenden um das neue Problem mit n2 Kosten in Dreiecksform zu bringen und dann zu lösen. So erhalten wir
mit, im Vergleich zur Lösung des Ausgangsproblems, geringem Aufwand die verbesserte Näherung x1 = x0 + z0 . Bei Bedarf kann man auch mehrere Nachiterationen
durchführen um das Ergebnis weiter zu verbessern.
32
2.3. Iterative Verfahren zur Lösung von LGS (”Linear Descent“)
2.3. Iterative Verfahren zur Lösung von LGS
(”Linear Descent“ Methoden)
Das eben vorgestellte Gauß-Verfahren eignet sich aufgrund seiner Skalierung (O(n3 ))
und sich fortpflanzender Rundungsfehler nur für Gleichungssysteme mit maximal etwa 100 Unbekannten. Für größere Gleichungssysteme sind iterative Verfahren in der
Regel die bessere Wahl. Als einfache Vertreter dieser Klasse von Algorithmen werden
wir hier die Jacobi- und die Gauß-Seidel-Verfahren einführen. Der Anschaulichkeit
halber werden zwei äquivalente Herleitungen dieser Verfahren gezeigt: einmal mittels
eines äquivalenten Minimierungsproblems und einmal mit Hilfe des Banach’schen
Fixpunktsatzes.
Satz 2.2 (Äquivalenz von LGS und Minimierung (Linear Descent))
Sei ein lineares Gleichungssystem Ax = b mit einer symmetrisch, positiv definiten
(s.p.d.) Matrix A ∈ Rn×n gegeben, dann gilt:
Ax = b ⇔ x = minn J(v)
v∈R
1
mit: J(v) = v T Av − bT v
2
Beweis. Da J eine quadratische Funktion ist, kann sie nur maximal ein Extremum
haben und weil A nach Vorraussetzung s.p.d. ist, muss es sich bei diesem um ein
Minimum handeln. Betrachten wir also den Gradienten von J(v):
J 0 (v, w) = v T Aw − bT w
!
J 0 (x, w) = 0 ⇒ 0 = hAx − b, wi
∀ w ∈ Rn
⇒ Ax − b = 0
Um die mit der direkten Lösung des LGS verbundenen Probleme zu umgehen, kann
man dieses äquivalente Minimierungsproblem approximativ lösen, indem man es in
mehrere kostengünstige Einzelschritte aufteilt. Statt der Minimierung in mehreren
Dimensionen gibt man zu Beginn n fixe Suchrichtungen vor und minimiert die Funktion anschließend entlang dieser Geraden. Die einfachste Wahl für die Suchrichtungen
sind die kartesischen Einheitsvektoren ei des Rn . Die optimale Schrittweite α∗ entlang
der Suchrichtung ei ergibt sich in diesem Fall als:
1
J(x(t) + αei ) = (x(t) + αei )T A(x(t) + αei ) − bT (x(t) + αei )
2
33
2. Grundlagen linearer Gleichungssysteme
d
J(x(t) + αei ) = eTi Ax(t) + αeTi Aei − bT ei
dα
bT ei − eTi Ax(t)
⇒ α∗ =
eTi Aei
Auf Basis dieser Überlegungen ergeben sich dann zwei verschiedene Verfahren, je
nachdem in welcher Reihenfolge die Minimierungen entlang der einzelnen Suchvektoren vorgenommen werden. Bei dem ersten Verfahren, bekannt als Gesamtschrittoder Jacobi-Verfahren, minimiert man vom Startpunkt ausgehend entlang aller Suchrichtungen und geht dann alle Teil-Schritte gleichzeitig.
Algorithmus 2.2 (Jacobi-Iteration (Gesamtschrittverfahren))
Gegeben seien ein LGS Ax = b mit symmetrisch, positiv definiter Matrix A ∈ Rn×n ,
ein Anfangswert x und die kartesischen Einheitsvektoren ei des Rn . Dann lässt sich
eine Approximation der Lösung durch folgendes iteratives Verfahren finden. Der Ausdruck T OL steht hierbei für ein geeignetes Konvergenzkriterium, beispielsweise die
Norm des Residiums r = Ax(t) − b.
1
J(v) = v T Av − bT v
2
while !T OL do
p=0
for i = 1, 2, . . . n do
αi∗ = bT ei − eTi Ax(t) / eTi Aei
p = p + αi∗ ei
end for
x=x+p
end while
Um eine effiziente Berechnung zu ermöglichen, ist es hilfreich diesen Algorithmus in
Matrixform zu bringen. Ausgehend von den einzelnen Komponenten ergibt sich für
die nächste Iterierte:
(t+1)
xi
⇒ x(t+1)
34
bT ej − eTi Ax(t)
eTi Aei
bi
(Ax(t) )i
(t)
= xi −
+
ai,i
ai,i
n
n
X (Ax(t) )i
X
bi
(t)
=x −
· ei +
· ei
a
a
i,i
i,i
i=1
i=1
(t)
= xi +
2.3. Iterative Verfahren zur Lösung von LGS (”Linear Descent“)
Führt man nun eine Matrix D ein, die nur die Diagonalelemente von A enthält, dann
kann man dieses Gleichungssystem wie folgt umschreiben:
x(t+1) = D−1 Dx(t) − D−1 Ax(t) + D−1 b
= D−1 (D − A)x(t) + D−1 b
Da diese Iterationsvorschrift nur aus Matrix-Vektor-Multiplikationen und Vektoraddition besteht, bei denen die Matrizen konstant sind, skaliert jeder Iterationsschritt
mit O(n2 ). Bleibt nun die Anzahl der nötigen Gesamtschritte zum Erreichen des Konvergenzkriteriums deutlich unter n, so ist dieses Verfahren wesentlich günstiger als
die Gauß-Elimination.
Eine Alternative zu diesem Verfahren ist das sogenannte Einzelschritt- oder GaußSeidel-Verfahren, bei dem die Lösung nach jedem Optimierungsschritt aktualisiert
wird statt erst nach dem kompletten Zyklus.
Algorithmus 2.3 (Gauß-Seidel-Iteration (Einzelschrittverfahren))
Gegeben seien ein LGS Ax = b mit symmetrisch, positiv definiter Matrix A ∈ Rn×n ,
ein Anfangswert x und die kartesischen Einheitsvektoren ei des Rn . T OL ist hier wie
zuvor ein geignetes Konvergenzkritierum.
1
J(v) = v T Av − bT v
2
while !T OL do
for i = 1, 2, . . . n do
αi∗ = bT ei − eTi Ax(t) / eTi Aei
x = x + αi∗ ei
end for
end while
Auch für die Gauß-Seidel-Iteration lässt sich ausgehend von der Komponentenschreibweise eine Matrixdarstellung für eine effiziente Berechnung finden.
Pi−1 ∗
bT ej − eTi A(x(t) + j=1
αj ej )
(t+1)
(t)
xi
= xi +
T
ei Aei
(t)
(t+1)
n
i−1
X
X ai,j xj
ai,j xj
bi
(t)
−
+
= xi −
ai,i
ai,i
ai,i
j=i
j=1
35
2. Grundlagen linearer Gleichungssysteme
Mithilfe der zuvor eingeführten Diagonalmatrix D und der strikten oberen und unteren Dreiecksmatrizen R und L von A (nur die Elemente überhalb beziehungsweise
unterhalb der Diagonale sind vorhanden) lässt sich auch dieser Ausdruck verschönern.
x(t+1) = D−1 Dx(t) − D−1 Lx(t+1) − D−1 (D + R)x(t) + D−1 b
(E + D−1 L)x(t+1) = −D−1 Rx(t) + D−1 b
⇒ x(t+1) = (E + D−1 L)−1 −D−1 Rx(t) + D−1 b
Beide Verfahren haben ihre spezifischen Vor- und Nachteile, das Jacobi-Verfahren
lässt sich einfach parallelisieren, während dies bei Gauß-Seidel nicht ohne weiteres
möglich ist. Auf der anderen Seite hat das Gesamtschrittverfahren den Nachteil, dass
die Summe der Einzeloptimierungen nicht zwangsläufig zu einer Reduzierung des
Funktionswertes in jedem Schritt führt. Gauß-Seidel hingegen stellt sicher, dass der
Funktionswert in jedem Einzelschritt kleiner wird oder zumindest gleich bleibt.
Alternativ zu der gezeigten Herleitung der beiden Verfahren kann man die Verfahren auch als Fixpunkt-Iterationen gemäß dem Banach’schen Fixpunktsatz5 einführen.
Hierzu brauchen wir noch einen Satz über die Konvergenz des Verfahrens der sukzessiven Approximation.
Satz 2.3 (Konvergenz der sukzessiven Approximation)
Sei B ∈ Rn×n , c ∈ Rn und es sei kBkM < 1 in einer verträglichen Matrixnorm. Dann
gibt es genau einen Vektor z ∈ Rn mit
z = Bz + c
und das Verfahren der sukzessiven Approximation
x(t+1) = Bx(t) + c
konvergiert gegen jenes z.
Beweis. Für die Abbildung g(y) = By + c gilt:
kg(x) − g(y)k = kB(x − y)k ≤ kBkM kx − yk
Da kBkM < 1 nach Vorraussetzung gilt, ist g(x) eine Kontraktion, nach Satz 6.4 gibt
es daher genau einen Fixpunkt z = g(z) und das angegebene Verfahren konvergiert
gegen diesen.
5
Dieser Satz kommt erst später in Kapitel 6.
36
2.3. Iterative Verfahren zur Lösung von LGS (”Linear Descent“)
Nun können wir unser LGS Ax = b in diese Form bringen und später über die Anforderungen an die Norm von B auch noch für die Konvergenz nötige Bedingungen an
die Matrix A finden, die einfacher prüfbar sind als Symmetrie und positive Definitheit. Die einzige Vorraussetzung für die Umfomrungen ist, dass alle Diagonalelemente
ungleich 0 sind.
Ax = b
n
X
ai,j xj = ai,i xi +
X
j=1
ai,j xj = bi
∀ i = 1, 2 . . . n
j6=i
1
⇒ xi =
ai,i
!
bi −
X
ai,j xj
j6=i
−1
Dx ))
⇒ x = D (b − (|{z}
Ax − |{z}
P
j
P
j=i
−1
−1
= D (D − A) x + D
| {z }b
|
{z
}
:=B
:=c
Damit haben wir das LGS in eine Form gebracht, in der wir das Verfahren der sukzessiven Approximation anwenden können.
!
X
1
(t)
(t+1)
=
ai,j xj
xi
bi −
ai,i
j6=i
x(t+1) = D−1 (D − A)x(t) + D−1 b
Die auf diese Weise hergeleitete Iterationsvorschrift entspricht genau der zuvor über
den Minimierungsansatz hergeleiteten Ergebnis, aber mit unterschiedlichen Voraussetzungen. Im ersten Falle haben wir eine symmetrische und positiv-definite Matrix gefordert während für die Umformungen in der zweiten Herleitung nur eine
nicht-verschwindene Diagonale6 erforderlich ist. Für die Konvergenz muss allerdings
zusätzlich noch kBkM < 1 gelten. Da im endlichdimensionalen Fall alle Normen
äquivalent sind, reicht es, wenn B diese Bedingung in einer verträglichen Norm erfüllt,
ein Nichterfüllen des Kriteriums in einer anderen Norm hat dann keine Auswirkung
auf die Konvergenz. Für die üblichen Vektornormen in Rn ergeben sich damit die
folgenden Kriterien:
X
”starkes Zeilensummenkriterium“ (k·k∞ ) : |ai,i | >
|ai,j | ∀ i = 1, 2 . . . n
j6=i
6
Eine symmetrisch positiv-definite Matrix muss nicht-verschwindene Diagonal-Elemente haben.
Dies kann man mit Hilfe der kartesischen Einheitsvektoren auf einfache Weise zeigen, indem
man diese in die Positivitätsbedingung einsetzt.
37
2. Grundlagen linearer Gleichungssysteme
”starkes Spaltensummenkriterium“ (k·k1 )
”Quadratsummenkriterium“ (k·k2 )
:
:
X ai,j max
ai,i < 1
j=1,2,...n
i6=j
n
X X aj,k 2
j=1 k6=j
aj,j < 1
Beispiel 2.4. Eine Matrix, die das Konvergenzkriterium in einer bestimmten Norm
erfüllt, muss dieses im endlichdimensionalen Fall nicht für andere Normen erfüllen,
wie an folgender Beispielmatrix gezeigt werden soll:




3 1 1
0 13 13




A =  2 3 21  ⇒ −B =  32 0 16 
2
1
2 1 4
0
4
4
Diese Matrix erfüllt offensichtlich das starke Zeilensummkriterium, aber nicht das
starke Spaltensummenkriterium, weil die erste Spalte die Ungleichung verletzt.
Bringt man nun bei der eben gezeigten Herleitung noch den Ansatz mit ein, bereits
neu berechnete Komponenten im aktuellen Schritt schon zu berücksichtigen, lässt
sich das Gauß-Seidel-Verfahren herleiten.7
Damit das Gauß-Seidel-Verfahren funktioniert, muss die Matrix E + D−1 L invertierbar sein. Dies ist glücklicherweise immer der Fall, da diese Matrix nach Konstruktion
eine untere Dreiecksmatriz ist, die auf der Diagonale nur 1 als Einträge hat (L ist
eine strikte untere Dreiecksmatrix) und damit det(E + D−1 L) = 1 gilt. Für die Konvergenz des Gauß-Seidel-Verfahrens ist ein schwächeres Kriterium hinreichend als für
das Jacobi-Verfahren. Wenn die Matrix A das sogenannte ”schwache Zeilensummenkriterium“ erfüllt, konvergiert die Gauß-Seidel-Iteration.
X
|ai,j | ≤ |ai,i | ∀ i
j6=i
Auf einen Beweis wird an dieser Stelle verzichtet und stattdessen auf die Literatur
verweisen.[1, Satz 8.2.12]
7
Dies wird hier nicht nochmal gezeigt, da die Herleitung ab der Komponentenschreibweise quasi
identisch zum Minimierungsansatz ist.
38
3. Approximative Darstellung von
Funktionen
Oft steht man vor der Situation eine Sammlung an Messwerten zu haben, die eine Funktion in Abhängigkeit von ihrer Variable darstellen, beispielsweise Ort-ZeitWertepaare aus einem Mechanik-Experiment. Nun stellt sich die Frage, wie man aus
diesen einzelnen Punkten den Verlauf der Funktion zwischen dieser approximativ
darstellen kann. Dazu sollen in diesem Kapitel einige Verfahren zur Interpolation behandelt werden, die Regressionsrechnung wird zu einem späteren Zeitpunkt behandelt
werden.
y(x)
Stützstellen
Interpolation
x
Abbildung 3.1.: näherungsweise Darstellung einer Funktion auf Basis einer Menge an Stützstellen
Gegeben ist im folgenden immer eine Menge an Stützstellen {x0 , x1 . . . xn } und den
dazugehörigen Funktionswerten {y0 , y1 . . . yn } einer Funktion f (x) mit f (xi ) = yi .
Für die Interpolationsfunktionen ist es elementar, die Funktion an diesen Stützstellen
korrekt darzustellen, jede Interpolationsfunktion f˜(x) muss also die Bedingung
f˜(xi ) = yi
(3.1)
39
3. Approximative Darstellung von Funktionen
erfüllen. Es versteht sich von selbst, dass die Menge der Stützstellen die Funktion
repräsentativ darstellen muss, um eine vernünftige Approximation zu ermöglichen.
Im Folgenden wird immer davon ausgegangen, dass die Sützstellen in aufsteigender
Reihenfolge sortiert sind.
3.1. Interpolation mit Polynomen
Der naheliegendste Ansatz für die Interpolation ist die Verwendung von einem Polynom als Interpolationsfunktion. Im folgenden sollen nun verschiedene Verfahren
zur Bestimmung von Interpolationspolynomen vorgestellt und deren Eigenschaften
untersucht werden.
3.1.1. Interpolation mit Lagrange-Polynomen
Ein Ansatz zum Erreichen dieses Ziel besteht in der Verwendung der so genannten
“Lagrange-Polynome”, die wie folgt definiert sind:
Lj (x) =
n
Y
k=0;k6=j
x − xk
xj − xk
(3.2)
Wie aus der Definition erkenntlich ist, handelt es sich bei Lj (x) um ein Polynom n-ten
Grades, dessen Funktionswerte an den Stützstellen als Kronecker-Delta darstellbar
sind.
Lj (xi ) = δij
(3.3)
Diese Eigenschaft lässt sich durch Einsetzen der Stützstellen in die obere Definition
sofort zeigen, da für i 6= j einer der Linearfaktoren 0 wird und für i = j sich alle Linearfaktoren mit den Vorfaktoren der jeweiligen Terme im Produkt wegkürzen.
Aufgrund dieser Eigenschaft lässt sich aus den Lj (x) ein eindeutiges Interpolationspolynom für f (x) konstruieren:
p(x) =
n
X
yj · Lj (x)
j=0
3.3
p(xi ) =
n
X
j=0
40
yj · Lj (xi )
3.1. Interpolation mit Polynomen
Satz 3.1 (Eindeutigkeit der Lagrange-Polynome)
P
Das durch p(x) = nj=0 yj · Lj (x) und Gleichung 3.2 gegebene Interpolationspolynom
für eine Verteilung von Stützstellen und deren Funktionswerte ist eindeutig bestimmt.
Beweis. Angenommen, es existiert ein Polynom n-ten Grades q(x) 6= p(x), das aber
ebenfalls die Interpolationsbedingung 3.1 erfüllt. Dann folgt daraus:
∀i
q(xi ) = p(xi )
→ q(xi ) − p(xi ) = 0
∀i
Die Polynome q(x) und p(x) sind nach Voraussetzung beide vom Grad n, das Differenzpolynom kann demzufolge nach auch maximal Grad n und eine dem entsprechende Anzahl Nullstellen haben. Die obige Betrachtung zeigt aber, dass alle n + 1
Stützstellen Nullstellen dieses Differenzpolynoms sind. Da diese Aussage nur wahr
sein kann, wenn q(x) − p(x) = 0 gilt, ergibt sich ein Widerspruch zur Anfangsannahme und p(x) ist demzufolge eindeutig bestimmt.
Beispiel 3.1. Für die folgende Stützstellenverteilung wird das Interpolationspolynom
und der approximierte Funktionswert an der Stelle 2 gesucht.
4
xi
yi
0
1
1
3
2 3
? 2
y
3
2
1
Stützpunkte
gesuchte Interpolation
0
-1
0
1
x
2
3
4
Abbildung 3.2.: Ein Beispiel für Polynominterpolation mit Lagrange-Polynomen
Die einzelnen Lagrange-Polynome ergeben sich dann als:
L0 (x) =
(x − 1)(x − 3)
(0 − 1)(0 − 3)
L1 (x) =
(x − 0)(x − 3)
(1 − 0)(1 − 3)
L2 (x) =
(x − 0)(x − 1)
(3 − 0)(3 − 1)
Durch Anwendung der Konstruktionsformel für das Interpolationspolynom ergibt sich
die Lösung als:
p(x) = 1 · L0 (x) + 3 · L1 (x) + 2 · L2 (x)
p(2) = 1 · L0 (2) + 3 · L1 (2) + 2 · L2 (2)
10
p(2) =
3
41
3. Approximative Darstellung von Funktionen
In der eben verwendeten Darstellung lassen sich die Lagrange-Polynome zur analytischen Berechnung zwar verwenden, für eine Implementierung mit variabler Anzahl
der Stützstellen ist diese Darstellung aber nicht geeignet. Daher stellt sich also die
Frage, ob die eben vorgestellte Interpolationsmethode auch anders dargestellt werden
kann um eine flexiblere und effektive Auswertung von p(x) zu ermöglichen.
3.1.2. Neville-Algorithmus
Eine Möglichkeit zur Flexibilisierung der Interpolation mit Lagrange-Polynomen ist
die Verwendung des Neville-Algorithmus, der p(x) durch eine Iteration über Teilmengen der Stützstellen ausdrückt und eine direkte Auswertung an einer Stelle x∗
ermöglicht.
Satz 3.2 (Iterationsschema des Neville-Algorithmus)
Für eine Index-Teilmenge {i0 , i1 . . . il } ⊆ {0, 1, . . . n} sei pi0 ,i1 ...il (x) das Interpolationspolynom, dass auf den dazugehörigen Stützstellen und Funktionswerten basiert.
p0,1,...n ist dann natürlich das ursprüngliche Interpolationspolynom. Ausserdem ist
für alle Stützstellen pi0 (x) = yi0 . Dann lässt sich p(x∗ ) über das folgende Verfahren schrittweise berechnen.
p0...n (x∗ )
↑
∗
p0...n−1 (x )
..
.
↑
-
p0,1,2 (x∗ )
↑
p0,1 (x∗ )
↑
p0 (x∗ )
-
p1...n (x∗ )
..
.
..
↑
-
p1,2,3 (x∗ )
↑
p1,2 (x∗ )
↑
p1 (x∗ )
.
-
↑
p2,3,4 (x∗ )
↑
p2,3 (x∗ )
↑
p2 (x∗ )
...
...
...
pn−1,n (x∗ )
↑
pn−1 (x∗ )
pn (x∗ )
Hierbei sind die Zwischenergebnisse definiert als:
1
[(x − xj+l ) · pj...j+l−1 (x) + (xj − x) · pj+1...j+l (x)]
xj − xj+l
pj (x) = yj
pj...j+l (x) =
Beweis. Zum Beweis des obigen Verfahren zur iterativen Bestimmung von p(x∗ ) reicht
es zu zeigen, dass die verschiedenen pj...j+l (x) die Interpolationsbedingung 3.1 erfüllen,
42
3.1. Interpolation mit Polynomen
da in Satz 3.1 bereits gezeigt wurde, dass es nur ein Polynom des Grades n + 1 geben
kann, dass 3.1 für n + 1 Stützstellen erfüllt. Der Induktionsanfang ergibt sich direkt
aus der Definition der pj .
zu zeigen:
Induktionsvorraussetzung (IV):
pj...j+l (xi ) = yi
∀ i ∈ {j . . . j + l}
pj...j+l−1 (xi ) = yi
∀ i ∈ {j . . . j + l − 1}
pj+1...j+l (xi ) = yi
∀ i ∈ {j + 1 . . . j + l}
Für die Induktion unterteilt man den Induktionsschritt in drei Teilfälle: zunächst die
beiden Grenzfälle i = j sowie i = j + l und dann die restlichen i ∈ {j + 1 . . . j + l − 1}:
i ∈ {j + 1 . . . j + l − 1}
1
[(xi − xj+l ) · pj...j+l−1 (xi ) + (xj − xi ) · pj+1...j+l (xi )]
pj...j+l (xi ) =
xj − xj+l
1
IV
=
[(xi − xj+l ) · yi + (xj − xi ) · yi ]
xj − xj+l
= yi
Fall 1:
Fall 2:
i=j
1
pj...j+l (xj ) =
[(xj − xj+l ) · pj...j+l−1 (xj ) + (xj − xj ) · pj+1...j+l (xj )]
xj − xj+l
1
IV
=
(xj − xj+l ) · yj
xj − xj+l
= yj
Fall 3:
i=j+l
(xj − xj+l )
(xj+l − xj+l )
· pj...j+l−1 (xj+l ) +
· pj+1...j+l (xj+l )
pj...j+l (xj+l ) =
xj − xj+l
xj − xj+l
1
IV
=
(xj − xj+l ) · yj+l
xj − xj+l
= yj
Auf der Grundlage von diesem Iterationsschema für die Auswertung von Lagrangepolynomen ohne diese explizit auszurechnen, können wir nun den Neville-Algorithmus
formulieren.
Algorithmus 3.1 (Neville-Algorithmus)
Für eine Menge an Stützstellen {x0 , x1 . . . xn } mit den Funktionswerten {y0 , y1 . . . yn }
lässt sich das Lagrange-Interpolationspolynom an der Stelle x∗ mit folgendem Algorithmus direkt auswerten.
43
3. Approximative Darstellung von Funktionen
for i = 0, 1 . . . n do
pi = y i
end for
for j = 1, 2 . . . n do
for i = 0, 1 . . . n − j do
pi = [(x∗ − xi+j ) · pi + (xi − x∗ ) · pi+1 ] / [xi − xi+j ]
end for
end for
Beispiel 3.2. Zur Veranschaulichung des Neville-Algorithmus wird dieser nun mit
den Werten aus Beispiel 3.1 durchgeführt.
x=2
p0,1 (2) =
=
p1,2 (2) =
p0,1,2 (2) =
p0 (x) = y0 = 1
p1 (x) = 3
p2 (x) = 2
1
[(2 − x1 ) · p0 (2) + (x0 − 2) · p1 2]
x0 − x1
1
[(2 − 1) · 1 + (0 − 2) · 3] = 5
0−1
1
5
[(2 − 3) · p1 (2) + (1 − 2) · p2 2] =
1−3
2
10
1
[(2 − 3) · p0,1 (2) + (0 − 2) · p1,2 2] =
0−3
3
Der hier vorgestellte Algorithmus ist also in der Lage den Wert einer Funktion an
einer gegebenen Stelle direkt auf iterative Weise aus den Stützstellen zu interpolieren.
Allerdings muss für jeden auszuwertenden Punkt der komplette Algorithmus von
vorne durchlaufen werden. Hierdurch wird der Algorithmus ineffektiv, wenn viele
Punkte berechnet werden sollen (beispielsweise für eine grafische Darstellung der
Interpolation).
3.1.3. Newtondarstellung, Horner-Schema und dividierte
Differenzen
Um den zuvor angemerkten Nachteil des Neville-Algorithmus zu vermeiden, ist es
vorteilhaft das Interpolationspolynom in der Newton-Darstellung zu schreiben.
p(x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + . . .
+an (x − x0 )(x − x1 ) . . . (x − xn−2 )(x − xn−1 )
44
3.1. Interpolation mit Polynomen
In dieser Darstellung lassen sich die Koeffizienten auf einfache Weise schrittweise
bestimmen. Setzt man die n Stützstellen und ihre Funktionswerte gemäß der Interpolationsbedingung in die Newton-Darstellung ein, ergibt sich ein lineares Gleichungssystem mit den Koeffizienten als Lösungsvektor, dessen Matrix eine untere
Dreiecksmatrix ist und somit sukzessive gelöst werden kann.
x = x 0 → a0 = y 0
x = x1 → a0 + a1 (x1 − x0 ) = y1
x = x2 → a0 + a1 (x2 − x0 ) + a2 (x1 − x0 )(x2 − x0 ) = y2
Aufgrund der zuvor bewiesenen Eindeutigkeit des Interpolationspolynoms bedarf es
keinen gesonderten Beweises um zu verifizieren, dass die alternative Darstellung identisch mit der vorherigen ist. Hat man die Koeffizienten der Newton-Darstellung einmal
bestimmt, kann man die Funktion dann effizient mit dem Hornerschema auswerten.
p(x) = [. . . [[an (x − xn−1 ) + an−1 ](x − xn−2 ) + an−2 ](x − xn−3 ) . . . + a0 ]
Um die Koeffizienten {ai } zu bestimmen, gibt es aber noch ein effizienteres Verfahren
als das oben erwähnte Gleichungssystem direkt zu lösen. Aufgrund der Problemstruktur sind die Einträge der Matrix im Gleichungssystem nicht voneinander unabhängig.
Nutzt man diese Zusammenhänge aus, ergibt sich das Verfahren der “dividierten Differenzen”, das mit weniger Rechenschritten auskommt und somit eine effizientere
Lösung darstellt.
Satz 3.3 (Rekursionsvorschrift der dividierten Differenzen)
Die in der Newton-Darstellung verwendeten Koeffizienten ai des Interpolationspolynoms lassen sich für eine gegebene Verteilung von Stützstellen über folgendes Schema
iterativ bestimmen:
t0 = y0
↓
t0,1 =
.
t0 −t1
x0 −x1
↓
t1 = y1
↓
t1,2 =
↓
−t1,2
t0,1,2 = t0,1
x0 −x2
↓
..
.
.
...
↓
...
↓
.
...
.
.
..
tn = yn
.
..
t1 −t2
x1 −x2
.
t0...n =
.
t2 = y2
↓
.
...
t0...n−1 −t1...n
x0 −xn
45
3. Approximative Darstellung von Funktionen
Hierbei sind die t0...l die gesuchten Koeffizienten al und die t sind wie folgt definiert:
tj = pj (x) = yj
tj...j+l−1 − tj+1...j+l
tj...j+l =
xj − xj+l
Beweis. Wie aus dem Beweis des Neville-Algorithmus (3.2) bekannt ist, ist das über
die dort angegebene Formel konstruierte Polynom p0...n = p(x). Der Zusammenhang
der Koeffizienten der Newtondarstellung al zu den sich in den Zwischenschritten von
Neville ergebenden Polynomen8 ist:
al =
1 dl
p0...l (x)
l! dxl
Um nun zu zeigen, dass sich die Koeffizienten über das oben gezeigte Schema bestimmen lassen, nehmen wir an, dass t0...l = al gilt, und stellen daraus folgend die
Behauptung auf:
1 dl
pj...j+l (x)
l! dxl 1 dl
1
=
[(x − xj+l ) · pj...j+l−1 (x) + (xj − x) · pj+1...j+l (x)]
l! dxl xj − xj+l
tj...j+l =
Für den Induktionsanfang l = 0 ist diese Aussage offensichtlich wahr und es bleibt
nur der Induktionsschluss zu zeigen. Durch Verwendung der Produktregel kann dieser
Term auch wie folgt ausgedrückt werden:
l X
dl
l (k)
(f (x) · g(x)) =
f (x) · g (l−k) (x)
l
dx
k
k=0
l k
X
1
l
d
d(l−k)
(x
−
x
)
pj...j+l−1 (x)
⇒ tj...j+l =
j+l
l!(xj − xj+l ) k=0 k
dxk
dx(l−k)
dk
d(l−k)
+ k (xj − x) (l−k) pj+1...j+l (x)
dx
dx
Schaut man nun genauer hin, stellt man fest, dass alle Terme für k > 1 wegfallen,
da die erste Ableitung in beiden Summanden 0 wird. Berücksichtigt man außerdem,
8
Zum Beweis bedenke man, dass die Newton-Darstellung iterativ aufgebaut wird und betrachte
das das Polynom nur bis al . Dann ergibst sich al als l-te Ableitung davon, geteilt durch l! um die
Vorfaktoren aus der Ableitung auszugleichen. Da p0...l (x) aufgrund der Verwendung derselben
Stützstellen eine dazu identische Darstellung ist, gilt der angegebene Zusammenhang.
46
3.1. Interpolation mit Polynomen
dass pj...j+l−1 und pj+1...j+l vom Grade l − 1 sind, so bliebt nur der Term für k = 1
übrig:
l
l
d
1
pj...j+l−1 (x) − pj+1...j+l (x)
=
l!(xj − xj+l ) 1
dxl
Durch das Ausdrücken des Binominialkoeffizienten über Fakultäten und Einsetzen
der Definition der tj...j+l gemäß der Induktionsvoraussetzung man schließlich zu:
=
1
[tj...j+l−1 − tj+1...j+l ]
(xj − xj+l )
Damit ist also einen Zusammenhang zwischen den al und den t0...l hergestellt und eine
funktionierende Rekursionsvorschrift, die das zuvor angegebene Schema rechtfertigt,
hergeleitet.
Nachdem wir nun die Gültigkeit der Rekursionsvorschrift bewiesen haben, können
wir auch den dazugehörigen Algorithmus formulieren, um die Koeffizienten unseres
Interpolationspolynoms effizient auszurechnen.
Algorithmus 3.2 (Dividierte Differenzen)
Gegeben seien n + 1 Stützstellen {x0 , x1 . . . xn } mit den dazugehörigen Funktionswerten yi . Dann lassen sich die Koeffizienten ai des Interpolationspolynoms in der
Newtondarstellung mit folgendem Algorithmus bestimmen.
for i = 0, 1 . . . n do
ti = yi
end for
a0 = t0
for j = 1, 2 . . . n do
for i = 0, 1 . . . n − j do
ti = [pi − pi+1 ] / [xi − xi+j ]
end for
aj = t0
end for
Nun mag die Frage aufkommen, ob diese Index-Spielerei grade wirklich notwendig
war. Die Antwort darauf ist ein klares Ja, denn ein Vergleich mit dem sukzessiven
Lösen des linearen Gleichungssystems zeigt, dass hier deutlich weniger Rechenoperationen durchgeführt werden müssen um die Koeffizienten zu bestimmen.
47
3. Approximative Darstellung von Funktionen
3.1.4. Mögliche Probleme: Extrapolation und Runges Phänomen
Mit den zuvor konstruierten Polynomen ist es möglich eine Funktion zwischen den
vorhandenen Stützstellen meist vernünftig zu approximieren (ein mögliches Problem
wird in diesem Abschnitt noch vorgestellt), aber wie verhält es sich mit der Güte der
Annäherung jenseits des Stützstellen-Intervalls?
y
Stützstellen
Interpolation
Extrapolationsbereich
Interpolationsbereich
x0
x1
x2
x3
x4
x5
x6
x7
x8
x9
x
Abbildung 3.3.: Interpolations- und Extrapolationsbereiche
Da es sich bei p(x) um ein Polynom handelt, dessen Grad linear von der Anzahl
der Stützstellen abhängt, ist dieser für eine repräsentative Stützstellenmenge hoch.
Dies führt dazu, dass das Polynom abseits des Interpolationsintervalls, wo es keine
Randbedingungen mehr beschränken, sehr schnell gegen ±∞ strebt.
Die bisher konstruierten Interpolationsfunktionen sind also absolut nicht für Extrapolationen geeignet, wie sich durch eine Analyse des Restglieds r(x) auch formal
beweisen lässt.
r(x) = f (x) − p(x)
η 6= xi ∀ i
r(η)
α = Qn
i=0 (η − xi )
x0 < η < x n
Definition:
Um eine genauere Abschätzung der Größe von r(x) zu ermöglichen, definiert man
außerdem eine Hilfsfunktion F (x) wie folgt:
n
Y
F (x) = r(x) − α (x − xi )
i=0
48
3.1. Interpolation mit Polynomen
y
Stützstellen
f(x)
p(x)
x0
x1 x2 x3 x4 x5 x6
x7 x8 x9
x
Abbildung 3.4.: Verhalten der Interpolationsfunktion außerhalb des Interpolationsintervalls
Wie sich sofort erkennen lässt, hat F (x) im Intervall der Stützstellen mindestens n+2
Nullstellen, nämlich alle n+1 Stützstellen und zuvor gewähltes η. Betrachtet man die
Ableitungen von F (x), sieht man, dass die (n + 1)-te Ableitung von F (x) mindestens
eine Nullstelle ξ im Intervall [x0 , xn ] hat.
F (n+1) (ξ) = 0
9
= f (n+1) (ξ) − p(n+1) (ξ) − α(n + 1)!
f (n+1) (ξ)
⇒α =
(n + 1)!
Mit der ursprünglichen Definition von α kann man nun die Größe des Restglieds,
ausgewertet an der Stelle η, bestimmen.
α=
f (n+1) (ξ)
r(η)
= Qn
(n + 1)!
i=0 (η − xi )
n
f (n+1) (ξ) Y
⇒ r(η) =
·
(η − xi )
(n + 1)! i=0
Den maximalen Fehler der Interpolation kann man nun als obere Grenze des Restgliedes im Interpolationsintervall abschätzen.
(n+1) Y
n
f
(ξ) |f (η) − p(η)| ≤ max |η − xi |
ξ∈[x0 ,xn ] (n + 1)! i=0
9 (n+1)
p
(ξ) entfällt, da p nur Grad n hat.
49
3. Approximative Darstellung von Funktionen
Der Faktor (n + 1)! führt in der Regel dazu, dass der Interpolationsfehler zwischen
den Stützstellen klein bleibt. Deswegen werden mehr Stützstellen meistens zu einer
höheren Genauigkeit der Approximation führen. Setzt man aber in die Formel ein
η ∈
/ [x0 , xn ] ein, um zumindest das qualitative Verhalten außerhalb des Interpolationsbereichs zu beurteilen, sieht man, dass das Produkt sehr schnell sehr groß werden
und die Fakultät dominieren kann.
Jedoch kann es aufgrund der hohen Ordnung des Polynoms auch im Interpolationsintervall zu Abweichungen durch Oszillationen kommen. Dieses Verhalten ist als
y
Stützstellen
f(x)
p(x)
x0
x1
x2
x3
x4
x5
x6
x7
x8
x9
x
Abbildung 3.5.: Runges Phänomen bei der Polynominterpolation
“Runges Phänomen” bekannt und kann bereits ab 5-8 Stützstellen auftreten. Sind
die Ableitungen der zu interpolierenden Funktion bekannt, kann man statt LagrangePolynomen auch Hermitesche Interpolationspolynome verwenden um diesen Effekt
zu vermeiden.
Für eine Menge von n+1 Stützstellen, bei der die Funktionswerte und die ersten K −1
Ableitungen bekannt sind (also insgesamt (n+1)·K Stützwerte) lässt sich das Interpolationspolynom völlig analog zu dem Lagrange-Interpolationspolynom konstruieren.
Hierfür wird nur die Interpolationsbedingung auf die Ableitungen erweitert,
dk
p(xi ) = f (k) (xi )
k
dx
0≤k ≤K −1
0≤i≤n
der Eindeutigkeitsbeweis und die Algorithmen verlaufen analog zu denen unter Verwendung von Lagrange-Polynomen (Teilabschnitt 3.1.1).
Meist sind diese Ableitungen jedoch aufwändig zu berechnen oder garnicht bekannt,
weil der Datensatz beispielsweise aus einem Experiment stammt. In diesen Fällen
bietet sich die Spline-Interpolation als Alternative an. Bei dieser wird f (x) auf jedem
Teilintervall zwischen 2 Stützstellen durch ein Polynom geringer Ordnung interpo-
50
3.2. Interpolation mit rationalen Funktionen
liert und die einzelnen Polynome über Stetigkeitsbedingungen verknüpft. Auf diese
Interpolationsmethode wird in Abschnitt 3.3 detailliert eingegangen.
3.2. Interpolation mit rationalen Funktionen
Interpolation mit gewöhnlichen Polynomen ist nicht immer ein geeigneter Ansatz,
Funktionen mit Polstellen lassen sich beispielsweise damit nicht gut darstellen. Unabhängig von der Zahl der verwendeten Stützstellen wird ein Polynom aufgrund seiner
stetigen Differenzierbarkeit nie in der Lage sein, eine Polstelle abzubilden.
10
f(x)
Stützstellen
Interpolation
y
5
0
-5
-10
-2
-1
0
x
1
2
Abbildung 3.6.: Interpolationsfehler an einer Polstelle mit Polynom-Interpolation
Sofern es bekannt ist, dass f (x) eine oder mehrere Polstellen hat, liegt es nahe statt
eines normalen Polynoms eine rationale Funktion Φ zum Interpolieren zu verwenden.
Φ(x) =
p(x)
a0 + a1 x + . . . + an x n
=
q(x)
b0 + b1 x + . . . + bn x m
Dieser Ansatz bietet neben der Möglichkeit Polstellen durch die Nullstellen von q(x)
darzustellen auch eine einfache Möglichkeit bereits vorhandenes Wissen übe eine kfache Polstelle xp von f (x) direkt in die Lösung einfließen zu lassen.
q(x) = (x − xp )k · (b0 + b1 x + . . . + bn xm )
Die Grade m, n der beiden Polynome kann man über den meist bekannten algebraischen Abfall10 der Funktion so bestimmen, dass das asymptotische Verhalten bei der
Interpolation erhalten bleibt:
x → ∞ ⇒ f (x) ∝
10
1
xl
Wenn die Funktion nicht im Unendlichen verfällt, funktioniert das natürlich auch andersherum
mit xl
51
3. Approximative Darstellung von Funktionen
⇒
m−n = l
Die Problemstellung ist natürlich wie immer, die Koeffizienten ai und bi so zu bestimmen, dass alle Stützwerte von der Interpolationsfunktion reproduziert werden.
∀ k = 0, 1, . . . m + n
Φ(xk ) = f (xk )
(3.4)
Im Gegensatz zu den Lagrange-Polynomen sind rationale Interpolationsfunktionen
nicht eindeutig bestimmt, sondern können sich um einen gemeinsamen Faktor der
Koeffizienten unterscheiden. Deswegen reichen für m + n + 2 Koeffizienten m + n + 1
Stützstellen aus, um die Interpolationsbedingung zu formulieren. In der praktischen
Anwendung muss man also das lineare Gleichungssystem, dass sich aus den Interpolationsbedingungen 3.4 ergibt lösen, um den Lösungsvekor der Koeffizienten zu
erhalten.
Beispiel 3.3. Gegeben ist die folgende Stützstellen-Verteilung:
k
xk
fk
0
0
1
1
1
2
2
2
2
Da 3 Stützstellen vorhanden sind, liegt es nahe m = n = 1 zu wählen und die Interpolationsbedingugen sehen dann wie folgt aus:
0 = a0 + a1 xk − fk · (b0 + b1 xk )
⇒k=0:
k = 0, 1, 2
0 = a0 + 0 − 1(b0 + 0) ⇒ a0 = b0
k=1:
0 = a0 + a1 − 2(a0 + b1 ) ⇒ 0 = −a0 + a1 − 2b1 (I)
k=2:
0 = a0 + 2a1 − 2(a0 + 2b1 ) ⇒ 0 = −a0 + 2a1 − 4b1 (II)
(II) − (I)
0 = a1 − 2b1 ⇒ a1 = 2b1
(I) ⇒ 0 = −a0 + 2b1 − 2b1 ⇒ a0 = b0 = 0
Da für den letzten Koeffizienten wegen dem gemeinsamen Faktor keine eindeutige
Bedingung mehr existiert, kann b1 nun frei gewählt werden als 1, womit sich a1 = 2
ergibt.
Φ(x) =
0 + 2x
=2
0+x
Wie sich erkennen lässt, verfehlt die gerade konstruierte Interpolationsfunktion aber
den ersten Stützpunkt. Eine Interpolation rationalen Funktionen ist also nicht immer
eindeutig möglich.
52
3.3. Kubische Spline-Interpolation
Die Ursache für die im Beispiel gezeigte Nichtlösbarkeit des Interpolationsproblems
mit einer rationalen Funktion liegt in der nicht eindeutigen Darstellung von rationalen
Funktionen:
p(x)r(x)
p̃(x)
p(x)
=
=
Φ(x) =
q(x)
q(x)r(x)
q̃(x)
Im obigen Beispiel war r(x) = x, wodurch der Grad der beiden Polynome, die Φ laut
der Lösung des linearen Gleichungssystems bestimmen, in ihrer teilerfremden Darstellung geringer ist, als ursprünglich bei der Formulierung des Problems vorausgesetzt
wurde.
Satz 3.4 (Lösbarkeit von rationalen Interpolationsproblemen)
Liefert das lineare Gleichungssystem p(xk )−fk ·q(xk ) = 0 einen Satz an Koeffizienten,
die zu zwei Polynomen p(x) und q(x) gehören, die teilerfremd sind, ist das rationale
Interpolationsproblem lösbar und alle Stützpunkte werden von der Interpolationsfunktion erreicht.
Beweis. Sei (a0 , . . . an , b0 , . . . bn ) 6= (0 . . . 0) eine Lösung des LGS p(xk ) − fk · q(xk ) = 0
und die damit definierten Polynome teilerfremd. Dann kann für jedes k ∈ {0, . . . , n +
m} einer von zwei Fällen eintreten:
Fall 1:
q(xk ) 6= 0 ⇒ Φ(xk ) = fk = f (xk )
Fall 2:
q(xk ) = 0 ⇒ p(xk ) = 0
Im ersten Fall wird die Stützstelle von der Interpolationsfunktion erreicht, im zweiten
Falle jedoch ergibt sich ein Widerspruch. Denn wenn p und q beide eine Nullstelle bei
xk haben kann diese als Linearfaktor ausgeklammert werden, was zum Widerspruch
zur angenommen Teilerfremdheit steht.
Aus dem Beispiel 3.3 ist aber auch erkenntlich, dass sich Situationen in denen die
beiden Polynome nicht teilerfremd sind, auf eine einfache Weise durch eine kleine
Abänderung der Stützstellen verhindern. In der Praxis tritt dieser Fall aber eher selten
auf. Die Berechnung der Koeffizienten kann analog zu den für Lagrange-Polynome
gezeigten Algorithmen durchgeführt werden.
3.3. Kubische Spline-Interpolation
Die zuvor konstruierten Lagrange-Interpolationspolynome neigen bei der Verwendung
vieler Stützstellen, die in der Regel für eine hohe Genauigkeit nötig sind, zu Oszillationen. Die Hermiteschen Interpolationspolynome hingegen erfordern die Kenntnis
53
3. Approximative Darstellung von Funktionen
der Ableitungen an den Stützstellen. Beides sind keine erwünschten Eigenschaften,
weswegen es nahe liegt, nach alternativen Verfahren zur Interpolation zu suchen.
Die Lösung ist die “Spline-Interpolation”, bei der die Interpolationsfunktion über
das Intervall gestückelt wird. Zwischen jeweils zwei Stützstellen wird die Funktion
über ein Polynom geringer Ordnung approximiert und über Stetigkeitsbedingungen
der Ableitungen an die Interpolation im vorangegangenen und folgenden Teilintervall gekoppelt. Spline-Interpolation kann man im Allgemeinen mit Polynomen jeder
Ordnung durchführen, am meisten verbreitet sind aber lineare Spline-Interpolation
und die kubische Variante. Da die lineare Spline-Interpolation im Endeffekt nur das
Verbinden der einzelnen Punkte durch Geraden ist, wird auf diese hier nicht weiter
eingegangen11 . Stattdessen soll die kubische Spline-Interpolation im Detail erläutert
werden.
Definition 3.1 (kubische Spline-Funktion)
Für das Intervall [x0 , xn ] nennt man S : [x0 , xn ] → R eine “kubische Spline-Funktion”,
wenn sie die Interpolationsbedingungen S(xj ) = yj erfüllt, S(x) ∈ C 2 und S(x) auf
jedem Intervall [xj ; xj+1 ] ∀ j = 0, 1, . . . n − 1 ein Polynom 3-ten Grades ist. Um die
Eindeutigkeit der Funktion zu garantieren, fordert man außerdem, dass S 00 (x0 ) =
S 00 (xn ) = 0.
Satz 3.5 (Eindeutigkeit und Oszillationsverhalten kubischer Splines)
Eine Spline-Funktion S(x) (wie in Definition 3.1) für eine Funktion f (x) auf einem Intervall [x0 , xn ] ist eindeutig definiert und weist für die gegebene Verteilung der
Stützstellen ein Oszillationsverhalten, das nicht stärker als das der Funktion selbst
ist, auf.
Beweis. Sei f (x) ∈ C 2 auf [x0 , xn ], dann ist
Z
x1
||f || =
00
2
21
|f (x)| dx
x0
eine Halbnorm12 auf diesem Intervall. Für eine Funktion f (x) und die dazugehörige
Spline-Funktion S(x) gilt dann:
Z xn
2
||f − S|| =
|f 00 (x) − S 00 (x)|2 dx
x0
Z xn
2
2
= ||f || + ||S|| − 2
f 00 (x)S 00 (x)dx
x0
11
12
Stetigkeitsbedingungen gibt es hier natürlich nur für die 0-te Ableitung der Funktion
da es nichttriviale Funktionen mit ||f (x)|| = 0 gibt, bspw. alle linearen Funktionen
54
3.3. Kubische Spline-Interpolation
2
2
Z
xn
00
Z
00
xn
[f (x) − S (x)]S (x)dx − 2
= ||f || + ||S|| − 2
= ||f ||2 − ||S||2 − 2
00
x0
n−1
X Z xj+1
j=0
|S 00 (x)|2 dx
x0
[f 00 (x) − S 00 (x)]S 00 (x)dx
xj
Der letzte Term ergibt sich durch eine doppelte partielle Integration zu folgendem
Ausdruck:
n−1 Z xj+1
n−1 X
X
x−
x
00
00
00
[f (x) − S (x)]S (x)dx =
(f 0 − S 0 )S 00 |xjj+1 − (f − S)S 000 |xj+1
+
j=0
xj
j
j=0
Z
xj+1
+
#
(f − S)S 0000 dx
xj
Weil die dritte Ableitung der Splines an den Stützstellen nicht stetig sein muss, ist es
hier jeweils nötig die links- bzw. rechtsseitigen Grenzwerte zu verwenden. Das letzte
Integral fällt weg, weil S ein Polynom dritten Grades ist. Aufgrund der Stetigkeit von
f 0 , S 0 und f 00 bleiben bei der ersten Summe nur die Randpunkte erhalten.
n−1 Z
X
j=0
xj+1
xj
x
x−
[f 00 (x) − S 00 (x)]S 00 (x)dx = (f 0 − S 0 )S 00 |xn0 − (f − S)S 000 |x+j+1
j
Da für die Spline-Funktion aber S(x0 ) = S(xn ) = 0 gilt, entfällt der erste Term
und aufgrund der Interpolationsbedingungen f (xj ) = S(xj ) liefert der zweite Term
ebenfalls keinen Beitrag. Insgesamt bedeutet dies also:
||f − S||2 = ||f ||2 − ||S||2 (≥ 0)
(3.5)
Dieses Resultat ist eine wichtige Eigenschaft von Spline-Funktionen: für jedes beliebige, zweifach differenzierbare f ist das Oszillationsverhalten des dazugehörigen Splines
maximal genauso groß wie das von f selber. Im Gegensatz zu den zuvor vorgestellten
Verfahren, kann Runges Phänomen hier also nicht auftreten.
Außerdem lässt sich mit Gleichung 3.5 auch die Eindeutigkeit des Splines beweisen.
Hierzu sei angenommen, dass es für dieselbe Funktion und Stützstellenverteilung eine
weitere Spline-Funktion T (x) 6= S(x) gibt. Dann ist S auch eine Spline-Interpolation
für T , da diese aufgrund der Interpolationsbedinungen an den Stützstellen dieselben
Funktionswerte wie f hat. Selbiges gilt aber auch für S, weswegen T also auch eine
Spline-Funktion von S sein muss. Folglich muss gelten:
||T (x) − S(x)||2 = ||T ||2 − ||S||2 ≥ 0
||S(x) − T (x)||2 = ||S||2 − ||T ||2 ≥ 0
55
3. Approximative Darstellung von Funktionen
⇒ 0 = ||S(x) − T (x)||2
Z xn
|S 00 − T 00 |2
=
x0
⇒ S 00 (x) = T 00 (x) ∀x ∈ [x0 , xn ]
!
Durch Integration ergibt sich dann S(x) = T (x) + cx + d und die Randbedingungen
S(x0 ) = T (x0 ) und S(xn ) = T (xn ) führen zu c = d = 0 und damit zu S(x) = T (x),
was im Widerspruch zur Annahme steht.
Um die Koeffizienten der Spline-Funktion zu bestimmen, ist es hilfreich, die Splinefunktion zuerst über die Abstände der Stützstellen hj+1 := xj+1 −xj und die Momente
mj := S 00 (xj ) auszudrücken. Da S ein Polynom 3-ten Grades ist, ist S 00 eine lineare
Funktion auf jedem Teilintervall [xj , xj+1 ], die aufgrund der Stetigkeitsbedingungen
wie folgt aussieht:
x − xj
xj+1 − x
+ mj+1
hj+1
hj+1
2
(xj+1 − x)
(x − xj )2
⇒ S 0 (x) = −mj
+ mj+1
+ Aj
2hj+1
2hj+1
(xj+1 − x)3
(x − xj )3
⇒ S(x) = mj
+ mj+1
+ Aj (x − xj ) + Bj
6hj+1
6hj+1
S 00 (x) = mj
(3.6)
(3.7)
Durch Einsetzen der Interpolationsbedingungen S(xj ) = yj und S(xj+1 ) = yj+1 in
Gleichung 3.7 ergibt sich dann für die beiden unbekannten Integrationskonstanten
Aj , Bj das LGS
(xj+1 − xj )3
+ Bj
(I)
6hj+1
(xj+1 − xj )3
+ Aj (xj+1 − xj ) + Bj
= mj+1
6hj+1
h2j+1
= yj − mj
6
yj+1 − yj
hj+1
=
−
(mj+1 − mj ) .
hj+1
6
yj = mj
yj+1
(I) ⇒ Bj
(II) − (I) ⇒ Aj
(II)
Nun, da die Integrationskonstanten bestimmt sind, kann S(x) in der folgenden Form
geschrieben werden, wobei sich die Koeffizienten direkt aus den eben bestimmten
Formeln ergeben.
(j)
(j)
(j)
(j)
S(x) = a0 + a1 (x − xj ) + a2 (x − xj )2 + a3 (x − xj )3
(j)
a0
56
= yj
3.3. Kubische Spline-Interpolation
(j)
a1
(j)
a2
(j)
a3
2mj + mj+1
yj+1 − yj
−
hj+1
hj+1
6
mj
=
2
mj+1 − mj
=
6hj+1
=
Nun verbleibt also noch die Berechnung der Momente, die über die Verknüpfung der
Gleichung 3.6 mit den zuvor bestimmten Integrationskonstanten und den Stetigkeits0 −
0 +
bedingungen S 0 (x+
j ) = S (xj ) erfolgt. S (xj ) ist der Spline auf dem Intervall [xj , xj+1 ]
und S 0 (x−
j ) der im Intervall [xj−1 , xj ].
hj+1
(x − xj )2 yj+1 − yj
(xj+1 − x)2
+ mj+1
+
−
(mj+1 − mj )
S (x) = −mj
2hj+1
2hj+1
hj+1
6
hj+1 yj+1 − yj
hj+1
S 0 (x+
− mj+1
+
j ) = −mj
3
6
hj+1
h
h
y
−
y
j
j
j
j−1
S 0 (x−
+ mj−1 +
j ) = mj
3
6
hj
0
Damit ergibt sich für jeden Stützpunkt (ausgenommen die beiden Randpunkte) eine
Gleichung, die zusammen ein LGS aus n − 1 Gleichungen ergeben.
0 −
S 0 (x+
j ) = S (xj )
hj+1
hj+1 yj+1 − yj
hj yj − yj−1
hj
⇒ −mj
− mj+1
+
= mj + mj−1 +
3
6
hj+1
3
6
hj
Zwei weitere Bedingungen für die n + 1 Momente des Splines ergeben sich aus Definition 3.1: m0 = mn = 0. Durch Definition von ein paar Hilfsvariablen lässt sich das
Gleichungssystem dann übersichtlich aufschreiben.
hj+1
hj + hj+1
hj
µj :=
hj + hj+1
6
yj+1 − yj
yj − yj−1
dj :=
−
hj + hj+1
hj+1
hj
λj :=
λ0 = d0 = µn = dn = 0 ⇒ m0 = mn = 0

2
λ0




⇒



µ1
2
λ1
0
..
.
..
.
2
... ...
λn−1
...
µn
2
µ2
..
.
0
...
 
 
 
 
 
·
 
 

m0
m1
..
.
mn








 = 






d0
d1
..
.








dn
57
3. Approximative Darstellung von Funktionen
Es lässt sich zeigen, dass die Matrix immer regulär ist und der Spline also immer
eindeutig bestimmbar ist, auf den Beweis soll hier aber verzichtet werden. Insbesondere ist zu bemerken, dass die Matrixelemente nur von der Verteilung der Stützstellen
abhängen, nicht aber von den dazugehörigen Funktionswerten. Eine Möglichkeit das
LGS zu lösen ist die Verwendung des Gauss-Algorithmus.
Algorithmus 3.3 (Kubische Spline-Interpolation)
Gegeben sei eine Stützstellenverteilung {x0 , x1 . . . xn } mit den dazugehörigen Distanzen hi und Funktionswerten yi . Unter Verwendung eines geeigneten LGS-Lösers für
das entstehende System Bm = d, berechnet der folgende Algorithmus die Koeffizien(j)
ten ai der Splines.
b0,0 = bn,n = 2
d0 = dn = 0
for i = 1, 2 . . . n − 1 do
bi,i = 2
bi,i−1 = hi /[hi + hi+1 ]
bi,i+1 = hi+1 /[hi + hi+1 ]
di = 6 ([yi+1 − yi ]/hi+1 − [yi − yi−1 ]/hi ) / [hi + hi+1 ]
end for
löse Bm = d um die Momente mi zu bestimmen
for i = 0, 1 . . . n − 1 do
(i)
a0 = yi
(i)
a1 = [yi+1 − yi ]/hi+1 − [2mi + mi+1 ]hi+1 /6
(i)
a2 = mi /2
(i)
a3 = [mi+1 − mi ]/[6hi+1 ]
end for
Die kubische Spline-Interpolation ist zwar aufwändiger als eine simple PolynomInterpolation, aber der Mehraufwand resultiert in weniger Oszillationen und einer besseren Konvergenz gegen die echte Funktion bei der Verwendung von mehr Stützstellen.
3.4. Trigonometrische Interpolation
Zur Darstellung periodischer Funktionen ist eine Interpolation mit Polynomen nicht
geeignet, stattdessen liegt es nahe die elementaren trigonometrischen Funktionen Si-
58
3.4. Trigonometrische Interpolation
nus und Kosinus mit verschiedenen Perioden zu verwenden. Da jede Funktion g(x)
mit Periodenlänge L in eine Funktion f mit Periode 2π transformiert werden kann,
reicht es aus, Funktionen mit 2π-Periodizität zu verwenden.
x
mit
g(x) = f (2π )
L
g(x ± L) = g(x)
f (y ± 2π) = f (y)
Definition 3.2 (Trigonometrische Interpolationsfunktion)
Für eine Verteilung von N Stützstellen {x0 . . . xN −1 } mit 0 ≤ x0 < . . . < xN −1 < 2π
nennt man T (x) eine trigonometrische Interpolationsfunktion für eine Funktion f ,
wenn T (xk ) = f (xk ) ∀k = 0, . . . N − 1 und T, je nach Stützstellenzahl, die folgende
Form hat:
M
N = 2M + 1
T (x) =
A0 X
+
(An cos(nx) + Bn sin(nx))
2
n=1
N = 2M
T (x) =
M −1
A0 X
AM
+
(An cos(nx) + Bn sin(nx)) +
cos(M x)
2
2
n=1
f(x)
Da es sich hier aber nicht wie zuvor um eine Linearkombination von Monomen handelt, ist dieses Problem anspruchsvoller und nicht so einfach zu lösen wie die vorherigen Interpolationsverfahren.
-2
-1
0
x in π
1
2
Abbildung 3.7.: ein Beispiel für periodische Funktionen
Um die Berechnung zu vereinfachen, wird im folgenden davon ausgegangen, dass die
Stützstellen äquidistant verteilt sind: xk = 2π Nk k = 0, . . . N −1. Die Verknüpfung der
trigonometrischen Funktionen mit den komplexen Zahlen über die Eulersche Formel
eix = cos(x) + i sin(x) lässt den Ansatz sinnvoll erscheinen, den Stützstellensatz nach
C zu transformieren und dort mit einem komplexen Polynom zu interpolieren, in der
Hoffnung aus dieser Interpolation Rückschlüsse auf das ursprüngliche Problem ziehen
zu können.
p(x) = β0 + β1 eix + β2 e2ix + . . . + βN −1 e(N −1)ix
59
3. Approximative Darstellung von Funktionen
=
N
−1
X
βn ω n
ω := eix
n=0
Die Transformation der Stützstellen x → eix ist hierbei wegen der bereits erwähnten
Eulerschen Formel erfolgt, die einen Zusammenhang zu den Sinus- und KosinusFunktionen in dem gesuchten T herstellt. Für p(x) ist es kein Problem die Koeffizienten zu bestimmen, weil die Algorithmen und Beweise für Lagrange-Polynome
auch für komplexe Polynome gelten, da keine besonderen Eigenschaften13 von R, die
C nicht hat, benötigt wurden. Da nur die Stützstellen auf den Einheitskreis der komplexen Zahlen abgebildet werden, die Stützwerte aber nicht verändert werden, gilt
folglich für alle Stützstellen:
T (xk ) = p(xk ) = f (xk )
(3.8)
Für den Bereich zwischen den Stützstellen muss dies aber nicht gelten, da p nach
Konstruktion sonst auch auf dem Einheitskreis komplexe Funktionswerte annehmen
darf.
Über einen Koeffizientenvergleich ist es möglich mit Gleichung 3.8 die Koeffizienten
der trigonometrischen Funktionen zu bestimmen. Unter der Annahme äquidistanter
Stützstellen lässt sich dies auf einfache Weise durchführen.
k
k
k
xk = 2π ⇒ e−nixk = e−2πni N = e+2π(N −n)i N = e(N −n)ixk
N
1 inxk
⇒ cos(nxk ) =
e
+ e−inxk
2
1 inxk
=
e
+ ei(N −n)xk
2
1 inxk
e
− ei(N −n)xk
sin(nxk ) =
2i
Setzt man diese Gleichungen nun in T (x) ein und macht den Koeffizientenvergleich,
so erhält man die Koeffizienten von T für eine ungerade Stützstellenzahl (mit n =
1 . . . M ).
A0 = 2β0
β0 = A20
An = βn + βN −n
βn = 12 (An − iBn )
Bn = i(βn − βN −n )
βN −n = 12 (An + iBn )
Für eine gerade Anzahl Stützstellen sieht das Ergebnis, bis auf eine kleine Modifkation, genauso aus:
βM =
13
AM
2
BM = 0
Es wurde zwar eine Ordnung der Stützstellen angenommen, wenn man die Beweise nochmal
durchgeht, wird man jedoch sehen, dass diese nur bei Splines eine Rolle gespielt hat.
60
3.4. Trigonometrische Interpolation
In dem gerade betrachteten Sonderfall äquidistant verteilter Stützstellen gibt es aber
noch eine andere, einfachere Methode zur Bestimmung der Koeffizienten des komk
plexen Interpolationspolynoms. Eine genauere Betrachtung der ωk = e2πi N offenbart
einige interessante Eigenschaften, die einem dann eine einfache Berechnung der βn
ermöglichen.
ωkl = ωkl
∀ k, l ∈ {0, . . . , N − 1}
ωk−l = (ω k )l
N
−1
X
(3.9)
mit ω̄ als komplex Konjugiertes von ω
ωkj ωk−l = N δjl
(3.10)
(3.11)
k=0
Die ersten beiden Eigenschaften ergeben sich direkt aus der Definition von ωk , die
dritte Eigenschaft ist weniger offensichtlich und soll deswegen noch kurz bewiesen
werden. Hierzu betrachtet man das Polynom q(ω) = ω N − 1. Wie man leicht erkennt
N
ist jedes ωk−l
eine Nullstelle dieses Polynoms (da e2πi = 1). Durch das Abspalten
eines Linearfaktors kann man q wie folgt schreiben:
!
N
−1
X
k
q(ω) = (ω − 1)
ωj−l
k=0
q(ωj−l ) = 0 ⇒
ωj−l = 1 ∨
N
−1
X
k
ωj−l
3.9
=
k=0
j=l→
j 6= l →
wj−l = 1
wj−l 6= 1
N
−1
X
k=0
N
−1
X
k=0
N
−1
X
k=0
N
−1
X
k
ωj−l
=0
ωkj−l
=
N
−1
X
ωkj ωk−l
k=0
k
ωj−l
=N
k
ωj−l
=0
k=0
Aus dieser Fallunterscheidung folgt dann sofort Gleichung 3.11.
Satz 3.6 (Koeffizienten von trigonometrischen Polynomen)
Für ein trigonometrisches Polynom p(x) mit Stützstellenverteilung xk = 2π Nk im
Intervall [0, 2π[ gilt die Interpolationsbedingung p(xk ) = f (xk ) genau dann, wenn
p(x) =
N
−1
X
βj eijx
(3.12)
j=0
N −1
1 X
βj =
f (xk )ωk−j
N k=0
ωk = eixk
(3.13)
61
3. Approximative Darstellung von Funktionen
für alle Koeffizienten gilt.
Beweis. Es wird zuerst die Rückrichtung der Äquivalenz bewiesen, da sich die Hinrichtung danach deutlich einfacher gestaltet.
p(xk ) = f (xk ) := fk
3.12
fk =
N
−1
X
βl ωkl
l=0
Betrachtet man nun für ein j = 0, . . . N −1 die rechte Seite von Gleichung 3.13, ergibt
sich die Behauptung.
N −1
N −1 N −1
1 XX
1 X
−j
fk ωk =
βl ωkl ωk−j
N k=0
N k=0 l=0
N −1
1 X
=
βl N δlj = βj
N l=0
3.11
Da die Rückrichtung nun bewiesen ist, ist die Hinrichtung trivial, da aus Satz 3.1
bekannt ist, dass Lagrange-Interpolationspolynome eindeutig sind.
Bei der Berechnung der Koeffizienten handelt es sich um eine diskrete Version der
Fouriertransformation, wie im nächsten Kapitel gezeigt werden wird. Zunächst wollen
wir aber noch den Algorithmus für die trigonometrische Interpolation aufschreiben.
Algorithmus 3.4 (Trigonometrische Interpolation)
P −1
ijx
mit Stützstellenverteilung xk =
Für ein trigonometrisches Polynom p(x) N
j=0 βj e
k
2π N und Funktionswerten yk im Intervall [0, 2π[ lassen sich die Koeffizienten βj wie
folgt bestimmen.
for m = 0, 1 . . . N − 1 do
ωm = eixm
end for
for m = 0, 1 . . . N − 1 do
PN −1
bm = k=0
yk ωk−m /N
end for
62
4. Fouriertransformationen
Die Bestimmung der Koeffizienten des trigonometrischen Interpolationspolynoms im
vorangegangenen Abschnitt ist ein Sonderfall der in der Physik weit verbreiteten
Fouriertransformationen, wie im folgenden gezeigt wird. Da Fouriertransformationen
(FT) in vielen Anwendungen eine zentrale Rolle spielen, sollen hier nun das numerische Äquivalent zur analytischen FT, die diskrete Fouriertransformation (DFT),
sowie die Fast Fourier Transform (FFT), eine Version mit besserer Laufzeit, vorgestellt werden. Im Anschluss werden an einigen Beispielen aus verschiedenen Bereichen
der Physik ihre praktischen Anwendungsmöglichkeiten demonstriert.
4.1. Der Zusammenhang zwischen trigonometrischer
Interpolation und Fouriertransformationen
Die analytische Fouriertransformierte einer Funktion f (x) ist:
Z ∞
1
f (x)e−ikx dx.
F(k) =
2π −∞
Da im Abschnitt 3.4 vorausgesetzt wurde, dass die Funktion periodisch ist, und die
Funktion auf 2π-Periodizität transformiert wurde, sind alle relevanten Informationen
also bereits im Interval [0, 2π] enthalten und in allen weiteren “Zellen” der Länge 2π
ist eine Kopie dieser gespeichert. Da unendliche Grenzen in der Numerik kein Grund
zur Freude sind, liegt es nahe, das Integrationsintervall auf [0, 2π] einzuschränken.
1
→ F(k) =
2π
Z
2π
f (x)e−ikx dx.
0
Aufgrund der Periodizät von f enthält F immer noch alle Informationen, die die eigentliche FT geliefert hätte, allerdings bezogen auf die Zelle im Fourier-Raum, die zur
betrachteten Zelle im ursprünglichen Raum gehört. Durch Translation in eine andere
63
4. Fouriertransformationen
Zelle im Fourier-Raum lässt sich daraus aber wieder die komplette Fouriertransformierte gewinnen. Um dieses Problem nun numerisch lösen zu können, kann man f
auf ein diskretes Gitter abbilden und für ein gegebenes k den Funktionswert mittels
Riemann-Summen bestimmen.
4
diskretisierte Funktion
3
2
2
1
1
f(x)
f(x)
4
Ausgangsfunktion
3
0
0
-1
-1
-2
-2
-3
-3
-4
-4
0
1
2
x in π
(a)
0
1
x in π
2
(b)
Abbildung 4.1.: Fouriertransformation am Beispiel der trigonometrischen Interpolation: 4.1a zeigt
die periodische Ausgangsfunktion im Intervall [0, 2π], die für numerische Zwecke
auf ein diskretes Gitter, wie in 4.1b gezeigt, reduziert wird, deren Integral für ein
gegebenes k dann mit Riemann-Summen bestimmt wird.
Um F numerisch darstellen zu können, wird ein Teilintervall des Fourierraums, der
der fouriertransformierten Zelle entspricht, ebenfalls diskretisiert und für jeden kGitterpunkt der Funktionswert bestimmt, womit sich für die Fouriertransformierte
die bei der trigonometrischen Interpolation verwendete Form ergibt.
4.2. Algorithmik der Fouriertransformation
Bevor wir uns den Algorithmen zur möglichst effizienten Berechnung der Fouriertransformierten zuwenden, wollen wir zuerst noch die diskrete Fouriertransformation
eindeutig definieren.
Definition 4.1 (Diskrete Fouriertransformation)
Die Abbildung F : CN → CN wird diskrete Fouriertransformation genannt, wenn sie
die Funktionswerte einer Menge an äquidistanten Stützstellen auf die sogenannten
“Fourierkoeffizienten” gemäß 4.1 abbildet.

 

f0
β0

 

N −1
 f 1   β1 
1 X




F . = . 
βk =
fj · e−2πijk/N
(4.1)
.
.
N
 .   . 
j=0
fN −1
64
βN −1
4.2. Algorithmik der Fouriertransformation
Die Umkehrfunktion F −1 heißt auch inverse Fouriertransformation und entspricht
der Berechnung der Stützwerte anhand der Fourierkoeffizienten.
 


β0
f0

 

N
−1
N
−1
X
X




β
f
1
1
−1 
ijxk



F  . = . 
fk =
=
βj e
βj · e2πijk/N
.
.
.
.

 

j=0
j=0
βN −1
fN −1
4.2.1. Diskrete Fourier-Transformation
Die naheliegende und einfachste Variante ist die direkte Berechnung der Koeffizienten,
wie in der Definition angegeben.
Algorithmus 4.1 (Diskrete Fouriertransformation)
Gegeben seien N Stützstellen xk = 2kπ/N k = 0, 1 . . . N − 1 und ihre dazugehörigen
Funktionswerte yk ∈ C. Die diskrete Fouriertransformation dieser Funktion ergibt
sich aus:
for m = 0, 1 . . . N − 1 do
ωm = eixm
end for
for m = 0, 1 . . . N − 1 do
PN −1
yk ωk−m /N
bm = k=0
end for
Diese Variante lässt sich zwar einfach implementieren, aber die Laufzeit dieser simplen
Implementierung ist auch dementsprechend weit jenseits des Optimums und skaliert
besonders für große Datensätze schlecht. Eine kurze Betrachtung der Implementierung
zeigt, dass für jeden Koeffizienten eine linear14 mit der Gesamtzahl an Datenpunkten skalierende Anzahl an Operationen durchgeführt werden muss. Da die Anzahl
der zu berechnenden Fourier-Koeffizienten aber ebenfalls linear von der Anzahl der
Datenpunkte abhängt, skaliert die Gesamtlaufzeit folglich mit N 2 . Dies mag jetzt
nicht so schlimm klingen, wenn man die NP-Probleme der Informatik im Hinterkopf
hat. Wenn man jedoch überlegt, was dies beispielsweise für einen Datensatz mit 107
Einträgen (in etwa 10MB) bedeutet, schwindet dieser Eindruck schnell. (107 )2 = 1014
14
Der nicht konstante Zeitaufwand der Exponentialfunktion als iteratives Verfahren (bspw. über
eine Taylorentwickling bis ein Konvergenzkriterium erreicht ist) wird hier vernachlässigt.
65
4. Fouriertransformationen
Operationen, was für eine verfügbare CPU-Rechenkapazität von 10GHz eine Dauer
von etwas weniger als 3 Stunden bedeuten würde.
4.2.2. Fast Fourier Transform
Da die diskrete Fourier-Transformation nicht so skaliert, wie man es sich wünscht, liegt
es nahe nach alternativen Verfahren zur Berechnung der Fourierkoeffizienten, die die
Problemstruktur besser nutzen, zu suchen. Die Lösung ist die Fast Fourier Transform,
die eine Laufzeit15 von N log N erzielt und damit wesentlich performanter arbeitet.
Das Beispiel aus dem vorherigen Abschnitt kriegt man so in etwa 10 Millisekunden
erledigt, da nur etwa 108 Operationen nötig sind.
Die Grundidee der FFT ist es durch geschickte Manipulation der Vorfaktoren (anfangs
die Funktionswerte) die Größe der Summen zu reduzieren und dabei die Form der
DFT zu erhalten. Durch den Erhalt der DFT-Form lässt sich das Ergebnis dann
mit einer Rekursion in mehreren Schritten weiter zu reduzieren, bis man schließlich
im Idealfall nach log N Schritten bei Summen angekommen ist, die nur noch einen
Term beinhalten. Die einfachste Variante der FFT, die im folgenden vorgestellt wird,
halbiert die Größe der Summen in jedem Schritt, funktioniert dafür aber auch nur
mit Datensätzen, deren Größe eine Potenz von 2 ist.
Satz 4.1 (Kontraktion der Fouriertransformation für 2n Stützstellen)
Eine diskrete Fouriertransformation für N = 2n Stützwerte lässt sich auf eine DFT
mit 2n−1 Stützwerten zurückführen. Diese “Kontraktion” ist für alle Fourierkoeffizienten identisch und muss demzufolge nur einmal durchgeführt werden. Diese reduzierte
Darstellung lässt sich mit demselben Verfahren im Anschluss abermals zusammenfassen, bis die letzte DFT nach log N Schritten nur noch einen Term in den Summen
hat.
1
Beweis. Sei εN := e−2πi N und M :=
N
.
2
βj =
N −1
1 X
fk · εkj
N
N k=0
Für gerade j := 2h lässt sich nun folgende Umformung durchführen:
N βj = N β2h =
N
−1
X
fk · ε2hk
N
k=0
15
Da es sich um Laufzeitabschätzungen handelt, spielt die Basis des Logarithmus keine Rolle, weil
verschiedene Basen mit einem Vorfaktor ineinander umgerechnet werden können und nur das
allgemeine asymptotische Verhalten interessiert.
66
4.2. Algorithmik der Fouriertransformation
=
=
−2πi
ε2M
=1⇒
N = e
ε2N = εN/2 = εM ⇒
=
=
M
−1
X
k=0
M
−1
X
fk · ε2hk
N +
fk · ε2hk
N +
k=0
M
−1
X
2M
−1
X
k=M
M
−1
X
fk · ε2hk
N
2h(k+M )
fk+M · εN
k=0
(fk + fk+M ) · ε2hk
N
k=0
M
−1
X
(fk + fk+M ) · εhk
M
k=0
Mit der Definition f˜k := fk + fk+M ergibt sich dann:
N β2h =
M
−1
X
f˜k · εhk
M
(4.2)
k=0
Für ungerade j := 2h + 1 erhält man durch die selben Umformungen:
N β2h+1 =
M
−1
X
f¯k · εhk
M
(4.3)
k=0
f¯k = (fk − fk+M ) · εkN
(4.4)
Die neuen Summen haben beide nur halb so viele Terme (und damit ist die Zahl der
Stützstellen wieder eine Zweierpotenz), haben ebenfalls die Gestalt einer DFT und
die Vorfaktoren hängen nicht von j bzw. h ab. Man braucht die f˜ und f¯ also nur
einmal zu bestimmen. Da das Ergebnis wieder die Gestalt einer DFT hat, kann man
in einem weiteren Schritt die Summen auf dieselbe Weise weiter zusammenfassen.
Für die Implementierung der FFT ist es vorteilhaft ein paar Hilfsvariablen zu verwenden.
M := 2m−1
Anzahl Summanden in jeder Summe am Ende des Schrittes
R := 2n−m
Anzahl der Summen zu Beginn des aktuellen Schrittes
m = n, n − 1 . . . 0
Index für den Kontraktionsschritt, m = 0 ist der letzte
Um die Übersicht innerhalb der einzelnen Teilsummen zu bewahren, werden außerdem
noch zwei weitere Hilfsvariablen eingeführt: r gibt die aktuelle Summe an und k
identifiziert zu welchem Summand aus dieser der Vorfaktor gehört.
r := 0, 1, . . . R − 1 = 0, 1, . . . 2n−m − 1
67
4. Fouriertransformationen
k := 0, 1, . . . M − 1 = 0, 1, . . . 2m−1 − 1
Im jedem Schritt hat man nun R Summen mit je 2M Werten {fk }, die in je zwei
Mengen {fk + fk+M } und {(fk − fk+M )εkN } mit je M Elementen umsortiert werden
sollen. Führt man dies n-mal durch, erhält man so N Koeffizienten, aus denen sich
die βr direkt bestimmen lassen:
βr =
1 (0)
f
N r,0
Das Superskript gibt hier und im folgenden dabei den Rekursionschritt an, wobei, der
Definition von m folgend, absteigend gezählt wird. Beginnend mit den eigentlichen
Stützwerten ist die Rekursion wie folgt definiert:
(n)
f0,k = fk
(m−1)
fr,k
(m−1)
fr+R,k
(m)
(m)
= fr,k + fr,k+M
(m)
(m)
= fr,k − fr,k+M εk2M
Mit dieser Rekursionsformel lassen sich die βj zu Beginn jedes Zwischenschritts als
N βjR+r =
2M
−1
X
(m)
fr,k · εjk
2M
j = 0, 1, . . . 2M − 1
k=0
darstellen. Sobald der Index m den Wert 0 erreicht hat, ist R = N , M = 12 (formal)
und nur noch j = 0 möglich. Damit ist man fertig und die βj haben die oben angegebene Form.
Weitere Details zur Herleitung und ein kompletter Beweis finden sich in der weiterführenden Literatur[1, Seite 82].
Zur praktischen Implementierung verwendet man 2 Arrays der Länge N für kom(m)
plexe doubles16 , von denen einer die derzeitigen fr,k enthält und in dem anderen
(m−1)
die daraus berechneten fr,k
gespeichert werden. Hat man einen Rekursionsschritt
abgeschlossen, werden die Daten in dem ersten Array nicht länger benötigt und man
kann diesen benutzen um die Ergebnisse des nächsten Schrittes zu speichern.
Algorithmus 4.2 (FFT für 2n Stützstellen)
Gegeben seien 2n Stützstellen xk = 2kπ/2n k = 0, 1 . . . N − 1 und ihre dazugehörigen
Funktionswerte yk ∈ C. Die Fouriertransformierte βk lässt sich mit der Fast Fourier
Transform berechnen.
16
Wenn die nötigen Bibliotheken für komplexe Zahlen nicht zur Verfügung stehen, tun es natürlich
auch 4 Arrays mit normalen doubles.
68
4.3. Bedeutung der Fouriertransformation in der Numerik
for k = 0, 1 . . . 2n − 1 do
(n)
f0,k = yk
end for
for m = n, n − 1 . . . 1 do
m
ε2M = e−2πi/2
for r = 0, 1 . . . 2n−m − 1 do
for k = 0, 1 . . . 2m−1 − 1 do
(m−1)
(m)
(m)
fr,k
= fr,k + fr,k+M
(m−1)
(m)
(m)
fr+2n−m ,k = fr,k − fr,k+2m−1 εk2M
end for
end for
end for
for r = 0, 1 . . . 2n − 1 do
(0)
βr = fr,0 /2n
end for
4.3. Bedeutung der Fouriertransformation in der
Numerik
Die naheliegende Anwendung diskreter Fouriertransformationen ist dieselbe wie bei
der analytischen FT, also die Aufspaltung eines periodischen Signals in seine Frequenzbestandteile.
Beispiel 4.1. Im Abschnitt 4.1 wurde der Zusammenhang zwischen der Fouriertransformation und dem trigonometrischen Interpolationspolynom aus Abschnitt 3.4
dargestellt. Dieser soll nun anhand zweier konkreter Beispiele noch verdeutlicht werden.
T (x) =
M −1
A0 X
AM
+
(An cos(nx) + Bn sin(nx)) +
cos(M x)
2
2
n=1
Für eine Verteilung mit 1024 = 210 Stützstellen und ein monochromatisches Signal
f (x) = C2 sin(2x) ergeben sich für das Interpolationspolynom durch einen Koeffizien-
69
4. Fouriertransformationen
tenvergleich direkt die Koeffizienten.

C
2
Bk =
0
k=2
Ak = 0
k 6= 2
Für eine Überlagerung mehrerer Sinus-Schwingungen ergibt sich das Ergebnis völlig
analog.
f (x) = C2 sin(2x) + C100 sin(100x)
C2 = 1
Bk =
C100 = 0.2



k=2

C 2
C100



0
k 6= 2
1,5
1,5
f(x)
1
Bn von f(x)
1
Bn
0,5
f(x)
Ak = 0
k = 100
0
-0,5
0,5
-1
-1,5
0
0
2
4
x
6
8
10
0
20
40
n
60
80
100
Abbildung 4.2.: Zerlegung eines periodischen Signals in seine Komponenten: die linke Grafik zeigt
das Ausgangssignal, die rechte das Spektrum der Koeffizienten des Interpolationspolynoms
Für den Fall eines nur aus 2π-periodischen Sinus- und Kosinus-Funktionen bestehenden Signals besteht das Spektrum der Koeffizienten des Interpolationspolynoms aus
einigen sauberen Peaks, enthält das Ausgangssignal jedoch Anteile, die nicht über eine endliche Linearkombination von Sinus und Kosinus darstellbar sind, bspw. eine
Sägezahnfunktion, so verschmiert das Spektrum. Durch die Diskretisierung besteht
auch die Gefahr hochfrequente Anteile des Spektrums, deren Periodenlänge kleiner
als der Abstand zweier Gitterpunkte ist, zu verlieren. Hochfrequente Anteile, für die
der Abstand zweier Gitterpunkte ein Vielfaches der Periodenlänge ist, werden durch
das Gitter nicht abgebildet und gehen somit verloren. Hochfrequente Anteile, für die
der Gitterabstand kein Vielfaches der Periodenlänge ist, verschmieren hingegen über
mehrere Koeffizienten für Schwingungen niedrigerer Frequenz. Auch wenn es sich um
einen reinen Sinus handelt, weil dieser nicht exakt auf das Gitter abgebildet werden
kann und deswegen approximativ behandelt werden muss.
70
4.3. Bedeutung der Fouriertransformation in der Numerik
Die Fouriertransformation in dieser Variante wird in vielen Gebieten angewendet, beispielsweise bei der Analyse von Bild- und Musikdaten, Kompressionstechniken (bspw.
MP3) oder der spektralen Analyse von Meßdaten. Abseits dieser üblichen Anwendungen gibt es aber noch andere, “fremde” Möglichkeiten in der Computerphysik. Dies
soll im folgenden an zwei Beispielen aus der Elektrostatik und der Quantenmechanik
gezeigt werden.
Beispiel 4.2. Ein anderes Anwendungsbeispiel ist die Berechnung des Potentials einer Ladungsverteilung in der Elektrostatik.
Z
ρ(~r0 )
1
d~r0
V (r) =
0
4πε0
|~r − ~r |
Die naheliegendste numerische Lösungsmöglichkeit dieses Problems ist eine direkte
Integration. Da der Integrand aber für ~r0 → ~r einen Pol besitzt, ist dieser Ansatz
nicht empfehlenswert.
Eine andere Variante ist die Multipolentwicklung der Ladungsverteilung.
∞
X
1 0 ~ n 1
1
=
~r · ∇
|~r − ~r0 | n=0 n!
|~r|
Unter Verwendung dieser Taylorentwicklung für das Potential erhält man eine Reihenentwicklung für die Ladungsverteilung, die in der Regel recht schnell konvergiert.
!
~r ~rT Q~r
1
q d~
V (r) =
+
+
+ ...
4πε0 r r3
2r5
Z
q = ρ(~r0 )d~r0
Ladung
Z
d = ~r0 ρ(~r0 )d~r0
Dipolmoment
Z
Q = (3~r0~r0T − |~r0 |2 )ρ(~r0 )d~r0
Quadrupolmoment
Hierbei handelt es sich jedoch um eine Fernfeldnäherung und in der Praxis ist es
deswegen oft notwendig sehr hohe Multipolmomente auszurechnen um die nötigen
(relativen) Genauigkeiten zu erzielen. Aufgrund der hohen Ordnung in ~r0 sind diese
jedoch numerisch nur schwer integrierbar.
Neben diesen Ansätzen gibt es aber auch eine andere Möglichkeit das Problem zu
lösen und dabei die zuvor angesprochenen Probleme, die bei der Integration auftreten,
zu umgehen. Durch Anwendung der Fouriertransformation kann man das Problem
auch im Impulsraum betrachten und dort ist die Lösung der Poissiongleichung (deren Lösung die oben angegebene Formel für das Potential ja ist) deutlich einfacher.
71
4. Fouriertransformationen
Durch die Darstellung von Potential und Ladungsdichte in der Ortsdarstellung als
Fourier(rück)transformierte von Potential und Ladungsdichte im Impulsraum lässt
sich die Poissongleichung in eine einfache Form bringen.
ρ(~r)
∆V (~r) = −
Z ε0
~
ρ(~r) = e−ik~r ρ(~k)d~k
Z
~
V (~r) = e−ik~r V (~k)d~k
Die inversen Transformationen ergeben sich dann folglich als:
Z
1
~
~
ρ(k) =
eik~r ρ(~r)d~r
3
(2π)
Z
1
~
~
V (k) =
eik~r V (~r)d~r
3
(2π)
Das Einsetzen der Fourierdarstellungen in die Poissongleichung und Anwenden des
Laplace-Operators führt dann zu:
!
Z
~
~k)
eik~r
ρ(
−k 2 V (~k +
d~k = 0
(2π 3 )
ε0
Der Integrand ist die Fouriertransformierte der Nullfunktion (rechte Seite) und muss
folglich auch die Nullfunktion sein. Daraus folgt dann die Poisson-Gleichung17 in der
Impulsdarstellung:
ρ(~k)
k 2 V (~k) =
ε0
Die Lösung dieser Gleichung ist nun trivial und um das Potential V (~r) zu erhalten,
muss man das erhaltene Potential im Fourierraum nur zurücktransformieren.
"
#
~k)
F[ρ](
V (~r) = F −1
(~r)
ε0 k 2
Beispiel 4.3. Ein weiteres Beispiel für alternative Anwendungen von Fouriertransformationen in der Numerik ist die Lösung der zeitabhängigen Schrödingergleichung.
Für ein zeitunabhängiges Potential lässt sich die zeitabhängige Schrödingergleichung
17
In der Literatur wird oft ein Vorfaktor 4π auf der rechten Seite statt der elektrischen Feldkonstante
angegeben. Dabei handelt es sich um die Formulierung der Gleichung im “Gaußschen CGSEinheitensystem”, das in numerischen Simulationen oft verwendet wird.
72
4.3. Bedeutung der Fouriertransformation in der Numerik
mit Hilfe eines Produktansatzes in die stationäre Schrödingergleichung überführen,
die ein Eigenwert-Problem für den Hamilton-Operator darstellt.
∂
b r, t)
ψ(~r, t) = Hψ(~
∂t
2
b = − ~ ∆ + V (~r)
H
2m
−iEt/~
ψ(~r, t) = e
ϕ(~r)
b r) = Eϕ(~r)
⇒ Hϕ(~
i~
Ansatz:
Da der Hamilton-Operator ein hermitischer Operator ist, bilden seine EigenfunktioR
nen in Verbindung mit dem Skalarprodukt hχ| ηi = χ(~r)η(~r)d~r eine vollständige
(und orthogonale) Basis des Hilbertraums. Aufgrund dieser Eigenschaft kann man jeb
de Wellenfunktion immer als Linearkombination von den Eigenfunktionen ϕn von H
darstellen.
∞
X
ψ(~r, t) =
αn (t)ϕn (~r)
n=0
Diesen Ansatz kann man nun wieder in die zeitabhängige Schrödingergleichung einsetzen.
∞
∞
X
∂ X
b
αn (t)ϕn (~r) = H
αn (t)ϕn (~r)
i~
∂t n=0
n=0
⇒ i~
∞
X
α̇n (t)ϕn (~r) =
n=0
∞
X
En αn (t)ϕn (~r)
n=0
Berechnet man nun das Skalarprodukt mit einem hϕm |, erhält man unter Ausnutzung
der Orthonormalität der Eigenfunktionen (hϕm | ϕn i = δn,m ) eine Differentialgleichung für die Koeffizienten αn .
i~
∞
X
α̇n (t) hϕm | ϕn i (~r) =
n=0
∞
X
En αn (t) hϕm | ϕn i (~r)
n=0
⇒ i~α̇m (t) = Em αm (t)
⇒ αm (t) = αm (0)e−iEm t/~
Damit ergibt sich die allgemeine Lösung, dargestellt in der Basis der Eigenfunktionen
b als:
von H
ψ(~r.t) =
∞
X
αn e−iEn t/~ ϕn (~r)
n=0
73
4. Fouriertransformationen
Für den Spezialfall, dass nur ein αn (0) 6= 0 ist, bleibt das System also für alle Zeiten
im selben physikalischen Zustand und bekommt nur einen Phasenfaktor hinzu.
Für eine allgemeine Lösung kann man nun die Autokorrelationsfunktion C(t) und
deren Fouriertransformierte B(ω) bestimmen. Die Koeffizienten sind im Folgenden
als die Ausgangswerte zum Zeitpunkt 0 zu verstehen.
Z
C(t) = hψ(t)| ψ(0)i = ψ(~r, t)ψ(~r, 0)d~r
=
=
∞
X
n,m=0
∞
X
|αn |2 eiEn t/~
n=0
Z
∞
B(ω) =
=
αn αm eiEn t/~ hϕn | ϕm i
C(t)e−iωt dt
−∞
∞
X
2
Z
∞
ei(En /~−ω)t dt
|αn |
−∞
n=0
Da die Fouriertransformierte einer Konstante eine Delta-Funktion ist (“Fourieridentität der Deltafunktion”), lässt sich das Integral auch einfach ausrechnen.
B(ω) = 2π
∞
X
|αn |2 δ(En /~ − ω)
n=0
Stellt man B(ω), wie in Abbildung 4.3 gezeigt, graphisch dar, stellt man schnell
fest, dass B(ω) die spektrale Zerlegung des Zustandes ψ in die verschiedenen Eib darstellt. In der Praxis kann man die Fouriertransformation
genfunktionen von H
der Autokorrelationsfunktion auch als Fourier-Reihe dieser betrachten (mit unendlicher Periodizität T für C(t)). Alternativ dazu kann man T auch so wählen, dass
C(t > T /2) ≈ 0 gilt und die Funktion als T -periodisch betrachten. Berechnet man
das Integral nun mit Hilfe von Riemann-Summen an N = 2M + 1 Stützstellen
tk = T /2M · k, k = −M . . . 0 . . . M , erhält man dann:
Z ∞
B(ω) =
C(t)e−iωt dt
−∞
= lim
M →∞
= lim
M →∞
74
M
X
C(tk )eiωtk ∆t
k=−M
M
X
k=−M
C(tk )eiωkT /2M
T
2M
4.3. Bedeutung der Fouriertransformation in der Numerik
Wertet man dieses Fouriertransformierte nun für bestimmte Frequenzen ωj = 2πj
aus, hat die Summe genau die Form der diskreten Fouriertransformation. Setzt man
nun die C(tk ) explizit ein, erhält man einen Ausdruck, der der diskreten Version des
zuvor hergeleiteten entspricht:
B(ωj ) =
∞
X
|αn |2 · δ~ωj ,En
n=0
Folglich hat also auch die diskrete Fouriertransformation der Autokorrelationsfunk-
|αn|2
B(ω)
B(ωj)
|αn |2
E1
E2
E3
(a)
E4
E5
ℏω1
ℏω2
ℏω3
ℏω4
ℏω5
(b)
b mit Hilfe der
Abbildung 4.3.: spektrale Zerlegung einer Wellenfunktion in die Eigenzustände von H
Fouriertransformierten der Autokorrelationsfunktion, 4.3a stellt die das Ergebnis
einer analytischen Fouriertransformation dar, 4.3b das einer diskreten FT
tion bei den Eigenwerten der stationären Schrödingergleichung Peaks. Die Höhe der
Peaks entspricht auch in diesem Fall den Gewichten der einzelnen Eigenzustände.
In der Praxis ist es meist deutlich einfacher |ψ(t)i aus |ψ(0)i zu bestimmen als eine
b vorzunehmen.
echte Diagonalisierung von H
75
5. Numerische Integration
Die Berechnung von Integralen ist eine grundlegende Aufgabe in der numerischen
Physik, die an vielen Stellen Verwendung findet. Neben den offensichtlichen Anwendungen wird die numerische Integralrechnung aber beispielsweise auch eingesetzt um
Differentialgleichungen zu lösen. Durch Reformulierung einer Differentialgleichung als
Integralgleichung lässt sich diese mit Hilfe geeigneter Algorithmen und Integrationsverfahren lösen. Im Folgenden werden deswegen verschiedene Integrationsmethoden
vorgestellt, angefangen mit der Integration nach Newton/Cotes, die auf der Verwendung von Lagrange-Interpolationspolynomen basiert. Im Anschluss daran werden die
Gauß-Integration, die eine höhere Genauigkeit erreicht, und die Monte Carlo Integration, ein alternativer Ansatz auf stochastischer Basis, vorgestellt.
5.1. Quadratur nach Newton/Cotes
Für eine Funktion f , deren Funktionswerte fk zumindest an N + 1 Stützstellen
x0 . . . xN bekannt sind, kann man eine Approximation durch ein Interpolationspolynom pN (x), wie es in Teilabschnitt 3.1.1 vorgestellt wurde, als Grundlage für das
Integral verwenden.
Z b
Z b
f (x)dx ≈
pN (x)dx
a
pN (x) =
N
X
fi Li (x)
i=0
a
mit Li (x) =
N
Y
x − xj
xi − xj
j=0; j6=i
Durch die Verwendung äquidistant verteilter Stützstellen lassen sich aus dem Interpolationspolynom Integrationsformeln gewinnen, für die es nicht mehr notwendig ist
zuvor explizit zu interpolieren.
Stützpunkte
xk = x0 + kh
h=
xN − x0
N
77
5. Numerische Integration
f(x)
p(x)
y
Fehler
x
Abbildung 5.1.: Approximation des Integrals im Intervall [x0 , xN ] durch ein Interpolationspolynom
Hilfsvariable t
x = x0 + th
t=
→Li (x) := ϕi (t) =
x − x0
h
N
Y
t−j
i−j
j=0; j6=i
Verwendet man nun das Interpolationspolynom zur Approximation des Integrals und
substituiert x mit t, erhält man einen Ausdruck, der nur noch von den Stützwerten
und der Anzahl der Stützstellen abhängt, nicht aber mehr von den Positionen der
Stützstellen.
Z
xN
pN (x)dx =
x0
N
X
Z
Li (x)dx
x0
i=0
Substitution:
xN
fi
x = x0 + ht
⇒=h
N
X
t(x = xN ) = N
N
Z
fi
i=0
ϕi (t)dt
0
Aufgrund der Unabhängigkeit von x sind die Integrale also konstante, universelle
Gewichtungsfaktoren αi , die zu den sogenannten “Newton-Cotes-Formeln” führen:
Z
xN
pN (x)dx =
x0
N
X
f i αi
i=0
Für den einfachsten Fall zweier Stützstellen (N = 1) ergeben sich die Gewichtungsfaktoren als:
Z 1
t−1
1
=1−t
→ α0 =
ϕ0 (t)dt =
ϕ0 (t) =
0−1
2
0
78
5.1. Quadratur nach Newton/Cotes
t−0
=t
ϕ1 (t) =
1−0
1
Z
→ α1 =
ϕ1 (t)dt =
0
1
2
Die Approximation für das Integral ist dann folglich:
Z
x1
x1
Z
f (x)dx ≈
p1 (x)dx = h
1
X
x0
x0
i=0
1
1
αi f (xi ) = (x1 − x0 )( f (x0 ) + f (x1 ))
2
2
Das dazugehörige Interpolationspolynom ist dann
p1 (x) = f (x0 ) + (x − x0 )
f (xN ) − f (x0 )
xN − x0
was anschaulich der Approximation des Integrals durch ein Trapez entspricht, daher
auch der Name “Trapezregel” für diesen Fall.
y
f(x)
p1(x)
x0
x1
x
Abbildung 5.2.: Integration nach Newton-Cotes für N = 1, die “Trapezregel”
Beispiel 5.1. Die Trapezregel liefert sogar bessere Ergebnisse als man ihr auf den
ersten Blick zutrauen würde.
f (x) =
Z
1
f (x)dx
x=tan y
=
4
1 + x2
4 y|π/4
=π
0
0
Trapezregel:
f (x0 = 0) = 4
Z 1
⇒
f (x)dx ≈ 3
f (x1 = 1) = 2
0
Die nächsthöhere Ordnung (N = 2) ergibt die sogenannte “Simpson-Regel”.
Z 2
1
t−1 t−2
dt =
α0 =
3
0 0−10−2
79
5. Numerische Integration
2
4
t−0 t−2
dt =
1−01−2
3
Z0 2
t−0 t−1
1
α2 =
dt =
2−02−1
3
Z0 x2
Z x2
h
p2 (x)dx = (f0 + 4f1 + f2 )
f (x)dx ≈
3
x0
x0
Z
α1 =
Auf dieselbe Weise lassen sich auch Verfahren höherer Ordnung bestimmen, die in
der Literatur gefunden werden können.
Die Gewichte haben neben ihrer Universalität noch eine andere interessante EigenP
schaft: N
i=0 αi = N . Um dies zu zeigen, wählt man f (x) = 1, womit pN (x) = 1 das
Interpolationspolynom für alle N ist, und [0, 1] als Integrationsintervall.
Z
1
Z
f (x)dx =
0
0
1
N
1 X
αi = 1
pN (x)dx =
N i=0
⇒
N
X
αi = N
i=0
Der Fehler dieser Quadraturformeln ist ähnlich dem des zugrundeliegenden Interpolationspolynoms:
∀ n∃ m ∈ N ∧ m > n; k ∈ R; ξ ∈ [x0 , xN ] mit
Z xN
pN (x) − f (x)dx = hm+1 kf (m) (ξ)
x0
Auf einen Beweis wird an dieser Stelle verzichtet und nur darauf verwiesen, dass k
und m von N abhängen, nicht aber von f (x). Demzufolge werden auch alle Polynome
mit Grad < m exakt durch das dazugehörige Newton-Cotes-Verfahren integriert, da
die m-te Ableitung 0 ist.
N
1
2
4
αi
1 1
,
2 2
1 4 1
, ,
3 3 3
7 16 2 16 7
, , , ,
90 45 15 45 90
Fehler
h3 (2)
f (ξ)
12
h5 (4)
f (ξ)
90
8h7 (6)
f (ξ)
945
Tabelle 5.1.: Gewichte für einige Newton-Cotes-Verfahren und ihre Fehler
Für N > 6 werden die Newton-Cotes-Formeln numerisch instabil, da negative Gewichte auftreten, durch die kleine Änderungen in f (x) in der Summen-Approximation
deutlich mehr Einfluss haben als im echten Integral. Dies ist einer der Gründe dafür,
80
5.1. Quadratur nach Newton/Cotes
warum man in der Praxis keine Newton-Cotes-Quadraturformeln hoher Ordnung einsetzt. Stattdessen teilt man, analog zum Spline-Ansatz bei der Interpolation, das Integrationsintervall in mehrere Intervalle auf und wendet dann auf jedem Teilintervall
Newton-Cotes-Formeln mit niedriger Ordnung an (“summierte Quadraturformeln”).
Im einfachsten Fall N = 1 ergibt sich dann die M -fache Trapezformel:
b
Z
f (x)dx =
a
M
−1 Z a+(m+1) b−a
X
M
m=0
M
−1
X
≈δ
f (x)dx
a+m b−a
M
f (a + mδ) + f (a + (m + 1)δ)
2
m=0
f (b)
f (a)
+ f (a + δ) + f (a + 2δ) + . . . + f (b − δ) +
=δ
2
2
Alternativ dazu kann man natürlich auch die Simpson-Regel auf
N −1
2
Teilintervalle
f(x)
Teilintervalle für Simpsonregel
y
y
f(x)
p1(x) (gestückelt)
x
x
Abbildung 5.3.: summierte Quadratur mit Trapezregel (links) und Simpson-Regel (rechts)
[x2i , x2i+2 ] mit je 3 Stützstellen anwenden.
Z
b
M −1
δ X
f (a + mδ) + 4f (a + (m + 1)δ) + f (a + (m + 1)δ)
3 m=0
δ
=
f (a) + 4f (a + δ) + 2f (a + 2δ)+
3
4f (a + 3δ) + . . . + f (b − 2δ) + 4f (b − δ) + f (b)
f (x)dx ≈
a
Der Vorteil bei zweiterer Variante liegt darin, dass der numerische Fehler aus der
Integration im allgemeinen geringer sein wird, da dieser hier mit δ 4 statt wie bei der
Trapezregel δ 2 skaliert (siehe Tabelle 5.1).
Algorithmus 5.1 (Summierte Quadratur)
Gegeben sei eine Funktion f (x), die durch n-fache Anwendung der Newton-CotesFormeln der Ordnung m im Intervall (a, b) integriert werden soll. Mit den Gewichten
81
5. Numerische Integration
αi , die sich in der Literatur finden lassen (oder in Tabelle 5.1) ergibt sich das bestimmte Integral I aus dem folgenden Algorithmus:
h = (b − a)/(m · n)
I=0
for i = 0, 1 . . . n − 1 do
for j = 0, 1 . . . m do
I = I + αj f (a + [i · m + j] · h)
end for
end for
I =I ·h
Beispiel 5.2.
Z
1
π=
0
Für den Fehler π − h
P P
m
N
1
2
4
i
4
dx
1 + x2
fi αi ergibt sich dann exemplarisch:
Trapezregel
0.1416
0.0416
0.0104
Simpson-Regel
N ≥ 2 nötig
0.00826
0.00002
Eine weitere Verbesserungsmöglichkeit für die Ergebnisse der Quadraturformeln ist
die Verwendung von Hermite-Polynomen anstelle von Lagrange-Polynomen zur Interpolation, sofern die erste Ableitung von f (x) bekannt ist. Hierzu sei auf weiterführende
Literatur verwiesen.
5.2. Integration nach Gauß
Summierte Quadraturen liefern für hinreichend glatte Funktionen gute Ergebnisse,
bei stark oszillierenden Funktionen hängt die Qualität der Ergebnisse hingegen sehr
stark davon ab, wie gut die Stützstellen die Oszillationen abbilden. Für die akkurate
Integration derartiger Funktionen ist es notwendig Verfahren zu haben, die Polynome möglichst hohen Grades exakt integrieren können. Um dieses Ziel zu erreichen,
82
5.2. Integration nach Gauß
kann man die Gauß-Integration verwenden, bei der mit N Stützstellen Polynome mit
Grad bis zu 2N − 1 exakt integriert werden können. Um dieses Ziel zu erreichen,
konstruiert man zuerst eine orthogonale Basis für eine Teilmenge des Polynomrings
mit einem gegebenen Skalarprodukt. Durch die Wahl der Nullstellen dieser Polynome
als Stützstellen für die Integration ist es dann möglich die gewünschte Genauigkeit
zu erzielen.
Hierzu werden allgemeine Integrale der Form
Z
b
ω(x)f (x)dx
I[f ] =
a
betrachtet, wobei ω(x) eine Gewichtsfunktion darstellt, die folgende Eigenschaften
erfüllt:
ω(x) ≥ 0 ∀ x ∈ [a, b]
Z b
µk :=
xk ω(x)dx < ∞ ∀k ∈ N
(5.1a)
(5.1b)
a
µ0 > 0
(5.1c)
Die Integrationsgrenzen a und b müssen hierbei nicht zwangsläufig endlich sein, solange die Gewichtungsfunktion sicherstellt, dass das Integral für alle Monome konvergent bleibt (Gleichung 5.1b). Gesucht sind nun Integrationsregeln der Gestalt
PN
I[f ] ≈ I˜[f ] :=
i=1 ωi f (xi ). Allerdings sollen die Stützstellen nicht mehr wie bei
Newton-Cotes äquidistant sein, sondern so gewählt werden, dass mit passenden Gewichten ωi für Polynome möglichst hohen Grades I[f ] = I˜[f ] gilt.
Im Folgenden wird die Teilmenge Πj des Polynomrings, die alle Polynome vom Grad
≤ j enthält, betrachtet, für die eine orthogonale Basis bezüglich des Skalarprodukts
hf | gi gesucht ist. Um die Eindeutigkeit dieser Basis zu gewährleisten wird die Suche
auf die Teilmenge der normierten Polynome aus Π̃j beschränkt.
)
Πj = p(x) =
ak x k ak ∈ R
k=0
(
)
j
X
Π̃j = p(x) =
ak x k ak = j ; ak ∈ R
k=0
Z b
hf | gi =
ω(x)f (x)g(x) dx
(
j
X
a
83
5. Numerische Integration
Satz 5.1 (Existenz & Eindeutigkeit von Orthogonalbasen für Polynome)
Für Πj gibt es einen eindeutig bestimmten Satz an normierten Polynomen pi aus
der Teilmenge Π̃j , die orthogonal zueinander bezüglich des Skalarprodukts hf | gi sind
(hpi | pk i = 0 ∀k 6= i). Diese sind dann rekursiv bestimmt durch:
p0 (x) = 1
2
pi+1 = (x − λi+1 )pi (x) − γi+1
pi−1 (x)
λi+1 =
2
=
γi+1
hxpi | pi i
hp | p i
i i
 hpi | pi i
i≥1
0
i=0
hpi−1 | pi−1 i
Beweis. Der Beweis erfolgt über Induktion. Der Induktionsanfang für i = 0 ist trivial,
da keine Polynome geringeren Grades existieren (formal wäre p−1 = 0, womit die
Orthogonalität auch erfüllt ist).
Für den Fall i ≥ 1 nimmt man an, dass die Behauptung für einen Satz Polynome
pj (x) für alle j ≤ i erfüllt ist.
zu zeigen: ∃ pi+1 (x) ∈ Π̃i+1 : hpi+1 | pj i = 0 ∀ j ≤ i
Jedes Polynom aus Π̃j kann auch dargestellt werden als
i−1
X
pi+1 (x) = (x − ci )pi (x) +
cj pj (x)
j=0
wie man leicht über einen Koeffizientenvergleich unter Berücksichtigung der Normierung verifizieren kann. Mit dieser Darstellung kann man das Skalarprodukt mit dem
vorherigen Polynom unter Verwendung der Orthogonalität für die pj (x) dann leicht
ausrechnen:
+
*
i−1
X
hpi+1 | pi i = (x − ci )pi (x) +
cj pj (x) pi
j=0
!
= hxpi | pi i − ci hpi | pi i = 0
i | pi i
Wählt man ci = hxp
= λi , ist die Orthogonalitätsbedingung erfüllt.
hpi | pi i
Für die restlichen Koeffizienten betrachtet man nun das Skalarprodukt mit den noch
verbleibenden pj (x) mit j < i und verwendet wieder die bekannten Orthogonalitäten
aus der Induktionsvorraussetzung.
+
*
i−1
X
hpi+1 | pk i = (x − ci )pi (x) +
cj pj (x) pk
j=0
84
5.2. Integration nach Gauß
= h(x − ci )pi (x)| pk i +
* i−1
X
j=0
+
cj pj (x) pk
= hxpi | pk i + ck hpk | pk i
= hpi | xpk i + ck hpk | pk i
Da nun k < i gilt, kann man xpk über die geltende Rekursionsvorschrift ausdrücken.
2
pk−1 (x)
pk+1 (x) = (x − λk+1 )pk (x) − γk+1
2
⇒ xpk (x) = pk+1 (x) + λk+1 pk (x) + γk+1
pk−1 (x)
Setzt man dies nun in den zuvor erhaltenen Ausdruck für Skalarprodukt mit pk ein,
so erhält man:
2
= pi pk+1 + λk+1 pk + γk+1
pk−1 + ck hpk | pk i
= hpi | pk+1 i + ck hpk | pk i
i
Wählt man nun ck = − hphpi |kp|k+1
, ist die Orthogonalität auch zu pk erfüllt. Durch die
pk i
Wahl aller ck nach den angegebenen Formeln erhält man nun ein eindeutiges Polynom
vom Grad j + 1. Berücksichtigt man noch die vorhandenen Orthogonalitäten, sieht
2
ist, womit die Rekursionsformel
man, dass die ck = 0 für k < i − 1 und ci−1 = −γi+1
bewiesen ist.
Hierbei ist zu beachten, dass die Menge der pj natürlich von dem gewählten Skalarprodukt abhängt, für ein bestimmtes Skalarprodukt aufgrund der Normierung des
Leitkoeffizienten aber eindeutig ist. Aus dieser Konstruktion ergibt sich dann auch
gleich eine weitere Orthogonalitätsrelation zwischen den pj und beliebigen Polynomen
geringeren Grades, die für die Gauß-Integration eine entscheidene Rolle spielt.
Satz 5.2 (weitere Orthogonalitäten der Orthogonalbasis für Polynome)
Für die Polynome pn (x) gemäß Satz 5.1 gilt für alle Polynome q(x) vom Grad m die
Orthogonalitätsrelation:
hq| pn i = 0 ∀ m < n
Beweis. Zum Beweis dieser Behauptung wird nun die bereits angedeutete Eigenschaft
benötigt, dass die p0 bis pj eine Basis von Πj sind.
q(x) =
m
X
k=0
αk x
k
pk (x) =
k
X
γs(k) xs
s=0
85
5. Numerische Integration
Sofern die p0 bis pj nun eine Basis von Πj sind, kann man q(x) auch als Linearkombination dieser schreiben. Dass dies immer möglich ist, soll nun gezeigt werden, indem
die Behauptung als wahr angenommen wird und dann gezeigt, dass es eine eindeutige,
immer lösbare Darstellung gibt.
!
q(x) =
=
m
X
k=0
m
X
ck pk (x)
ck
k
X
γs(k) xs
s=0
k=0
Schaut man sich genauer an, wie die Koeffizienten zu den einzelnen Potenzen von
x beitragen, sieht man schnell, dass diese Darstellung ein lineares Gleichungssystem
mit einer unteren Dreiecksmatrix ist.
m
X
ck
k=0









(0)
γ0
(1)
γ0
(2)
γ0
..
.
(m)
γ0
0
(1)
γ1
...
...
s=0
...
. . . γm
γ3

0
..
.
..
.
..
.
(m)
(m)
=
m
X
α k xk
k=0
..
γ1
..
.
γ1
γs(k) xs
(2)
(2)
γ1
k
X
.
(m)








c0
c1
c2
..
.
cm


 
 
 
=
 
 
 
α0
α1
α2
..
.








αm
Dieses lässt sich immer eindeutig lösen und q(x) kann wie behauptet als Linearkombination der p0 bis pj dargestellt werden. Daraus folgt dann
hq| pn i =
m
X
ck hpk | pn i
k=0
=0
weil k < n nach Vorraussetzung ist.
Da bereits angesprochen wurde, dass den Nullstellen dieser Polynome eine besondere
Bedeutung zukommt, sollen nun ein paar Eigenschaften dieser gezeigt werden.
Satz 5.3 (Eigenschaften der Nullstellen der Orthogonalbasis-Polynome)
Alle Nullstellen xi (i = 1 . . . n) von pn sind reell, einfach und liegen in dem offenen
Intervall ]a, b[.
Beweis. Der Beweis erfolgt durch Widerspruch. Hierzu sei angenommen, dass a <
x1 < x2 < . . . < xl < b die Nullstellen des Polynoms sind, die reell sind, in dem
86
5.2. Integration nach Gauß
Intervall ]a, b[ liegen und eine ungerade (nicht unbedingt einfache) Vielfachheit haben.
Außerdem ist l < n, damit mindestens eine Nullstelle die Bedingungen nicht erfüllt.
q(x) :=
l
Y
(x − xj )
vom Grad l < n
j=1
⇒ hq| pn i
Satz 5.2
=
0
Da alle xj ungerade Nullstellen sind, ändern sowohl q(x) als auch pn (x) ihre Vorzeichen
an dieser Stelle, womit sich das Vorzeichen des Produkts nicht ändert, und aufgrund
der positiven Semidefinitheit der Gewichtungsfunktion (Gleichung 5.1a) auch das
Vorzeichen des Integrandem im Skalarprodukt. Da alle weiteren Nullstellen von pn (x)
entweder außerhalb des Integrationsintervalls liegen oder eine gerade Vielfachheit
haben und damit keinen Einfluss auf das Vorzeichen von q(x) · pn (x) im Intervall
haben, muss also gelten:
hq| pn i =
6 0
Da dies jedoch ein Widerspruch zu Satz 5.2 ist, muss demzufolge l ≥ n gelten. Damit
die Konstruktion von q(x) gültig bleibt muss jedoch jede Nullstelle einfach sein, da
sonst die Zahl der Nullstellen höher wäre als der Grad des Polynoms.
Bevor mit Hilfe dieser Polynome nun ein Integrationsschema konstruiert werden kann,
wird noch ein weiterer Satz über ihre Eigenschaften benötigt.
Satz 5.4 (Regularität von Matrizen mit den Orthogonalbasis-Polynomen)
Für beliebige, aufsteigend geordnete, paarweise verschiedene ti ∈ R ist die n × nMatrix


p0 (t1 )
p0 (t2 ) . . . p0 (tn )


 p1 (t1 )
p1 (t2 ) . . . p1 (tn ) 


A := 
..
..
..
..

.
.
.
.


pn−1 (t1 ) pn−1 (t2 ) . . . pn−1 (tn )
immer regulär.
Beweis. Angenommen, es gäbe ein ~c ∈ Rn mit ~cT A = 0, dann gilt:
~cT A m = ~cT · (Spalte m von A)
=
n−1
X
ci pi (tm ) = 0 ∀m
i=0
87
5. Numerische Integration
P
Daraus folgt, dass das Polynom q(x) = n−1
i=0 ci pi (x) die n Nullstellen ti hat. Dies
ist aber ein Widerspruch, da die pi (x) maximal vom Grad n − 1 sind und q(x) demzufolge keine n Nullstellen haben kann. Demzufolge kann ein ~c, dass die Singularitätsbedingung erfüllt, nicht existieren, woraus folgt, das A regulär ist.
Nun sind alle Vorraussetzungen erfüllt um endlich die Gauß-Integration zu konstruieren und zu beweisen.
Satz 5.5 (Eigenschaften der Gauß-Integration)
Seien {xi } i = 1 . . . n die Nullstellen von pn für ein gegebenes n, dann gilt:
1. Das LGS






p0 (x1 )
p1 (x1 )
..
.
p0 (x2 )
p1 (x2 )
..
.
...
...
...
p0 (xn )
p1 (xn )
..
.






pn−1 (x1 ) pn−1 (x2 ) . . . pn−1 (xn )
ω1
ω2
..
.


 
 
=
 
 
ωn
hp0 | p0 i
0
..
.






0
für die {ωi } ist immer eindeutig lösbar.
2. wi > 0
Rb
P
3. a ω(x)p(x)dx = ni=1 wi p(xi ) (Gauß-Integrationsformel) für beliebige Polynome vom Grad ≤ 2n − 1
4. Es gibt keine {xi , ωi } i = 1 . . . n für die alle Polynome vom Grad 2n mit der
Gauß-Integrationsformel exakt integriert werden können.
Beweis. Behauptung 1 folgt direkt aus den zuvor bewiesenen Sätzen. Aus Satz 5.3
folgt, dass die xi alle verschieden sind und mit Satz 5.4 folgt dann sofort die Invertierbarkeit der Matrix und damit die eindeutige Lösbarkeit des LGS.
Um die 3te Behauptung zu zeigen, drückt man ein Polynom p(x) vom Grade ≤ 2n−1
mittels der pk (x) aus:
p(x) = pn (x) · q(x) + v(x)
q(x) =
n−1
X
k=0
αk pk (x)
v(x) =
n−1
X
βk pk (x)
(5.2)
k=0
Dass diese Darstellung von p(x) immer möglich ist, kann man über einen Koeffizientenvergleich leicht verifizieren, die Darstellung von q(x) und v(x) wurde bereits
in einem der vorangegangenen Beweise diskutiert. Mit dieser Darstellung ist es nun
88
5.2. Integration nach Gauß
möglich das Ergebnis sowohl der analytischen als auch der numerischen Integration
zu bestimmen.
Z b
Z b
ω(x) (pn (x) · q(x) + v(x)p0 (x)) dx
ω(x)p(x)dx =
a
a
= hpn | qi + hv| p0 i
5.2
=
n−1
X
(αk hpn | pk i + βk hpk | p0 i)
k=0
= β0 hp0 | p0 i
(5.3)
Für das numerische Schema ergibt sich dann, unter Berücksichtigung der Tatsache,
dass die Stützpunkte xi die Nullstellen von pn (x) sind:
n
X
ωi p(xi ) =
i=1
=
n
X
i=1
n
X
ωi (pn (x) · q(x) + v(x)p0 (x))
ωi v(xi )
i=1
n X
n−1
X
5.2
βk ωi pk (xi )
=
i=1 k=0
= β0 hp0 | p0 i
(5.4)
Der letzte Schritt ergibt sich aus einem Vergleich der Struktur der Summe über i mit
dem LGS aus Behauptung 1, woraus erkennbar ist, dass diese für k 6= 0 verschwindet.
Damit sind das analytische Integral (Gleichung 5.3) und der numerische Ausdruck
(Gleichung 5.4) also für alle Polynome vom Grad ≤ 2n − 1 also identisch, was einer
exakten Integration entspricht.
Um die Behauptung 2 zu zeigen, definiert man einen neuen Satz Hilfspolynome ti (x):
ti =
n
Y
(x − xj )2
j=1; j6=i
Aufgrund der Positivität der Gewichtungsfunktion, sowie die Semi-Positiv-Definitheit
von ti (x), muss das Integral von ti (x) also größer als 0 sein. Setzt man dieses Polynom vom Grad 2n − 2 nun als p(x) in die im Beweis für Behauptung 3 gewonnenen
Ausdrücke für das Integral ein, erhält man eine Aussage über das Vorzeichen von ωi :
Z
0<
b
ω(x)ti (x)dx =
a
n
X
ωk ti (xk )
k=1
89
5. Numerische Integration
= ωi ti (xi ) > 0
Aufgrund der Konstruktion der ti (x) fallen alle anderen Beiträge der Summe weg, weil
sie an Nullstellen der Funktion ausgewertet werden, und aus dem übrig bleibenden
Term lässt sich die Positiv-Definitheit von ωi erkennen.
Für Behauptung 4 schließlich führt man einen Beweis durch ein Gegenbeispiel.
n
Y
t(x) =
(x − xj )2
j=1
Setzt man dieses Polynom in die Integrationsformeln aus den vorherigen Teilbeweisen
ein, erhält man für beliebige {ωi } immer 0 als Wert des Integrals, da alle Nullstellen
von pn (x) auch Nullstellen von t(x) sind. Andererseits lässt sich aus der Definition
von t(x) aber erkennen, dass das Integral echt größer 0 sein muss, womit ein für jedes
n ein Polynom vom Grade 2n existiert, dass nicht exakt integriert werden kann.
Algorithmus 5.2 (Gauß-Integration mit Legendre-Polynomen)
Gegeben sei eine Funktion f (x), deren Integral im Intervall (a, b) mittels GaußIntegration n-ten Grades bestimmt werden soll. Mit den bekannten Nullstellen xi und
Gewichten ωi der Legendre-Polynome ergibt sich das bestimmte Integral I aus dem
folgenden Algorithmus.
I=0
for i = 0, 1 . . . n − 1 do
I = I + ωi f (a + (xi + 1) · (b − a)/2)
end for
I = I · (b − a)/2
Vergleicht man nun die Quadratur nach Newton-Cotes mit der Gauß-Integration,
sieht man, dass beide Verfahren ihre Vor- und Nachteile haben. Gauß-Integrationen
bieten eine deutlich höhere Genauigkeit, allerdings sind die Gewichtungsfaktoren und
Stützstellen auch entsprechend aufwendiger zu bestimmen. Die Stützstellen sind nur
numerisch bekannt und insbesondere nicht regelmäßig angeordnet.
90
5.3. Monte Carlo Integration
Beispiel 5.3. In der folgenden Tabelle sind die häufiger verwendeten OrthogonalPolynome aufgelistet, mit denen sich die allermeisten relevanten Intervalle mithilfe
von Transformationen abdecken lassen. (Auf die Normierung der Leitkoeffizienten
wurde bei den Beispielen verzichtet.)
ω(x)
[a, b]
[−1, 1]
√ 1
1−x2
Polynome
Tschebyscheff-Polynome
[−1, 1]
1
Legendre-Polynome
[0, ∞]
e−x
Laguerre-Polynome
[−∞, ∞]
e−x
2
Hermite-Polynome
pn (x)
T1 (x) = x
T2 (x) = 2x2 − 1
T3 (x) = 4x3
P1 (x) = x
P2 (x) = 21 (3x2 − 1)
P3 (x) = 21 (5x3 − 3x)
L1 (x) = −x + 1
L2 (x) = 12 (x2 − 4x + 2)
P3 (x) = 16 (−x3 + 9x2 − 18x + 6)
H1 (x) = 2x
P2 (x) = 4x2 − 2
P3 (x) = 8x3 − 12x
Tabelle 5.2.: einige übliche Orthogonalpolynome, p0 (x) = 1 in allen Fällen
5.3. Monte Carlo Integration
Die bisher vorgestellten Methoden zur numerischen Integralrechnung basieren auf der
Interpolation des Integranden durch Polynome. Die Monte Carlo Integration hingegen
ist ein alternativer Ansatz, der auf einer statistischen Interpretation des Integrals
basiert. Es gilt
Z b
I=
f (x)dx = (b − a) · f
(5.5)
a
gemäß der Definition eines Integrals, wobei f¯ der Mittelwert der Funktion auf dem
Intervall [a, b] ist. Weiterhin gilt für eine Menge {xi ∈ [a, b]} von N unabhängigen,
gleichverteilten Zufallszahlen
N
1 X
I
lim
f (xi ) = f =
N →∞ N
b−a
i=1
(5.6)
91
5. Numerische Integration
nach dem Gesetz der großen Zahlen. Hierbei ist es wichtig zu beachten, dass die
Konvergenz von Gleichung 5.5 für Regelfunktionen18 im analytischen Kontext garantiert ist. Gleichung 5.6 hingegen ist eine Aussage statistischer Natur und daher nur
als Wahrscheinlichkeitsaussage für die Konvergenz zu verstehen. Da in der Anwendung aber nur endliche N realisierbar sind, stellt sich die Frage, wie sich der Fehler
verhält, wenn man I über Gleichung 5.6 unter Verwendung von N Stichproben bestimmt. Hierzu betrachtet man die Varianz der Differenz zwischen dem Ergebnis der
Monte Carlo Integration und dem echten Integral. Im folgenden sind f = hf (x)i
und f 2 = hf 2 (x)i der Mittelwert beziehungsweise die Varianz des Integranden. Die
Varianzen sind hier exakte, analytische Werte, die sich unter Berücksichtigung aller
möglichen Realisierungen von N unabhängigen, gleichverteilten Zufallszahlen xi im
Intervall [a, b] ergeben.
!2 + *
!2
+
*
N
N
N
b−aX
b−aX
b−aX
f (xi ) − I
f (xi ) − 2I
f (xi ) + I 2
=
N i=1
N i=1
N i=1
* N
!2 +
N
X
Linearität der Varianz
(b − a)2
b−aX
⇒=
− 2I
f (xi )
hf (xi )i + I 2
N2
N
und der Summe
i=1
i=1
* N
!2 +
X
(b − a)2
2
2
I = (b − a)f ⇒ =
f (xi )
− 2(b − a)2 f + (b − a)2 f
N2
 i=1

!2 +
2 * X
N
b−a 
2
=
f (xi )
− N 2f 
(5.7)
N
i=1
Nun ist es also noch notwendig einen Ausdruck für die noch übriggebliebene Varianz
zu finden.
* N
!2 + * N
+
X
X
f (xi )
=
f (xi )f (xj )
i=1
i=1,j=1
=
N
X
N
X
hf (xi )f (xj )i
f 2 (xi ) +
i=1
i,j=1;i6=j
Weil die beiden Verteilungen xi und xj in der zweiten Summe unabhängig voneinander
sind, kann man die Varianz der beiden Faktoren seperat bestimmen.
=
N
X
i=1
18
f2
+2
N X
N
X
hf (xi )i hf (xj )i
i=1 j=i+1
Als Regelfunktionen bezeichnet man Funktionen, die entweder stetig sind oder nur solche Sprungstellen haben, bei denen die Differenz zwischen linksseitigem und rechtsseitigem Grenzwert endlich ist.
92
5.3. Monte Carlo Integration
= Nf2 + 2
N X
N
X
f ·f
i=1 j=i+1
=
Nf2
+2
N
X
(N − i)f
i=1
2 2
= Nf2 + N f − Nf
2
2
(5.8)
Setzt man nun Gleichung 5.8 in Gleichung 5.7 ein, ergibt sich die Varianz der Monte
Carlo Integration:
*
!2 +
N
b−aX
(b − a)2 2
2
2
f (xi ) − I
=
f − f = σM
C
N i=1
N
Die Varianz der Monte Carlo Integration ist also proportional zu N1 und der Varianz
des Integranden, der Fehler skaliert folglich mit √1N . Um die Ergebnisse der Monte
Carlo Integration zu verbessern, bieten sich also zwei Möglichkeiten. Entweder vergrößert man die Stichprobenmenge oder man versucht die Varianz des Integranden
zu reduzieren.
5.3.1. Importance Sampling
√
Da der Fehler invers proportional zu N ist, wird eine (weitere) Erhöhung der Stichprobenzahl ineffektiver, die Reduktion der Varianz des Integranden scheint also der
vielversprechendere Ansatz zu sein. Hierzu betrachtet man beispielsweise eine Funktion mit einem schmalen Peak: Wird diese Funktion nun mit Monte Carlo Integration
1
f(x)
0,8
y
0,6
0,4
0,2
0
a
x
b
Abbildung 5.4.: Ein Beispiel einer für Importance Sampling geeigneten Funktion, viele x ∈ [a, b]
liefern keinen relevanten Beitrag zum Integral
und einer gleichverteilten Menge an Stützstellen ausgewertet, werden viele Auswertungen der Funktion an kaum zum Integral beitragenden Stellen vorgenommen. Als
93
5. Numerische Integration
Folge davon steigt die Zahl der notwendigen Stützstellen um ein gutes Ergebnis zu
erzielen. Es liegt also nahe, statt der Gleichverteilung eine gewichtete Verteilung zu
verwenden, die die Stützstellen in den Teilen des Intervalls [a.b] häuft, die die größten
Beiträge zum Integral liefern.
Z b
Z b
Z b
f (x)
f˜(x)g(x)
f (x)dx =
g(x) =
g(x)
a
a
a
Durch Verwendung einer Verteilungsfunktion g(x) 6= 1 erhält man nun einen neuen
Integranden f˜(x), ohne dabei den analytischen Wert des Integrals zu ändern. Für die
Varianz der Monte Carlo Integration hingegen ändert sich einiges. Sei g(x) nun eine
Funktion, die den Verlauf von f (x) grob wiedergibt.
f (x)
|εn(x)| 1
1 + εn(x)
f (x)
f˜(x) =
= 1 + εn(x)
g(x)
g(x) :=
Für die Varianz des neuen Integranden in der g-Verteilung ergibt sich dann (wieder
unter Ausnutzung der Linearität der Varianz):
E2
E
D
D
2
2
˜
˜
σf˜ = f (x) − f (x)
g
g
2
= (1 + εn(x)) g − h1 + εn(x)i2g
2
= 1 + 2εn(x) + ε2 n2 (x) g − 1 + ε hn(x)ig
= 1 + 2ε hn(x)ig + ε2 n2 (x) g − 1 − 2ε hn(x)ig − ε2 hn(x)i2g
= ε2 n2 − n2 = ε2 σn2
Für |εn(x)| 1 folgt daraus σf2˜ σf2 . Beschreibt g(x) den Verlauf der Funktion
also ausreichend gut, lässt sich mit Hilfe des Importance Samplings der Fehler der
Integration deutlich verringern. f˜(x) hat zwar nicht mehr viel mit f (x) zu tun, die
“verlorenen“ Informationen sind dafür jetzt aber in der Verteilungsfunktion enthalten.
Beispiel 5.4. Ein einfaches Beispiel zur Veranschaulichung der Monte Carlo Integration ist die Berechnung von π. Hierzu betrachet man ein Quadrat mit Kantenlänge
1 und einem Viertelkreis mit Einheitsradius dort drin. Die Flächeninhalte ergeben sich
dann als A = 1 und A◦ = π/4. Aus der vorangegangenen Betrachtung des Integrals
in Gleichung 5.5 folgt:
Z 1Z 1
A◦ =
f (x, y)dy dx = A f
0
94
0
5.3. Monte Carlo Integration

1 falls x2 + y 2 ≤ 1
f (x, y) =
0 sonst
Schätzt man den Mittelwert nun mittels Monte Carlo Integration ab, ergibt sich:
f=
N
1 X
f (x, y)
N i=1
π'
N
4 X
f (x, y)
N i=1
95
6. Bestimmung von Nullstellen
Die Bestimmung von Nullstellen ist ein wichtiges Element in der Numerik, da neben
den offensichtlichen Anwendungsmöglichkeiten beispielsweise auch die Lösung nichtlinearer Gleichungssysteme mit einigen dieser Methoden möglich ist. Diese wiederum
können zusammen mit den Integrationsverfahren aus dem vorherigen Kapitel dazu
verwendet werden um Algorithmen zu konstruieren, die auch nichtlineare Diffentialgleichungen lösen können. Im Folgenden sollen deswegen einige Verfahren zur Bestimmung von Nullstellen von Funktionen und ein paar ihrer Anwendungsmöglichkeiten
vorgestellt werden.
6.1. Einfache Algorithmen zur Nullstellensuche
6.1.1. Intervallhalbierungsverfahren
Für eine Funktion f : R → R, die in einem Intervall [a0 , b0 ] stetig ist und einen
Vorzeichenwechsel vollführt, ergibt sich aus dem Zwischenwertsatz die Existenz einer
Nullstelle in diesem Intervall: ∃ z ∈ [a0 , b0 ] : f (z) = 0. Auf Basis dieser Eigenschaft
lässt sich nun ein simpler Algorithmus zur iterativen Bestimmung der Nullstelle konstruieren.
Satz 6.1 (Eigenschaften des Intervallhalbierungsverfahren)
Für ein Startintervall I0 = [a0 , b0 ] auf dem die stetige Funktion f ihr Vorzeichen
wechselt, bestimmt man den Mittelpunkt z0 = (a0 + b0 )/2. Je nachdem ob das Vorzeichen links oder rechts von z0 wechselt, wählt man für den nächsten Iterationschritt
das neue Intervall gemäß der Vorschrift
ak + b k
Ik = [ak , bk ]
zk =
2

a = z
falls f (ak−1 )f (zk−1 ) > 0
k
k−1 bk = bk−1
mit
ak = ak−1 bk = zk−1 falls f (bk−1 )f (zk−1 ) > 0
97
6. Bestimmung von Nullstellen
und erhält auf diese Weise eine Folge zk , die gegen die echte Nullstelle z konvergiert (oder gegen eine echte, sofern mehrere in dem Intervall liegen). Hinzu kommt
noch eine Nebenbedigung, die den Algorithmus sofort abbricht, falls zk die Nullstelle
ist, andernfalls terminiert man den Algorithmus sobald eine vorgegebene Konvergenzschranke unterschritten wurde. Dabei gelten a0 ≤ a1 ≤ a2 ≤ . . . ≤ z ≤ . . . ≤ b1 ≤ b0
und (bk − ak ) = (b0 − a0 ) · 2−k . Daraus folgt dann auch die apriori-Fehlerabschätzung19
für zk :
|zk − z| ≤
b 0 − a0
2k+1
Falls f auf I0 differenzierbar ist und 0 < m ≤ |f 0 (x)| ≤ M ∀ x ∈ I0 , gilt weiterhin
der Zusammenhang
1
1
|f (zk )| ≤ |z − zk | ≤ |f (zk )|
M
m
3
2
f(x)
y
1
0
-1
a1
-2
z1
b1
z0
a0
b0
-3
0
1
2
3
4
5
6
x
Abbildung 6.1.: Das Intervalhalbierungsverfahren für eindimensionale reelle Funktionen, bei dem
das Intervall, in dem sich die Nullstelle befindet, in jedem Iterationsschritt reduziert
wird.
Beweis. Da der Algorithmus und die apriori-Fehlerabschätzung einfach sind, wird nur
die letzte Fehlerabschätzung bewiesen. Für diese verwendet man den Mittelwertsatz
aus der Analysis:
f (y) − f (x) = |f 0 (ξ)|
∀ x, y ∈ I0 ∃ ξ ∈ I0 mit y−x 19
(6.1)
apriori bedeutet hier ohne Kenntnis der zk oder f (zk ), also eine Abschätzung der nötigen Iterationsschritte für eine gegebene Genauigkeit
98
6.1. Einfache Algorithmen zur Nullstellensuche
Setzt man nun y = z (f (z) = 0) und x = zk ein und verwendet die obere und untere
Schranke der Ableitung, erhält man die obige Abschätzung.
|f (zk )|
= |f 0 (ξ)|
|z − zk |
|f (zk )|
⇒m≤
≤M
|z − zk |
|z − zk |
1
1
≥
≥
⇒
m
|f (zk )|
M
1
1
⇒ |f (zk )| ≥ |z − zk | ≥
|f (zk )|
m
M
⇒
Algorithmus 6.1 (Intervallhalbierungsverfahren)
Gegeben sei eine Funktion f (x) auf dem Intervall [a, b] und ein Konvergenzkriterium T OL. Sofern f eine Nullstelle in diesem Intervall hat, lässt sich diese mit dem
Intervallhalbierungs-Verfahren finden.
while !T OL do
z = (a + b)/2
if f (a)f (z) > 0 then
a=z
end if
if f (b)f (z) > 0 then
b=z
end if
z = (a + b)/2
end while
6.1.2. Fixpunkte und sukzessive Approximation
Definition 6.1 (Lipschitz-Stetigkeit und Kontraktionen)
Eine Funktion f heißt lipschitz-stetig auf [a, b], falls es ein q ∈ R gibt, für das gilt:
|f (x) − f (y)| ≤ q|x − y|
∀ x, y ∈ [a, b]
Für den mehrdimensionalen Fall werden die Beträge durch die Vektornormen der
Ursprungs- und Bildräume ersetzt. Wenn q < 1 ist, bezeichnet man f als eine Kontraktion.
99
6. Bestimmung von Nullstellen
Definition 6.2 (Fixpunkt)
Für ein f : Rn → Rn nennt man z ∈ Rn einen Fixpunkt, falls f (z) = z gilt. Die
Fixpunkte sind also die Schnittpunkte von f mit der Identitätsfunktion (oder im eindimensionalen Fall mit der Geraden g(x) = x).
Um die Fixpunkte einer eindimensionalen Funktion zur Nullstellensuche benutzen
zu können, ist also zuerst ein Algorithmus nötig, der eine gegen den Fixpunkt konvergierende Zahlenfolge liefert. Naheliegend ist der Ansatz zk+1 = f (zk ), von dessen
Funktionalität man sich leicht anhand einer Skizze überzeugen kann.
g(x) = x
f(x)
g(x) = x
f(x)
z2
z1
y
y
z3
z1
z2
z3
x
x
(a)
(b)
Abbildung 6.2.: Anwendung von zk +1 = f (zk ) zur Fixpunktbestimmung in unterschiedlichen Fällen.
Die Pfeilfe in 6.2a zeigen den Verlauf mehrerer Iterationsschritte bei einer kontraktiven Abbildung, 6.2b stellt das Verhalten bei nicht kontraktiven Abbildungen dar.
Satz 6.2 (Konvergenz und Fehlerabschätzung der Fixpunkt-Iteration)
Sei G eine nichtleere, abgeschlossene Teilmenge von R und f : G → G eine kontraktive Abbildung. Dann existiert eine eindeutige Lösung für f (z) = z und die Folge
zi+1 = f (zi ) konvergiert gegen dieses z. Weiterhin gelten die Fehlerabschätzungen:
qi
· |z1 − z0 |
1−q
q
|z − zi | ≤
· |zi − zi−1 |
1−q
|z − zi | ≤
apriori
aposteriori
Beweis. Aus der Kontraktivität der Abbildung lässt sich eine Abschätzung für den
aktuellen Iterationsschritt in Abhängigkeit vom vorangegangenen machen und durch
mehrfache Anwendung dieser auch in Abhängigkeit vom ersten Iterationsschritt.
|zi+1 − zi | = |f (zi ) − f (zi−1 )| ≤ q|zi − zi−1 |
|zi+k − zi+k−1 | ≤ q k |zi − zi−1 | ≤ q k+i−1 |z1 − z0 |
100
6.1. Einfache Algorithmen zur Nullstellensuche
Betracht man den Abstand zwischen zwei nicht direkt aufeinanderfolgenden Iterationen, lässt sich dieser abschätzen, indem man die Zwischenschritte als konstruktive
Nullen hinzuaddiert und dann die Dreiecksungleichung des Betrags anwendet.
|zi+k − zi | ≤ |zi+k − zi+k−1 | + |zi+k−1 − zi+k−2 | + . . . + |zi+1 − zi |
q
|zi − zi−1 |
≤ q + q 2 + . . . + q k |zi − zi−1 | ≤
1−q
Ist die Folge nun konvergent(zi → z), sieht man, dass für k → ∞ aus dem letzten
Ausdruck die zweite Fehlerabschätzung folgt.
Setzt man in den letzten Ausdruck den zuvor für |zi+k −zi+k−1 | gefundenen ein, erhält
man:
|zi+k − zi | ≤
q i−1
q
|zi − zi−1 | ≤
q |z1 − z0 |
1−q
1−q
Falls die Folge konvergent ist, ergibt sich im Grenzwert k → ∞ die erste Fehlerabschätzung.
Die Konvergenz selber ergibt sich aus der selben Formel, da sie impliziert, dass die
zi eine Cauchy-Folge sind. Demzufolge existiert ein z ∈ G mit zi → z. Daraus folgt
dann f (z) = f (limi→∞ zi ) = limi→∞ f (zi ) = limi→∞ zi+1 = z.
Aus diesem Satz ergibt sich dann der simple Algorithmus der Fixpunkt-Iteration.
Algorithmus 6.2 (Fixpunkt-Iteration)
Sei G eine nichtleere, abgeschlossene Teilmenge von R und f : G → G eine kontraktive Abbildung. Dann lässt sich die Lösung für f (z) = z unter Verwendung eines
Startwertes x ∈ G und eines Konvergenzkriteriums T OL mit dem folgenden Algorithmus finden.
while !T OL do
x = f (x)
end while
√
Beispiel 6.1. Die Berechnung von n kann man beispielsweise mit der Fixpunkt2
Iteration der Funktion fn (x) = 1 + x − xn durchführen. Wie man leicht erkennen
√
kann, ist der Fixpunkt dieser Funktion z = n.
Wählt man nun n = 3 und G = [1, 2], ergibt sich die Ableitung als f 0 (x) = 1 − 32 x,
womit die Ableitung auf dem Intervall G durch − 31 ≤ f 0 (x) ≤ 13 beschränkt ist und der
101
6. Bestimmung von Nullstellen
Betrag demzufolge ≤
so erhält man
1
3
ist. Verwendet man nun den Mittelwertsatz (Gleichung 6.1,
1
|f (x) − f (y)| ≤ |x − y|
3
(6.2)
und hat somit die Konvergenz in diesem Intervall sichergestellt, da fn (x) dort eine
Kontraktion ist. Führt man die Iteration nun explizit aus, sehen die Ergebnisse wie
folgt aus.
z0 = 1
z1 = 1.666 . . .
z2 = 1.74 . . .
z3 = 1.73 . . .
..
.
6.1.3. Newtonverfahren
Auf Basis des Fixpunktverfahrens lässt sich auch ein iteratives Verfahren zur Bestimmung von Nullstellen einer Funktion f entwickeln, das sogenannte Newton-Verfahren.
Die Nullstellen einer beliebigen stetig differenzierbaren Funktion f (x) sind gegeben
durch die Fixpunkte der Abbildung g(x) = x − µ1 f (x) mit einem geeigneten µ 6= 0.
Sei I = [c − ρ, c + ρ] die Umgebung einer Nullstelle z mit c ≈ z und µ = f 0 (c) (6= 0).
Aus der Bedingung für Lipschitz-Stetigkeit (Definition 6.1) im Grenzwert x → y
|g(x) − g(y)| ≤ q|x − y| ∀ x, y ∈ I
⇔
|g 0 (x)| ≤ q ∀ x ∈ I
ergibt sich, dass g(x) eine Kontraktion ist, falls |g 0 (x)| ≤ q < 1 ∀ x ∈ I erfüllt ist.
Dies ist äquivalent zu:
0
f
(x)
= 1 · |f 0 (c) − f 0 (x)| ≤ q < 1
1 −
(6.3)
f 0 (c) |f 0 (c)|
Satz 6.3 (Konvergenz des Newton(-Raphson)-Verfahrens)
Für eine kontraktive Abbildung g(x) = x− µ1 f (x) auf dem Intervall I = [c+ρ, c−ρ], das
die echte Nullstelle z der stetig differenzierbaren Funktion f (x) enthält, konvergiert
die Folge xi gemäß der Vorschrift
xi+1 = g(xi ) = xi −
102
f (xi )
f 0 (c)
6.1. Einfache Algorithmen zur Nullstellensuche
für jeden Startwert x0 ∈ I gegen z. Eine Fehlerabschätzung des Verfahren ergibt:
q
q f (xi−1 ) |xi − z| ≤
|xi − xi−1 | =
1−q
1 − q f 0 (c) q i f (x0 ) qi
|x1 − x0 | =
|xi − z| ≤
1−q
1 − q f 0 (c) Beweis. Wählt man ρ ausreichend klein, lässt sich Gleichung 6.3 aufgrund der Stetigkeit von f 0 (x) lokal immer erfüllen. Da g(x) dann eine kontraktive Abbildung auf
dem kompletten Intervall ist, ergibt sich unter Verwendung von Satz 6.2 daraus sofort
die lokale Konvergenz des Newton-Verfahrens auf dem Intervall I. Aus dem Satz zur
Fixpunkt-Iteration folgen auch die Fehlerabschätzungen.
In der Praxis setzt man sinnvollerweise c = xi , da hierdurch der Grenzwert der
Fixpunkt-Iteration nicht geändert wird, xi im Gegensatz zu c aber vorab bekannt
ist. Mit diesem Konvergenz-Resultat können wir nun den dazugehörigen Algorithmus
aufschreiben.
Algorithmus 6.3 (Newton-Verfahren)
Für eine kontraktive Abbildung g(x) = x − µ1 f (x) auf dem Intervall I = [c + ρ, c − ρ],
das die echte Nullstelle z der stetig differenzierbaren Funktion f (x) enthält, konvergiert der nachfolgende Algorithmus gegen diese Nullstelle. T OL ist ein geeignetes
Konvergenzkriterium.
while !T OL do
x = x − f (x)/f 0 (x)
end while
Ist die Ableitung von f (x) nicht als analytischer Ausdruck verfügbar oder ihre Implementierung nicht sinnvoll, so bietet es sich an, die Ableitung durch einen Differenzenquotienten der letzten beiden Iterationsschritte zu approximieren.
xi+1 = xi −
f (xi )
f (xi )−f (xi−1 )
xi −xi−1
Das Newton-Verfahren hat auch eine recht anschauliche grafische Interpretation. Sei
yi (x) die Tangente der Funktion an der Stelle der i-ten Iteration, dann folgt daraus:
yi (x) := f (xi ) + f 0 (xi ) · (x − xi )
103
6. Bestimmung von Nullstellen
f (xi )
− xi = 0
⇒ yi (xi+1 ) = f (xi ) + f (xi ) · xi − 0
f (c)
0
Das Ergebnis des nächsten Iterationsschritts ist also die Nullstelle der Tangente der
vorhergehenden Iterierten.
y
f(x)
yi
yi+1
0
xi
x i+1
x
Abbildung 6.3.: grafische Darstellung des Newtonverfahrens und der Interpretation der Iterierten als
Nullstellen der Tangenten
6.2. Nichtlineare Gleichungssysteme
Das Newton-Verfahren funktioniert auch im mehrdimensionalen Fall um die Nullstellen einer Funktion f : Rn → Rn zu finden. Die Grundlage dafür ist der Banachsche
Fixpunktsatz, eine Verallgemeinerung des Spezialfalls aus Satz 6.2.
Für eine Funktion f : Rn → Rn und eine reguläre n × n-Matrix A gilt aufgrund der
Invertierbarkeit von A:
Af (x) = 0 ⇐⇒ f (x) = 0
⇒ z = g(z)
mit g(x) = x − Af (x)
Findet man also einen Fixpunkt von g(x), ist dieser auch eine Nullstelle von f (x).
Satz 6.4 (Fixpunktsatz von Banach)
Sei f : Rn → Rn eine stetig differenzierbare Funktion in einer Umgebung Kρ (c)
eines Punktes c, der in der Nähe einer Nullstelle der Funktion liegt, und es gebe eine
reguläre Matrix A ∈ Rn×n sodaß:
Kρ (c) = {x ∈ Rn : kx − ck ≤ ρ}
kE − Af 0 (x)k ≤ q < 1 ∀ x ∈ Kρ (c)
104
(6.4)
6.3. Nullstellen von Polynomen
Hierbei sei E die Einheitsmatrix und k·k kontextabhängig entweder eine Vektornorm
oder eine mit der gewählten Vektornorm verträgliche Matrixnorn (es gilt kBxk ≤
kBk kxk für alle B und x). Dann besitzt die Funktion g(x) = x − Af (x) auf Kρ (c)
exakt einen Fixpunkt z und das Iterationsschema xk+1 = xk − Af (xk ) konvergiert für
jeden Startwert x0 ∈ Kρ gegen dieses z.
Die Fehler des Verfahrens sind gegeben durch:
qk
kx1 − x0 k
1−q
q
kxk − xk−1 k
kxk − zk ≤
1−q
kxk − zk ≤
Beweis. Aus der Definition von g(x) und Gleichung 6.4 ergibt sich:
kg 0 (x)k = kE − Af 0 (x)k ≤ q < 1
(6.5)
Aus dem Mittelwertsatz (Gleichung 6.1) folgt, dass es für alle x, y ∈ Kρ (c) ein ξ ∈
Kρ (c) gibt, sodaß:
kg(x) − g(y)k = kg 0 (ξ) · (x − y)k
Norm-Verträglichkeit ⇒ ≤ kg 0 (ξ)k · kx − yk
6.5 ⇒ ≤ q · kx − yk
Daraus folgt, dass g(x) eine kontraktive Abbildung ist und der Rest des Beweises
erfolgt analog zum eindimensionalen Fall in Satz 6.2.
Dem eindimensionalen Verfahren folgend, wählt man in der Praxis die inverse Ableitung der Funktion an der aktuellen Position.
−1
Ak = (f 0 (xk ))
−1
⇒ xk+1 = xk − (f 0 (xk ))
· f (xk )
6.3. Nullstellen von Polynomen
Um die Nullstellen eines Polynoms pn (x) =
vorgestellte Newton-Verfahren nutzen.
Pn
i=0
ai xi zu finden, lässt sich das zuvor
(t)
(t+1)
xj
=
(t)
xj
−
pn (xj )
(t)
p0n (xj )
105
6. Bestimmung von Nullstellen
Die Subskripte sind hierbei der Index der Nullstelle und die Superskripte geben den
Iterationsschritt an. In jedem Schritt werden also das Polynom selbst und seine erste
Ableitung an der aktuellen Iterationsstelle benötigt. Für eine effiziente Berechnung
des Polynoms bietet sich wieder das bereits bekannte Horner-Schema an.
pn (x) =
n
X
ai x i
i=0
= (. . . ()(an x + an−1 )x + an−2 ) . . . + a2 )x + a1 )x + a0
Für ein festes x∗ kann das Horner-Schema aber auch verwendet werden, um die Werte
der Ableitungen an dieser Stelle zu bestimmen. Dafür wird zuerst ein neuer Satz
Koeffizienten benötigt.
(0)
ai := ai
a(1)
n := an
(1)
(1)
(0)
ai := aj+1 x∗ + aj
∗
→ pn (x ) =
∗
((a(0)
n x
|
+
{z
j = n − 1, n − 2, . . . 0
(0)
an−1 )x∗
(1)
(0)
+ an−2 )x∗ + . . .
}
an−1
|
{z
}
(1)
an−2
(1)
Daraus folgt dann für den letzten Koeffizienten a0 = pn (x∗ ) := r0 . Auf Basis dieser
neuen Koeffizienten lässt sich nun ein Polynom vom Grad n − 1 konstruieren, dass
mit pn (x) zusammenhängt.
pn−1 (x) :=
n−1
X
(1)
aj+1 xj
=
j=0
n
X
(1)
aj xj−1
j=1
pn (x) = (x − x∗ )pn−1 (x) + r0
P
Um den zweiten Zusammenhang zu zeigen, fasst man die rechte Seite als nj=0 bj xj
zusammen und führt einen Koeffizientenvergleich durch. Unter Verwendung der vorherigen Definitionen der neuen Koeffizienten ergibt sich dann:
(0)
bn = a(1)
n = an
(1)
(1)
(0)
bj = aj − aj+1 x∗ = aj
(1)
(1)
0<j<n
(1)
(0)
b0 = r0 − a1 x∗ = a0 − a1 x∗ = a0
(0)
⇒ bj = aj
106
∀j
6.3. Nullstellen von Polynomen
Dieses Vorgehen lässt sich nun mit pn−1 (x) analog fortsetzen:
pn (x) = (x − x∗ )pn−1 (x) + r0
pn−1 (x) = (x − x∗ )pn−2 (x) + r1
..
.
pn−j (x) = (x − x∗ )pn−j−1 (x) + rj
..
.
rj := Pn−j (x∗ )
(6.6)
p1 (x) = (x − x∗ )p0 (x) + rn−1
p0 (x) = rn
Setzt man die Ausdrücke für die verschiedenen Polynome jetzt in pn (x) ein, lässt sich
dieses in Abhängigkeit der rj formulieren.
pn (x) = r0 + (x − x∗ )pn−1 (x)
= r0 + (x − x∗ )r1 + (x − x∗ )2 pn−2 (x)
= ...
n
X
=
rj · (x − x∗ )j
j=0
Diese Darstellung entspricht einer Taylorentwicklung von pn (x) an der Stelle x∗ und
legt die Vermutung nahe, dass die rj den Ableitungen des Polynoms an der Stelle x∗
entsprechen.
Satz 6.5 (Ableitungen von Polynomen im Horner-Schema)
Für die zuvor definierten pj (x) und rj gelten die folgenden Eigenschaften.
rj =
1 dj
pn (x = x∗ )
j! dxj
0≤j≤n
rj+1 = pn−j−1 (x∗ ) = p0n−j (x = x∗ )
(6.7)
(6.8)
Durch eine Erweiterung des Horner-Schemas lassen sich diese Koeffizienten auf effiziente Weise bestimmen.
Beweis. Stellt man pn (x) bis zum Index j − 1 als die oben gezeigte Taylorentwicklung dar und den Rest mit pn−j (x) und bildet dann die j-te Ableitung, erhält man
Gleichung 6.7.
pn (x) =
j−1
X
rk (x − x∗ )k + pn−j (x) · (x − x∗ )j
k=0
107
6. Bestimmung von Nullstellen
dj
pn (x) = 0 + pn−j (x) · j! + (x − x∗ )(p0n−j (x) · j! + . . .)
j
dx
x = x∗ ⇒
dj
pn (x = x∗ ) = pn−j (x∗ ) · j!
dxj
Aus der Definition von rj = pn−j (x∗ ) folgt dann die Behauptung. Die Gleichung 6.8
ergibt sich aus Gleichung 6.6 und den rj :
pn−j (x) = (x − x∗ )pn−j−1 (x) + rj
⇒ pn−j (x) − pn−j (x∗ ) = (x − x∗ )pn−j−1 (x)
pn−j (x) − pn−j (x∗ )
pn−j−1 (x) =
x − x∗
pn−j−1 (x∗ ) = p0n−j (x∗ )
x → x∗
Oder anders ausgedrückt: pk (x∗ ) = p0k+1 (x∗ ). Mit diesen Eigenschaften lassen sich
(j)
nun neue Koeffizienten ak wie folgt definieren. (Die Fälle j = 0 und j = 1 wurden
bereits zuvor behandelt.)
pn−j :=
n
X
(j)
ak xk−j
k=j
⇒
(0)
ak
= ak
für j = 0, . . . n − 1
a(j+1)
= a(j)
n
n = an (0)
(j+1)
ak
(j+1)
= ak+1 x∗ + ak (j)
k = n − 1, . . . j
(j+1)
rj = aj
(0)
rn = a(j)
n = an
Mit diesen Haufen an Koeffizienten lässt sich nun abschließend das Horner-Schema
um ein paar Stufen erweitern, um alle Ableitungen von pn (x) an der Stelle x∗ zu
(j)
erhalten, wie es in Abbildung 6.4 dargestellt ist. Die Koeffizienten ak sind also jene,
die für die Bildung des Polynoms Pn−j notwendig sind und die rj sind die Reste, die
beim Abspalten des Faktors (x − x∗ ) aus diesem Polynom übrig bleiben.
108
6.3. Nullstellen von Polynomen
k =n−1
k=n
(0)
an
(j = 1)
an
(j = 2)
an
..
.
(0)
=
(j = 0)
→
=
(1)
(2)
→
(n)
→
(n)
an−1
k=0
(0)
...
...
→
...
→
a1
↓
(1)
a1
↓
(2)
a1
(0)
→
a0
↓
(1)
a0
= r0 = pn (x∗ )
= r1 = p0n (x∗ )
= rn−1
=
an
an−1
↓
(1)
an−1
↓
(2)
an−1
..
.
k=1
rn
Abbildung 6.4.: erweitertes Horner-Schema zur Bestimmung aller Ableitungen an einer festen Stelle
x∗ , für die Bildungsvorschrift der Koeffizienten siehe Satz 6.5
109
7. Extrema und nichtlineare
Optimierung
Neben den im vorherigen Kapitel diskutierten Nullstellen einer Funktion sind oft auch
die Extrema eine interessante Größe. Beispielsweise ist der Grundzustand physikalischer Systeme charakterisiert durch die minimale Gesamtenergie. Ein weiteres großes
Anwendungsgebiet von Optimierungsalgorithmen ist die Lösung linearer Gleichungssysteme, die ja, wie bereits gezeigt, äquivalent zu einer quadratischen Minimierungsaufgabe sind. In diesem Kapitel wollen wir uns deswegen mit zwei nichtlinearen20 Algorithmen zur Lösung von quadratischen Minimierungsproblemen beschäftigen: Steepest Descent und der erweiterten Version Conjugate Gradients.
Im Gegensatz zu den anderen Kapiteln werden (Matrix-gewichtete) Skalarprodukte
hier als xT y bzw. xT Ay statt in Bra-Ket-Notation geschrieben, da wir es hier mit
vielen Ableitungen dieser zu tun haben.
7.1. Steepest Descent
Wir haben im Kapitel zu den Grundlagen linearer Gleichungssysteme bereits gesehen,
wie man lineare Gleichungssysteme in ein quadratisches Minimierungsproblem umformulieren kann (Satz 2.2). Nun wollen wir allgemeiner werden und zunächst beliebige
quadratische Funktionen im Rn minimieren.
1
f (x) = xT Ax + bT x + c
2
0
f (x) = xT A + bT
20
Die Bezeichnung “nichtlinear” bezieht sich hier nicht auf die zu untersuchende Funktion, sondern
auf die Arbeitsweise des Algorithmus. Bei den linearen Abstiegsverfahren (Abschnitt 2.3) sind
die Suchrichtungen fest vorgegeben und werden nicht verändert, die hier vorgestellten Verfahren
haben hingegen vom Startpunkt des aktuellen Schrittes abhängige Suchrichtungen.
111
7. Extrema und nichtlineare Optimierung
f 00 (x) = A
Wenn A eine symmetrische, positiv definite Matrix ist, dann hat diese Funktion exakt
ein Minimum.21 Da wir ein iteratives Verfahren konstruieren wollen, brauchen wir
also wieder einen beliebigen Startpunkt x0 , dessen Umgebung wir dann modellieren
können um eine optimale Suchrichtung zu finden. Ein erster Ansatz ist eine TaylorEntwicklung um x0 bis zur zweiten Ordnung22 , wobei wir als Variable den Abstand
zum Startpunkt p = x − x0 verwenden.
1
mx0 (p) = f (x0 ) + f 0 (x0 )p + pT f 00 (x0 )p
2
0
0
T 00
mx0 (p) = f (x0 ) + p f (x0 )
(7.1)
Wenn wir dieses Modell nun minimieren wollen, muss m0x0 (p)h = 0 ∀ h ∈ Rn gelten
und daraus folgend m0x0 (p) = 0.
0 = f 0 (x0 ) + pT f 00 (x0 )
⇒ p = −(f 00 (x0 ))−1 (f 0 (x0 ))T
Wir brauchen für dieses Modell also die Inverse der zweiten Ableitung. Eine quadratische Funktion ließe sich dadurch zwar in einem Schritt lösen, aber die Inversenbestimmung ist meist sehr kostspielig, weswegen wir als Alternative ein einfacheres Modell
wählen werden.. Baut man auf Basis dieses Modells jedoch einen Algorithmus, kommt
man wieder beim Newtonverfahren an (Nullstellensuche bei der Ableitung). Als Optimierungsverfahren bietet es den Vorteil einer lokal quadratischen Konvergenz, aber
ist für uns hier nicht weiter von Interesse.
Weil uns uns der quadratische Term der Taylor-Entwicklung stört, wir aber andererseits auch ein quadratische Modell für eine sinnvolle Minimierungsaufgabe brauchen,
liegt es nahe, die Taylor-Entwicklung nur bis zur ersten Ordnung durchzuführen und
für den quadratischen Term eine möglichst einfache Annahme zu treffen.
1
mx0 (p) = f (x0 ) + f 0 (x0 )p + pT p
2
0
0
T
mx0 (p) = f (x0 ) + p
21
Die Aussage, dass ein Polynom m-ten Grades maximal m − 1 Extrema haben kann, gilt auch im
mehrdimensionalen Fall und da xT Ax > 0 ∀ x ∈ Rn gilt, muss das eine mögliche Extremum also
ein Minimum sein.
22
Eine Taylor-Entwicklung einer quadratischen Funktion bis zur zweiten Ordnung mag an dieser
Stelle unsinnig wirken, aber wenn man die Verfahren auf beliebige Funktionen verallgemeinern
will, wird diese Modellbildung wichtig.
112
7.1. Steepest Descent
T
⇒ p = − (f 0 (x0 )) = −(Ax0 + b) = −∇f (x0 )
{z
}
|
(7.2)
in euklidischer Norm
Dieses Modell lässt sich nun auf einfache Weise lösen. Außerdem fällt auf, dass die
Suchrichtung in Richtung des negativen Gradienten zeigt, also der Richtung des
stärksten Abfalls, daher der Name “Steepest Descent”. Weil wir aber nicht mehr
die exakte quadratische Funktion berücksichtigen, erhalten wir auf diese Weise nur
die Suchrichtung, nicht aber die optimale Schrittweite α∗ um die eigentliche Funktion
f (x0 + αp) entlang dieser aus dem Modell gewonnenen Richtung zu minimieren.
1
f (x0 + αp) = (x0 + αp)T A(x0 + αp) + bT (x0 + αp) + c
2
α2
1
= xT0 Ax0 + αxT0 Ap + pT Ap + bT (x0 + αp) + c
2
2
d
f (x0 + αp) = xT0 Ap + αpT Ap + bT p
dα
d
!
f (x0 + α∗ p) = 0
dα
(Ax0 + b)T p 7.2 pT p
⇒ α∗ = −
= T
pT Ap
p Ap
Damit haben wir alle notwendigen Komponenten zusammen und können den kompletten Algorithmus unter Verwendung der euklidischen Norm (siehe 7.2) formulieren.
Algorithmus 7.1 (Steepest Descent)
Gegeben sei eine quadratische Funktion f (x) = xT Ax + bT x + c mit einer symmetrischen, positiv definiten Matrix A, ein Startvektor x0 und ein geeignetes Konvergenzkriterium TOL. Letzteres kann beispielsweise die Änderung des Funktionswerts
zwischen zwei Schritten sein oder bei der Anwendung zur approximativen Lösung linearer Gleichungssysteme der Betrag des Residuums rk := Axk − b. Dann findet das
folgende iterative Verfahren das Minimum dieser Funktion.
while !TOL do
pk = −∇f (xk−1 )
αk = (pTk pk )/(pTk Apk )
xk = xk−1 + αk pk
end while
Bemerkung. Zwei aufeinanderfolgende Suchrichtungen des Steepest Descent sind
immer orthogonal zu einander. Weil im vorherigen Schritt entlang des eindimensionalen affinen Unterraums der von pk−1 aufgespannt wird, minimiert wurde, muss der
113
7. Extrema und nichtlineare Optimierung
nächste Gradient (und damit auch pk ) senkrecht dazu sein, weil sonst die Minimierungsbedingung für α nicht erfüllt gewesen wäre.
Der große Vorteil dieses Algorithmus ist, dass er nur mit n2 pro Iterationsschritt
skaliert und meist nach deutlich weniger als n Schritten abgebrochen werden kann.
Andererseits minimieren wir in jedem Schritt nur in einem eindimensionalen affinen
Unterraum. Dies führt zu einer eher bescheidenenen Konvergenzrate in der Nähe des
Minimums. Anschaulich lässt sich dies im R2 zeigen, hier führt die Orthogonalität aufeinanderfolgender Suchrichtungen zu einem Zick-Zack-Kurs und deswegen nur kleinen
Schritten in der Nähe des Minimums.
0.4
Steepest Descent
0.38
0.36
0.34
0.32
0.3
0.35
0.4
0.45
0.5
Abbildung 7.1.: Veranschaulichung der Konvergenzproblematik des Steepest Descent im R2
7.2. Conjugate Gradients
Es wäre für die Konvergenz des Steepest Descent vorteilhaft, wenn wir die Suchrichtungen so bestimmen könnten, dass wir in jedem Schritt das Minimum in dem affinen
Unterraum, der von allen bisheringen Suchrichtungen aufgespannt wird, finden. Dieser Ansatz führt uns zur Optimalitätsbedingung.
Satz 7.1 (Optimalitätsbedingung)
Sei Uk ein Unterraum von Rn und xk ein Minimum der quadratischen Funktion
f (x) = 1/2xT Ax + bT x + c in Uk (f 0 (xk )uk = 0 ∀ uk ∈ Uk ). Sei weiterhin p Aorthogonal zu Uk (pT Auk = 0 ∀ uk ∈ Uk ) und xk+1 = xk + αp das Minimum von
f (xk + αp). Dann ist xk+1 ein Minimum auf dem ganzen Unterraum Uk+1 , der Uk
erweitert um den Basisvektor p ist.
Beweis. Schreiben wir ein beliebiges Element uk+1 = uk +βp können wir damit zeigen:
f 0 (xk + αp)uk+1 = (A(xk + αp) + b)T (uk + βp)
114
7.2. Conjugate Gradients
= (Axk + b)T uk + α pT Auk +β (A(xk + αp) + b)T p
| {z }
=0
=
0
+β
f (x )u
| {zk }k
xk Minimum in Uk
f 0 (xk+1 )p
| {z }
xk+1 Minimum entlang p
= 0 ∀ uk+1 ∈ Uk+1
Folglich sind also Suchrichtungen, die A-orthogonal zueinander sind, optimal für unser Problem. Um diese bestimmen zu können, müssen wir uns allerdings zuerst mit
Projektionen auf Unterräume und ihren Eigenschaften beschäftigen um ein geeignetes
Orthogonalisierungsverfahren zu finden.
Definition 7.1 (Projektoren auf Unterräume)
Sei W ⊂ Rn ein echter Teilraum von Rn (also W 6= Rn ), A eine symmetrische, positiv
definite Matrix und sei {ω1 , ω2 . . . ωm } mit m < n eine vollständige OrthonormalbaP
sis bezüglich A in W . (Das heißt jedes w ∈ W kann eindeutig als w = m
i=1 αi ωi
T
dargestellt werden und ωi Aωj = δi,j .) Dann nennt man
P : Rn → W
n
X
Px =
ωjT Ax · ωj
j=1
die A-orthogonale Projektion (oder Projektor) auf W und der zu W A-orthogonale
Raum W ⊥ ist definiert als W ⊥ := y ∈ Rn : y T Aw = 0 ∀ w ∈ W .
Satz 7.2 (Eigenschaften des Projektors)
Sei W ⊂ Rn ein echter Teilraum von Rn , A eine symmetrische, positiv definite Matrix
und {ω1 , ω2 . . . ωm } (m < n) ein vollständiges Orthonormalsystem in W . Dann besitzt
P
die A-orthogonale Projektion P auf W , definiert als P x = nj=1 ωjT Ax · ωj , folgende
Eigenschaften:
1. P ist linear: P (ax + by) = aP x + bP y ∀ a, b ∈ R, x, y ∈ Rn .
2. Der Operator Q := E − P ist die Projektion auf W ⊥ .
3. P ist eindeutig durch W bestimmt, die genaue Wahl des Orthogonalsystems
spielt keine Rolle.
4. P ist selbstadjundiert: P † = P .
5. P ist idempotent: P 2 = P .
115
7. Extrema und nichtlineare Optimierung
Beweis. Behauptung 1: Aus der Linearität des Skalarprodukts xT A(y + z) = xT Ay +
xT Az ergibt sich sofort die Linearität des Projektors.
Behauptung 2: Sei y := Qx = (E − P )x = x − P x für ein beliebiges x ∈ Rn und
w ∈ W ebenfalls beliebig. Zu zeigen ist, dass y T Aw = 0 unabhängig von der Wahl
von x und w gilt.
!
m
X
y T Aw = (x − P x)T A
αj ωj
j=1
=
m
X
αj xT Aωj − (P x)T Aωj
j=1
=
m
X


αj xT Aωj −
j=1
=
m
X

m
X

wiT Ax ωiT Aωj 
| {z }
i=1
=δi,j
αj xT Aωj − wjT Ax
j=1
=0
0
} ein zweites vollständiges Orthonormalsystem in W
Behauptung 3: Sei {ω10 , ω20 . . . ωm
P
0
0
0
0
bezüglich A mit dem A-orthogonalen Projektor P 0 x = m
i=1 ωi Ax·ωi und Q = E−P .
Folglich ist P 0 x ∈ W und Q0 x ∈ W ⊥ ∀ x ∈ Rn . Weiterhin folgt aus der Bedingung
P + Q = E = P 0 + Q0 :
0 = x − x = (P + Q)x − (P 0 + Q0 )x
⇒ (P − P 0 )x = (Q − Q0 )x
| {z } | {z }
∈W
∈W ⊥
⇒ (P − P 0 )x = 0 ⇒ P x = P 0 x
⇒ (Q − Q0 )x = 0 ⇒ Qx = Q0 x
Folglich müssen die Projektoren also identisch sein und hängen also nicht von der
Wahl des Orthonormalsystems ab, das W aufspannt.
Behauptung 4: Zu zeigen ist (P x)T y = xT P y.
(P x)T y = (P x)T (P + Q)y = (P x)T P y
xT P y = ((P + Q)x)T P y = (P x)T P y
Behauptung 5: Für ∀ x ∈ Rm gilt:
P 2 x = P (P x) = P
m
X
i=1
116
!
ωiT Ax · ωi
7.2. Conjugate Gradients
=
m
X

ωjT A 
m
X
i=1
j=1
=
m
m X
X
j=1 i=1
=
m
X

ωiT Ax ·ωi  · ωj
| {z }
∈R
ωiT Ax · ωj Aωi ·ωj
| {z }
=δi,j
ωjT Ax · ωj = P x
j=1
Mit Hilfe dieser Projektoren können wir nun ein Verfahren formulieren, mit dem
wir in der Lage sind, eine gegebene Menge an linear unabhängigen Vektoren in Aorthonormale Vektoren zu transformieren.
Satz 7.3 (Gram-Schmidt-Orthonormalisierung)
Seien {u1 , u2 . . . um } linear unabhängige Vektoren in Rn und A ∈ Rn×n eine symmetrisch. positiv definite Matrix. Sei weiterhin Pi die A-orthogonale Projektion auf den
Raum Wi = span {u1 , u2 . . . ui }. Dann stellt die Menge der {ωj }, gegeben durch die
folgende Rekursionsvorschrift eine A-orthonormale Basis für diesen Raum Wi dar.
v1 = u1
ω1 =
v1
kv1 kA
vi+1 = ui+1 − Pi ui+1
= ui+1 −
i
X
ωkT Aui+1 · ωk
k=1
ωi+1
vi+1
=
kvi+1 kA
Beweis. Der Beweis erfolgt über Induktion. Aus der linearen Unabhängigkeit folgt,
dass u1 6= 0 ⇒ v1 6= 0 gilt und demzufolge ω1 wohldefiniert mit kω1 kA = 1 ist. Damit
ist der Induktionsanfang bewiesen.
Induktionsannahme :
{ω1 , ω2 . . . ωj−1 } sind A-Orthonormalsystem
Induktionsschluss : vj = uj − Pj−1 uj = (E − Pj−1 )uj
⊥
= Qj−1 uj ⇒ vj ∈ Wj−1
⇒ vjT Aωk = 0 ∀ k = 1, 2 . . . j − 1
Damit ist vj A-orthogonal zu {ω1 , ω2 . . . ωj−1 } und aus der linearen Unabhängigkeit
ergibt sich, dass Qj−1 uj 6= 0 gilt. Aus der Normierung folgt dann, dass {ω1 , ω2 . . . ωj }
ein vollständiges A-orthonormales System für Wj ist.
117
7. Extrema und nichtlineare Optimierung
Mit der Gram-Schmidt-Orthonormalisierung können wir uns jetzt nun wieder unserem ursprünglichen Problem zuwenden und den Steepest Descent-Algorithmus so
modifizieren, dass er A-orthogonale Suchrichtungen hat.
while !TOL do
P
T
T
pk = −∇f (xk−1 ) + k−1
p
·
p
A∇f
(x
)
/
p
Ap
i
k−1
i
i
i
i=1
αk = (pTk pk )/(pTk Apk )
xk = xk−1 + αk pk
end while
Aufgrund der Optimalitätsbedingung, die dieser Algorithmus erfüllt, muss das Minimum im Rn nach spätestens n Schritten gefunden sein, allerdings ergibt sich die
Problematik, dass jeder Schritt der Rechnung teurer wird als der vorherige, weil gegen alle vorherigen Suchrichtungen orthogonalisiert werden muss. Durch eine genauere
Betrachtung der zu berechnenden Skalarprodukte lässt sich diese Problematik aber
glücklicherweise umgehen.
pTi A∇f (xk−1 ) =
=
=
=
=
αi
(Api )T ∇f (xk−1 )
αi
1
(Axi − Axi−1 )T ∇f (xk−1 )
αi
1
(Axi − Axi−1 + b − b)T ∇f (xk−1 )
αi
1 (Axi + b)T ∇f (xk−1 ) − (Axi−1 + b)T ∇f (xk−1 )
αi
1 (∇f (xi ))T ∇f (xk−1 ) − (∇f (xi−1 ))T ∇f (xk−1 )
αi
Aus der Optimalitätsbedingung wissen wir:
f 0 (xk−1 )uk−1 = 0 ∀ uk−1 ∈ Uk−1 = span {p1 , p2 . . . pk−1 }
= uTk−1 ∇f (xk−1 )
Nun sind die pi aber gerade die Gram-Schmidt-orthogonalisierten Gradienten und
spannen folglich denselben Unterraum wie diese auf.
uk−1 =
k−1
X
i=1
⇒
k−2
X
i=0
118
γi (∇f (xi ))T ∇f (xk−1 ) = 0
δi pi =
k−2
X
i=0
γi ∇f (xi )
7.2. Conjugate Gradients
⇒ (∇f (xi ))T ∇f (xk−1 ) = 0 ∀ i < k − 1
⇒
k−1 T
X
p A∇f (xk−1 )
i
i=1
pTi Api
· pi =
(∇f (xk−1 ))T ∇f (xk−1 )
· pk−1
αk−1 · pTk−1 Apk−1
(∇f (xk−1 ))T ∇f (xk−1 ) pTk−1 Apk−1
· T
· pk−1
pTk−1 Apk−1
pk−1 pk−1
(∇f (xk−1 ))T ∇f (xk−1 )
=
· pk−1
pTk−1 pk−1
=
Folglich liefert also nur die vorherige Suchrichtung einen nichtverschwindenen Beitrag
zur A-Orthogonalisierung und die Berechnung der Suchrichtung vereinfacht sich zu:
pk = −∇f (xk−1 ) +
(∇f (xk−1 ))T ∇f (xk−1 )
·pk−1
pTk−1 pk−1
|
{z
}
:=βk
Nun haben wir alles zusammen um eine effiziente Version des CG-Algorithmus zu
formulieren.
Algorithmus 7.2 (Conjugate Gradients)
Gegeben seien eine quadratische Funktion f (x) = xT Ax + bT x + c mit einer symmetrische, positiv definiten Matrix A, ein Startvektor x0 und ein geeignetes Konvergenzkriterium. Dieses kann zum Beispiel die Änderung des Funktionswerts zwischen
zwei Schritten sein oder bei der Anwendung zur approximativen Lösung linearer Gleichungssysteme der Betrag des Residuums rk := Axk − b. Dann findet das folgende
iterative Verfahren das Minimum dieser Funktion.
p0 = 0
while !TOL do
βk = [(∇f (xk−1 ))T ∇f (xk−1 )]/[pTk−1 pk−1 ]
pk = −∇f (xk−1 ) + βk pk−1
αk = (pTk pk )/(pTk Apk )
xk = xk−1 + αk pk
end while
Dieser Algorithmus hat als teuerste Operation eine Matrix-Vektor-Multiplikation und
skaliert deswegen mit n2 pro Schritt. Meist bleibt man mit der Anzahl der Schritte
nun deutlich unter n um eine gute Näherung des Minimums zu finden und bleibt so
deutlich unter der n3 Laufzeit einer direkten Lösung.
119
7. Extrema und nichtlineare Optimierung
0.4
Steepest Descent
Conjugate Gradients
0.38
0.36
0.34
0.32
0.3
0.35
0.4
0.45
0.5
Abbildung 7.2.: Veranschaulichung der Konvergenz der Conjugate Gradients Methode im R2
7.2.1. Preconditioning
Die Konvergenz der Steepest Descent und Conjugate Gradients Verfahren lässt sich
mittels Preconditioning verbessern. Statt dem euklidischen Skalarprodukt für den
quadratischen Term des Modells (Gleichung 7.1) kann man auch jedes andere Matrixinduzierte Skalarprodukt xT M y benutzen. Wenn M einfach zu invertieren ist, lässt
sich auf diese Weise die Konvergenz deutlich beschleunigen. Die Konvergenzgeschwindigkeiten der Conjugate Gradients mit und ohne Preconditioning sind:
p
κ(A) − 1
ohne Preconditioning: kxk+1 − xk k ≤ p
kxk − xk−1 k
κ(A) + 1
p
κ(M −1 A) − 1
mit Preconditioning: kxk+1 − xk k ≤ p
kxk − xk−1 k
κ(M −1 A) + 1
Wählt man M also so, dass die Kondition23 κ von M −1 A deutlich kleiner ist als die
von A selbst, dann kann man die nötige Schrittzahl zum Erreichen der Konvergenz
deutlich verringern. Die Herleitung der Preconditioned Conjugate Gradients erfolgt
analog zum hier gezeigten Fall, nur mit dem Unterschied, dass der Gradient nicht
mehr die Transponierte der Ableitung ist, sondern ∇f (x) = M −1 f 0 (x)T . Außerdem
sind die Gradienten dann M -orthogonal zueinander, statt im euklidischen Sinne senkrecht zueinander. Auf einen Beweis dieser Konvergenz-Resultate wird hier verzichtet
und stattdessen auf die Literatur verwiesen. Eine ausführliche Diskussion der Konvergenzrate der CG-Algorithmen findet sich beispielsweise in [2, Seite 122 ff.].
23
Die Kondition einer Matrix ist der größte Eigenwert geteilt durch den kleinsten.
120
8. Eigenwertprobleme
Die Bestimmung von Eigenwerten ist ein allgegenwärtiges Problem in der Physik,
ein bekanntes Beispiel ist der Hamilton-Operator aus der Quantenmechanik, dessen
Eigenwerte die Energien der Zustände sind. Deswegen beschäftigen wir uns zuerst in
diesem Kapitel mit der Potenzmethode, einem simplen Verfahren zur Bestimmung
des größten Eigenwertes einer Matrix24 . Anschließend wird noch das HouseholderVerfahren diskutiert, das die Matrix in eine Tridiagonalmatrix umformt. In dieser
Form lassen sich die Eigenwerte dann auf einfache Weise bestimmen.
Im Allgemeinen ist ein Eigenwert λi ∈ C einer Matrix A ∈ Cn×n definiert über
Ayi = λi yi
wobei yi ∈ Cn den dazugehörigen Eigenvektor darstellt. In diesem Kapitel werden wir
uns auf selbst-adjundierte (“hermitesche”) Matrizen konzentrieren, weil diese für physikalische Anwendungen am wichtigsten sind. Aus der Eigenschaft hAx| yi = hx| Ayi
ergibt sich, dass die Eigenwerte alle reell sind und die zugehörigen Eigenvektoren ein
Orthogonalsystem bilden.25
Diese beiden Eigenschaften lassen sich mit den Eigenschaften des komplexen Skalarprodukts schnell beweisen.
hAyi | yi i = hyi | Ayi i∗
⇒ hyi | yi i λ = hyi | yi i∗ λ∗
hyi | yi i λ = hyi | yi i λ∗
⇒ λ = λ∗
Für die Orthogonalität der Eigenvektoren betrachten wir zwei verschiedene Eigenvektoren x und y mit Eigenwerten λ 6= µ:
Ay = λy
Ax = µx
24
Das Beispiel mit dem Hamilton-Operator kann man oft in ein äquivalentes Problem umformen,
bei dem der Grundzustand dem größten Eigenwert entspricht.
25
Beispielsweise sind alle Observablen in der Quantenmechanik selbst-adjundiert, weil die Eigenwerte, die physikalische Größen darstellen, reell sein müssen.
121
8. Eigenwertprobleme
hx| Ayi = λ hx| yi
= hAx| yi = µ∗ hx| yi = µ hx| yi
⇒ λ hx| yi = µ hx| yi
µ 6= λ ⇒ hx| yi = 0
Es kann aber auch mehrere orthogonale Eigenvektoren zu einem Eigenwert geben, in
diesem Falle spricht man von “entarteten Eigenwerten”.
8.1. Die Potenzmethode
Die Potenzmethode ist ein iteratives Verfahren, bei dem die Matrix, deren Eigenwerte bestimmt werden sollen, wiederholt auf einen Vektor angewendet wird. Da die
Eigenvektoren ein vollständiges Orthogonalsystem bilden, kann jeder Vektor als Linearkombination dieser geschrieben werden. Durch mehrfache Anwendung der Matrix
bekommt jeder Eigenvektor eine Potenz seines Eigenwertes als Vorfaktor und nach
genügend vielen Iterationen liefert nur noch der Vektor zum größten Eigenwert einen
relevanten Beitrag. Wir beschränken uns bei der Beweisführung hier auf den Fall
nicht-entarteter Eigenwerte.
Satz 8.1 (Konvergenz der Potenzmethode)
Sei A ∈ Cn×n selbstadjundiert und seien alle Eigenwerte λi ≥ 0. Seien ferner ωj die
normierten Eigenvektoren, Aωj = λj ωj und kωj k = 1. Dann gilt für jedes x(0) ∈ Cn
mit Ax(0) 6= 0:
1. Die Folge y (t) , die definiert ist durch die Folge x(t) ,
x(t+1) = Ax(t)
y
(t+1)
Ay (t) x(t) x(t+1)
Ax(t)
= (t+1) =
=
kx
k
kAx(t) k
kAy (t) kx(t) kk
Ay (t)
=
kAy (t) k
konvergiert gegen den Eigenvektor ωmax von A, der zum größten Eigenwert
gehört.
2. Die Folge der Quotienten
ρ(x(t) ) =
(t) x Ax(t)
kx(t) k
2
konvergiert gegen den dazugehörigen (größten) Eigenwert λmax .
122
8.1. Die Potenzmethode
3. Die Folge Ay (t) ist monoton steigend und konvergiert ebenfalls gegen λmax .
Im Allgemeinen ist weder die Folge x(t) noch ihre Norm konvergent, für λmax > 1
geht x(t) → ∞.
Beweis. Behauptung 1: Es seien die Eigenwerte der Größe nach sortiert: λ1 > λ2 >
. . . > λn ≥ 0. Da die Eigenvektoren ein vollständiges Orthogonalsystem sind, schreiben wir den Ausgangsvektor x(o) in dieser Basis:
x
(0)
=
n
X
αj = ωj x(0) ∈ C
αj ωj
j=1
⇒ Ax
(0)
=A
n
X
αj ωj =
n
X
j=1
αj λj ωj 6= 0
j=1
Da Ax(0) 6= 0 nach Vorraussetzung gilt, dürfen nicht alle αj = 0 sein. Sei m nun der
Index des größten Eigenwerts λm := λ > 0 mit nicht-verschwindenen Koeffizienten:
αj λj = 0 ∀ j < m. Daraus folgt dann, dass das Verfahren unter diesen Voraussetzungen nicht kollabieren kann.
x(t) = At x(0) =
n
X
αj λtj ωj 6= 0
j=1
In der Summe liefern alle Terme j < m keinen Beitrag, wodurch sich die Folgenelemente schreiben lassen als:
t
n
X
λj
(t)
t
t
αj ωj
x = λm αm ωm + λm
λ
m
j=m+1
|
{z
}
:=r(t)
t
= λ αm ωm + r
(t)
r(t) ist der zu ωm orthogonale Anteil von x(t) :
* n +
X λ t
(t) j
ωm r
= ωm αj ωj
λ
j=m+1
t
n
X
λj
=
αj hωm | ωj i = 0
λ
j=m+1
Da λ der größte Eigenwert ist, können wir die Größe des Restglieds nun abschätzen.
q := max
j>m
λj
<1
λ
123
8. Eigenwertprobleme
t
n
n
X
X
λj
t
r =
αj ωj ≤ q
αj ωj
λm
j=m+1
j=m+1
n
X
(t) t→∞
⇒ r ≤ q t αj ωj −→ 0
(t)
j=m+1
Daraus folgt nun schließlich für die Folge y (t) :
λt (αm ωm + r(t) )
x(t)
=
kx(t) k
λt kαm ωm + r(t) k
αm ωm + r(t) t→∞ αm ωm
=
−→
kαm ωm + r(t) k
kαm ωm k
ωm
= ωm
=
kωm k
y (t) =
Ob αm negativ ist, spielt hier keine Rolle, da −ωm genauso gut als Eigenvektor geignet
ist wie ωm .
Behauptung 2:
(t) (t) Ax(t)
x
x
x(t)
(t)
=
ρ =
A
2
kx(t) k kx(t) k
kx(t) k
= y (t) Ay (t)
y (t) → ωm ⇒ ρ(t) → hωm | Aωm i = hωm | λωm i = λ
Behauptung 3:
(t) 2 (t) Ay = Ay Ay (t) = y (t) A2 y (t)
(t) 2 (t) (t) y A y
⇒ Ay =
kAy (t) k
Ay (t)
(t) = y A
kAy (t) k
(t) = y Ay (t+1)
Mit der Cauchy-Schwarz-Ungleichung lässt sich dies nun nach oben abschätzen:
(t) (t) (t+1) Ay ≤ y · Ay
| {z }
=1
(t+1) = Ay
Damit ist der monotone Anstieg der Folge gezeigt. Die Konvergenz folgt dann aus
der Konvergenz der y (t) → ωm :
(t) t→∞
Ay −→ kAωm k = kλωm k = λ
124
8.1. Die Potenzmethode
Algorithmus 8.1 (Potenzmethode)
Sei A ∈ Cn×n selbstadjundiert und seien alle Eigenwerte λi ≥ 0. Gegeben sei weiterhin ein Startvektor x(0) mit Ax(0) 6= 0. Dann konvergiert die Potenzmethode gegen den
größten Eigenwert, dessen zugehöriger Eigenvektor nicht orthogonal zu dem Startvektor ist. T OL ist hier wie üblich ein geeignetes Konvergenzkriterium, beispielsweise die
Änderung der Eigenwert-Approximation im aktuellen Schritt.
y (0) = x(0) / x(0) λ(0) = Ay (0) while !T OL do
y (t+1) = Ay (t) / Ay (t) λ(t+1) = Ay (t) end while
Für den Fall negativer Eigenwerte kann man die Potenzmethode auf A2 anwenden
um den beträgsmäßig größten Eigenwert zu finden. Wenn die |λj | in absteigender
Reihenfolge sortiert, ergibt sich analog zum vorherigen Fall:
Ax(0) 6= 0 ⇒ A2 x(0) 6= 0
x(2t) = A2t x(0) = (A2 )t x(0)
Aus Satz 8.1 folgt dann sofort für y (t) =
y (2t) → u
x(t)
kx(t) k
:
kuk = 1 A2 u = λ2 u
wobei λ der betragsmäßig größte Eigenwert ist. Weiterhin folgt daraus:
kAuk2 = hAu| Aui = u A2 u = λ2
⇒ kAuk = |λ|
Damit lässt sich nun zeigen, dass die Zwischenschritte y (2t+1) ebenfalls gegen normierte Eigenvektoren von A2 konvergieren:
Ay (2t)
Au
→
:= v
(2t)
kAy k
kAuk
Au
A2 u
λ2 u
A2 v = A2
=A
=A
kAuk
kAuk
kAuk
y (2t+1) =
= λ2 v
125
8. Eigenwertprobleme
Bemerkung. Die Potenzmethode ist identisch mit der Methode der sukzessiven Approximation (Satz 6.2) zur Bestimmung von Fixpunkten der Abbildung
g(y) =
Ay
kAyk
sukz. Approx. : y (t+1) = g(y (t) )
Fixpunkt von g(y) : g(y0 ) = y0
Ay0
⇔
= y0
kAy0 k
⇔ Ay0 = kAy0 k y0
Folglich ist y0 ein Eigenvektor von A und kAy0 k der dazugehörige Eigenwert.
8.2. Householder-Verfahren
Das Householder-Verfahren ist eine Ähnlichkeitstransformation, die eine gegebene
hermitesche Matrix A in Tridiagonalform bringt. Für diesen Spezialfall lässt sich die
Determinante auf einfache Weise rekursiv bestimmen. In der Praxis wird die Matrix
schrittweise durch Anwendung von Householder-Matrizen in die gewünschte Form
gebracht. Die eigentliche Ähnlichkeitstransformationsmatrix ist dann das Produkt
dieser Matrizen.
Definition 8.1 (Ähnlichkeitstransformation)
Die Transformation B := T −1 AT mit einer regulären Matrix T ∈ Cn×n wird als
Ähnlichkeitstransformation bezeichnet.
Satz 8.2 (Eigenwert-Invarianz bei Ähnlichkeitstransformationen)
Die Matrix B = T −1 AT besitzt dieselben Eigenwerte λi wie A und die Eigenvektoren
sind T −1 yi . Falls A hermitesch (A = A† ) und T unitär (T −1 = T † ) sind, ist B
ebenfalls hermitesch.
Beweis. Die Eigenwert-Problematik lässt sich als “charakteristische Polynom” formulieren.
Ay = λy
⇔
(A − λE)y = 0
(y 6= 0)
⇔ det(A − λE) = 0
Die Eigenwerte sind folglich die Nullstellen dieses Polynoms. Um zu zeigen, dass
die Eigenwerte identisch sind, reicht es also zu zeigen, dass die charakteristischen
Polynome gleich sind.
det(B − λE) = det(T −1 AT − λE)
126
8.2. Householder-Verfahren
= det(T −1 (A − λE)T )
= |det{z
T −1} · det(A − λE) ·
=1 (T unitär)
det
| {zT}
=1 (T unitär)
= det(A − λE)
Um die Eigenvektoren von B zu bestimmen, nehmen wir einen Eigenvektor y von A
und setzen ihn in die Behauptung ein.
B(T −1 y) = T −1 AT T −1 y = T −1 Ay
= λ(T −1 y)
Abschließend müssen wir noch zeigen, dass B hermitesch ist, falls A hermitesch ist
und T unitär.
B † = (T −1 AT )† = T † A† (T −1 )†
= T −1 AT = B
Um die Eigenwerte von A zu bestimmen, können wir folglich die Matrix mittels einer
Ähnlichkeitstransformation in eine einfacher auszuwertende Form bringen. Deswegen
wollen wir diese hermitesche Matrix nun in Tridiagonalform bringen:


0
δ1 γ2∗


...


γ
δ
2
2

A → B = T −1 AT = 


.. ..
∗
. γn 
.

0
γn δn
Um dieses Ziel zu erreichen, werden wir das Verfahren in n − 1 Iterationsschritte
aufteilen und in jedem Schritt eine Spalte und Zeile der Matrix in die gewünschte
Form bringen. In Gleichung 8.1 ist J (j−1) ∈ C j−1×j−1 der Teil von A, der im aktuellen
Iterationsschritt bereits die richtige Form hat und aj ist die Spalte, die im aktuellen
Schritt transformiert werden soll.


A(j−1)






=





J (j−1)
c
0
c†
δj
a†j
0
aj
Ã(j)












(8.1)
127
8. Eigenwertprobleme




mit: 


J (j−1)
c†

0

 
...

c 
 =  γ2 δ2
 
.. ..
.
. γj∗
 
δj
0
γj δj





δ1
γ2∗
Um unserem Ziel einen Schritt näher zu kommen, brauchen wir also eine Transformation, die den Vektor aj auf seine erste Achse transformiert. Die Lösung für dieses
Problem sind die “Householder-Matrizen”.
Definition 8.2 (Householder-Matrix)
Eine Matrix T := E − 2uu† mit einem u ∈ Cn , kuk = 1 wird als Householder-Matrix
bezeichnet.
Satz 8.3 (Eigenschaften von Householder-Matrizen)
Eine Householder-Matrix T := E − 2uu† ist unabhängig von der Wahl des normierten
Vektors u hermitesch und unitär.
Beweis.
T T = (E − 2uu† )(E − 2uu† )
= E 2 + 4u |{z}
u† u u† − 4uu†
=kuk2 =1
= E + 4uu† − 4uu† = E
⇒ T −1 = T
T † = E − (2uu† )†
= E − 2(u† )† u†
= E − 2uu† = T
⇒ T † = T = T −1
Um zu sehen, wie diese Matrizen eine Hilfe bei der gesuchten Transformation sein
können, betrachten wir zunächst die Wirkung auf einen beliebigen Vektor x ∈ Cn , den
wir in einen einen zu u parallelen Anteil xk und den orthogonalen Rest x⊥ aufteilen:
x† u = xk x = xk + x⊥
x† u = 0
⊥
⇒ T x = (E − 2uu† )(xk + x⊥ )
= xk + x⊥ − 2 u xk | {z }
=xk
128
k
8.2. Householder-Verfahren
= x⊥ − xk
Die erfolgte “Spiegelung” des zu u parallelen Anteils von x zeigt, dass die Wirkung
von T einer Spiegelung des Vektors an der zu u orthogonalen Hyperebene entspricht.
Durch eine passende Wahl von u können wir x auf die erste Achse transformieren
und so unser ursprüngliches Problem der Tridiagonalisierung lösen.
Gesucht ist also ein u, sodass T x = kê1 mit einem k ∈ C gilt. Zuerst leiten wir einen
Zusammenhang zwischen k und x her, und überzeugen uns mithilfe der Eigenschaften
hermitescher Matrizen und des komplexen Skalarprodukts davon, dass hx| T xi eine
relle Größe ist.
kT xk2 = hT x| T xi = x T 2 x = hx| xi = kxk2
⇒ k 2 ke1 k2 = k 2 = kxk2
⇒ |k| = kxk
hx| T xi = hxT | xi = (hx| T xi)∗
⇒ hx| T xi = hx| kê1 i ∈ R
Schreiben wir die erste Komponente von x nun in Polarkoordinaten x1 = |x1 | eiα , so
können wir mithilfe der eben gezeigten Eigenschaft von hx| T xi das k bestimmen:
!
k hx| ê1 i = k |x1 | e−iα = (k hx| ê1 i)∗
⇒ k |x1 | e−iα = k ∗ |x1 | eiα
k 2 = |k|2 e2iα
⇒ k = ± |k| eiα = ± kxk eiα
Welches Vorzeichen die sinnvollere Wahl ist, lässt sich hier noch nicht erkennen, weswegen wir vorerst beide Vorzeichen-Möglichiekten berücksichtigen. Schauen wir uns
nun die Wirkung von T etwas genauer an, können wir erste Informationen darüber
gewinnen, wie u aussehen muss:
!
T x = (E − 2uu† )x = x − 2u(u† x) = kê1
⇒ x − kê1 = 2u hu| xi
x − kê1
⇒u=
2 hu| xi
Da u nach Vorraussetzung ein normalisierter Vektor ist, folgt daraus noch:
u=
x − kê1
kx − kê1 k
129
8. Eigenwertprobleme
⇒ kx − kê1 k = 2 hu| xi
Betrachtet man nun das Betragsquadrat des Normalisierungsfaktors von u, ergibt sich
welche der beiden Vorzeichenwahlen für k die sinnvollere ist.
kx − kê1 k2 = x ∓ kxk eiα ê1 n
X
iα 2
+
|xj |2
= x1 ∓ kxk e
j=2
= |x1 | eiα ∓ kxk eiα + . . .
= |x1 | ∓ kxk + . . .
In diesem Term kann die Wahl des Pluszeichens bei der Definition von k zu numerischen Auslöschungen führen, diese Gefahr besteht bei der Wahl des Minuszeichens
jedoch nicht. Daher wählt man k = − kxk eiα . Aus dieser Wahl folgt dann:
2
|x1 − k|2 = |x1 | + kxk = kxk2 + 2 kxk · |x1 | + |x1 |2
n
X
⇒ kx − kê1 k2 = |x1 − k|2 +
|xj |2
j=2
= kxk2 + 2 kxk · |x1 | +
n
X
|xj |2
j=1
2
= 2 kxk + 2 kxk · |x1 |
Nun könnten wir aus diesem Ausdruck die Wurzel ziehen um unseren Skalierungsfaktor für u zu gewinnen. Alternativ dazu können wir aber auch direkt 2uu† betrachten,
welches wir für die Konstruktion von T brauchen.
x − kê1
kx − kê1 k
(x − kê1 )(x − kê1 )†
⇒ 2uu† = 2
kx − kê1 k2
1
=
· (x + kxk eiα ê1 ) · (x + kxk eiα ê1 )†
kxk (kxk + |x1 |)
u=
(8.2)
Somit haben wir nun eine Householder-Matrix konstruiert, die einen Vektor auf die
erste Achse transformiert, und können uns wieder dem Ausgangsproblem aus Gleichung 8.1 widmen. Suchen wir u nun so aus, dass T̃ (j) aj = kê1 gilt, können wir damit
130
8.2. Householder-Verfahren
eine Transformationsmatrix für A(j−1) definieren.


T (j)






=





E
0
0
0
1
0
0
0
T̃ (j)






 = (T (j) )−1





(8.3)

(T (j) )−1 A(j−1) T (j) = A(j)






=






J (j−1)
c
0
c†
δj
a†j T̃ (j)
0
T̃ (j) aj
T̃ (j) Ã(j) T̃ (j)












Aufgrund der Konstruktion von T haben wir mit dieser Transformation nun auch die
j-te Zeile und Spalte in Form einer Tridiagonalmatrix gebracht. Nun kann man das
Verfahren so oft wiederholen, bis die komplette Matrix tridiagonal ist. Sobald dies
geschehen ist, lässt sich das charakteristische Polynom relativ einfach bestimmen
und aus diesem dann mit geeigneten Algorithmen (siehe Kapitel 6) die Eigenwerte
errechnen.


0
δ1 − µ
γ2∗


...

 γ2
δ
−
µ
2

ϕ(µ) := det 


..
..
.
.

γn∗ 
0
γn δn − µ
Diese Determinante kann man nun durch Entwicklung nach der letzten Spalte rekursiv
berechnen:


δ1 − µ
γ2∗
0


.
 γ2

δ2 − µ . .


ϕi (µ) := det 

..
..
∗
.
.

γi 
0
γi δi − µ
= (δi − µ) · ϕi−1 (µ) − γi∗ γi · ϕi−2 (µ)
131
8. Eigenwertprobleme
Algorithmus 8.2 (Householder-Verfahren)
Gegeben sei eine hermitesche Matrix A, deren Eigenwerte bestimmt werden sollen.
Die verwendete Notation für die Matrixelemente ist in Gleichung 8.1 zu finden.
A(0) = A
ϕ0 (µ) = 1
ϕ−1 (µ) = 0
for j = 1, 2 . . . n − 1 do
bestimme T (j) gemäß Gleichung 8.3 und Gleichung 8.2
A(j) = T (j) A(j−1) T (j)
ϕj (µ) = (δj − µ) · ϕj−1 (µ) − γi∗ γj · ϕj−2 (µ)
end for
ϕn (µ) = (δn − µ) · ϕn−1 (µ) − γn∗ γn · ϕn−2 (µ)
bestimme die Nullstellen von ϕn (µ) um die Eigenwerte zu erhalten
Hat man die Eigenwerte schließlich gefunden, lassen sich auch noch die Eigenvektoren
bestimmen. Hierzu setzt man die nun bekannten Eigenwerte in das ursprüngliches
LGS (A − µE)x = 0 ein und erhält so das LGS:
(A − λi )yi = 0
Der Lösungsvektor von diesem LGS ist dann der zu dem Eigenwert gehörende Eigenvektor.
132
9. Matrix-Inversion
Die Inversion von Matrizen ist ein Problem in der Numerik, das man meist versucht
zu umgehen, da die diese Berechnungen schnell sehr teuer werden (kubisch skalierende
Laufzeit). Lineare Gleichungssysteme löst man lieber mit intelligent gewählten Transformationen (siehe Gaußsches Eliminationsverfahren) oder Zerlegungen der Matrix,
wie der QR-Zerlegung, die im folgenden vorgestellt werden soll. Außerdem wollen
wir uns anschauen, wie diese Algorithmen erweitert werden können um damit im
Bedarfsfall auch Inversen zu bestimmen.
9.1. Matrix-Inversion mit Gauß-Elimination
In Kapitel 2 haben wir gezeigt, dass wir das Gauß-Eliminationsverfahren (Algorithmus 2.1) nutzen können um das lineare Gleichungssystem Ax = b mit einer regulären
Matrix A zu lösen. Da A nach Voraussetzung regulär ist, muss also eine Inverse A−1
existieren, die die Bedingung
A−1 A = AA−1 = E
erfüllt. Dieses Gleichungssystem können wir durch eine spaltenweise Betrachtung auch
als ein System von n Gleichungen der Form
AA−1
i = êi
∀ i = 1, 2 . . . n
schreiben. Diese Systeme sind aufgrund der Regularität von A eindeutig lösbar und
wir wissen bereits wie wir diese Systeme direkt lösen können. Durch die Anwendung der Gauß-Elimination auf jedes dieser Systeme ergibt sich dann sofort der
Invertierungs-Algorithmus. Der nötige Rechenaufwand lässt sich reduzieren, indem
die für die das erste System bestimmte Transformation S (siehe Gleichung 2.2 und
2.3) wiederverwendet wird. Auf diese Weise lassen sich die folgenden n−1 Systeme auf
eine quadratisch skalierende Matrix-Matrix-Multiplikation als teuerste Komponente
133
9. Matrix-Inversion
reduzieren. Folglich skaliert dieses Verfahren dann immernoch mit n3 , statt mit n4 wie
man es erwarten würde, wenn man jedes LGS alleine löst. Mit dieser Transformation
ergibt sich die zu lösende Matrixgleichung als:
SAA−1 = SE
SAA−1
i = Si
∀ i = 1, 2 . . . n
Algorithmus 9.1 (Matrix-Inversion mit Gauß)
Gegeben sei eine reguläre Matrix A ∈ Cn×n und die kartesischen Einheitsvektoren êi
des Cn . Dann lässt sich die Inverse A−1 mit AA−1 = E wie folgt berechnen:
löse Ax = ê1 mit Gauß-Elimination um Dreieckstransformation S zu erhalten
A1−1 = x
B = SA
for j = 2, 3, . . . n do
for i = n, n − 1, . . . 1 do
P
xi = si,j − nk=i+1 bi,k xk /bi,i
end for
A−1
j = x
end for
Dieses Inversionsverfahren hat natürlich auch die Problematik der Fehlerfortpflanzung, die die Gauß-Elimination in großen Systemen aufweist. Deswegen sollte dieses
Verfahren nur bei kleinen Matrizen eingesetzt werden und gegenenfalls die einzelnen
Schritte mit Nachiterationen (siehe Abschnitt 2.2) korrigiert werden.
9.2. QR-Zerlegung und Matrixinversion
Eine andere Möglichkeit zur Matrixinversion ist die QR-Zerlegung, bei der eine gegebene Matrix durch unitäre Transformationen in eine obere Dreiecksmatrix überführt
wird. Das resultierende Produkt aus Transformationsmatrix und Dreiecksmatrix ist
dann ein Spezialfall, der sich einfach invertieren lässt.




a1,1 a1,2 . . . a1,n
r1,1 r1,2 . . . r1,n




 a2,1 a2,2 . . . a2,n 

r2,2 . . . r2,n 

A=
..
.. 
.. 
...
...
 −→ QR = Q 

 ..
.
. 
. 
 .

an,1 an,2 . . . an,n
0
rn,n
134
9.2. QR-Zerlegung und Matrixinversion
Für die Transformation können die im vorherigen Kapitel eingeführten HouseholderMatrizen T benutzt werden, mit denen wir in der Lage sind Vektoren auf ihre erste
Komponente zu transformieren. Weil wir mit jeder Anwendung einer HouseholderMatrix nur einen Vektor auf seine erste Komponente transformieren können, müssen
wir ein iteratives Verfahren konstruieren, bei dem in jedem Schritt eine Spalte der
Matrix A in die richtige Form gebracht wird. Angenommen, die ersten j Spalten sind
bereits in die richtige Form gebracht, dann sieht unser Problem wie folgt aus:


r1,1 r1,2 . . . r1,j
b1,j+1 b1,j+2 . . . b1n


r2,2 . . . r2,j
b2,j+1 b2,j+2 . . . b2n




..
..
..
..
..
..


. .
. .
.
.


! 

 0

r
b
b
.
.
.
b
R B
j,j
j,j+1
j,j+2
j,n
(j)


=
A =
(j)
(j)
(j)

0 Ã(j)
ãj+1,j+1 ãj+1,j+2 . . . ãj+1,n 




(j)
(j)
(j)

ãj+2,j+1 ãj+2,j+2 . . . ãj+2,n 


0
..
..
..
..


.
.
.
.


(j)
ãn,j+1
(j)
ãn,j+2
...
(j)
ãn,n
Um dem Ziel einen Schritt näher zu kommen ist es nun also notwendig die erste Spalte von Ã(j) zu transformieren. Wie die Transformationsmatrix T̃ j ∈ Cn−j×n−j konstruiert werden muss, haben wir im vorherigen Kapitel (siehe Gleichung 8.2) bereits
besprochen. Daraus ergibt sich dann sofort die Transformation T (j) für die gesamte
Matrix:
!
E
0
T (j) =
0 T̃ (j)


r1,1 r1,2 . . . r1,j
b1,j+1 b1,j+2 . . . b1n


r2,2 . . . r2,j
b2,j+1 b2,j+2 . . . b2n




.
.
.
.
.
.


. . ..
..
..
. . ..




 0

r
b
b
.
.
.
b
j,j
j,j+1
j,j+2
j,n
(j) (j)
(j)

T A =A =
(j+1)
(j+1)
(j+1)

ãj+1,j+1 ãj+1,j+2 . . . ãj+1,n 



(j+1)
(j+1) 

0
ãj+2,j+2 . . . ãj+2,n 


0
..
..
..
..


.
.
.
.


0
(j+1)
ãn,j+2
(j+1)
. . . ãn,n
Nach diesem Schritt erfüllt die Spalte j + 1 nun ebenfalls die Bedingungen für eine
obere Dreiecksmatrix und wir können dieses Schema wiederholen, bis alle Spalten in
die richtige Form gebracht worden sind.
(n−2) (n−3)
R := A(n−1) = T
T {z . . . T (0)} A(0)
|
:=Q−1
135
9. Matrix-Inversion
Da jedes der verwendeten T (j) eine unitäre Matrix ist, ist die Gesamttransformation
Q ebenfalls unitär.
−1
−1 (1) −1
−1
. . . T (n−2)
T
= T (0)
Q = T (n−2) T (n−3) . . . T (0)
†
†
†
†
= T (0) T (1) . . . T (n−2) = Q−1
⇒ Q† = Q−1
Aufgrund der einfachen Inversion von Q ist die QR-Zerlegung gut geeignet für die
Lösung von linearen Gleichungssystemen.
Ax = b → QRx = b
⇒ Rx = Q† b
Da R eine Dreiecksmatrix ist, können wir dieses System analog zur Gauß-Elimination
sofort gemäß der Vorschrift aus Gleichung 2.1 lösen. Durch Ausnutzung der speziellen Eigenschaften, die Q als unitäre Matrix hat, lässt sich die QR-Zerlegung noch
deutlich vereinfachen und die explizite Berechnung der zur Herleitung verwendeten
Householder-Matrizen vermeiden.
Satz 9.1 (Iterationsvorschrift für QR-Zerlegung)
Gegeben sei eine Matrix A ∈ Cn×n , dann lässt sich die QR-Zerlegung A = QR in eine
unitäre Matrix Q und eine obere Dreiecksmatrix R mit folgender Iteration berechnen:
Q̃k = Ak −
k−1
X
Qi · ri,k
(9.1a)
i=1
rj,k = hQj | Ak i
∀j < k
1
rk,k = Q̃k Qk =
Q̃k
rk,k
(9.1b)
(9.1c)
Beweis. Zuerst folgt aus A = QR:
Ak =
k
X
Qi · ri,k
[ri,k = 0 ∀ i > k]
i=1
Die k-te Spalte von A ist also eine Linearkombination der ersten k Spalten von Q.
Im Umkehrschluss muss dann auch Qk eine Linearkombination der ersten k Spalten
von A sein. Mit der Definition Q̃k := rk,k Qk folgt daraus Gleichung 9.1a.
136
9.2. QR-Zerlegung und Matrixinversion
Für die Berechnung der Elemente von R (Gleichung 9.1b und 9.1c) benötigt man die
Eigenschaft von unitären Matrizen, dass ihre Spalten zueinander orthonormal26 sind.
D E
hQj | Qk i = δj,k ⇒ Qj Q̃k = 0
∀j < k
0 = hQj | Ak i −
k−1
X
i=1
hQj | Qi i ri,k
| {z }
=δi,j
⇒ rj,k = hQj | Ak i
hQk | Qk i = 1
D
1=
⇒ rk,k
E
Q̃k Q̃k
r2
k,k
= Q̃k =
2
Q̃k 2
rk,k
Mit Hilfe dieser Rekursionsvorschrift können wir nun die QR-Zerlegung als Algorithmus zur Lösung von linearen Gleichungssystemem formulieren und basierend darauf
auch eine erweitere Version zur Inversion von Matrizen.
Algorithmus 9.2 (QR-Zerlegung für LGS)
Gegeben sei ein lineares Gleichungsystem Ax = b mit A ∈ Cn×n und b ∈ Cn . Durch
eine QR-Zerlegung von A = QR mit unitärem Q und einer oberen Dreiecksmatrix R
lässt sich dieses LGS mit folgenden Algorithmus lösen:
for k = 1, 2 . . . n do
P
Q̃k = Ak − k−1
i=1 Qi · ri,k
for i = 1, 2 . . . k − 1 do
rj,k = hQj | Ak i
end for
rk,k = Q̃k Qk = Q̃k /rk,k
end for
c = Q† b
for k = n, n − 1 . . . 1 do
P
xk = ck − ni=k+1 rk,i xi /rk,k
end for
26
Aus Q−1 = Q† ergibt sich Q† Q = E und damit die Bedingung Q†k Qj = δk,j .
137
9. Matrix-Inversion
Erinnern wir uns nun daran, wie wir das Gauß’sche Eliminationsverfahren zu einem
Matrixinversionsverfahren erweitert haben. Aus der Bedingung AA−1 = E haben
wir die spaltenweise Bedingung AA−1
= êi hergeleitet. Nach der Bestimmung der
i
QR-Zerlegung von A erhalten wir damit die Matrixgleichung:
QRA−1 = E
⇒ RA−1 = Q†
†
⇒ RA−1
i = Qi
∀ i = 1, 2 . . . n
Mithilfe der QR-Zerlegung bringen wir die Inversengleichung also in eine einfach berechenbare Form, da diese Gleichung nun für jede Spalte ohne weitere Umformungen
lösbar ist.
Algorithmus 9.3 (QR-Zerlegung für Matrixinversion)
Gegeben sei eine reguläre Matrix A ∈ Cn×n . Die Inverse A−1 lässt sich mit folgendem
Algorithmus berechnen:
for k = 1, 2 . . . n do
P
Q̃k = Ak − k−1
i=1 Qi · ri,k
for i = 1, 2 . . . k − 1 do
rj,k = hQj | Ak i
end for
rk,k = Q̃k Qk = Q̃k /rk,k
end for
for k = 1, 2 . . . n do
for i = n,
. . 1 do
i
h n − 1 .P
†
−1
ai,k = Qi,k − nj=i+1 ri,j a−1
i,k /ri,i
end for
end for
Bemerkung. Bei der QR-Zerlegung handelt es sich im Wesentlichen um eine GramSchmidt-Orthonormalisierung der Spalten von A. Die Spalten von Q sind nichts anderes als die orthonormalisierten Spaltenvektoren von A.
138
10. Lineare Regression
In der Physik begegnet man oft Zusammenhängen, die sich zumindest lokal als linear
voneinander abhängige Größen beschreiben lassen.
s = αt + β
Hierbei sind s und t die (Mess)Größen, α, β ∈ R sind die dazugehörigen Koeffizienten.
Eine in einem Experiment gewonnene Messreihe mit den Datenpaaren {(ti , si )} , i =
1, 2 . . . m wird in der Praxis allerdings nie exakt diesem Idealverlauf folgen, sondern,
bedingt durch Messfehler, um diesen herum verteilt sein.
25
25
Messdaten
15
10
5
0
Messdaten
lineare Regression
20
s, si
s, si
20
15
10
5
0
5
10
t, ti
15
20
(a) Messwerte mit einem linearen Zusammenhang
0
0
5
10
t, ti
15
20
(b) dieselben Messwerte mit einer linearen Regression
Abbildung 10.1.: Beispiel-Verteilung von linear zusammenhängenden Messwerten (10.1a) und dieselbe Verteilung mit der Regressionsgerade (10.1b).
Gesucht ist nun also ein Verfahren um die beiden Parameter α, β “optimal” aus den
Messdaten zu bestimmen. Hierzu minimiert man meistens die quadratischen Abweichungen von der Fitfunktion s(ti ):
2
∆ =
=
m
X
i=1
m
X
(si − s(ti ))2
(si − (αti + β))2
i=1
139
10. Lineare Regression
Alternativ dazu können wir unser Regressionsproblem auch als ein lineares Gleichungssystem Ax = b schreiben:




t1 1
s1
!




 t2 1 
 s2 
α



A := 
 .. ..  b :=  ..  x := β
.
.
.




tm 1
sm
Daraus ergibt sich dann ∆2 = kAx − bk2 . Gesucht ist als das x, welches diesen Ausdruck minimiert. In der Praxis wird dieses Gleichungssystem überbestimmt und damit
nicht lösbar sein. Daher kann man im Allgemeinen davon ausgehen, dass ∆2 > 0 gilt.
Zuerst stellt sich die Frage, ob dieses Minimierungsproblem überhaupt eine eindeutige Lösung hat, da das LGS selbst keine Lösung hat. Um diese Frage zu beantworten,
schauen wir uns nochmal die orthogonalen Projektoren P und Q an, die wir zuvor
für die Gram-Schmidt-Orthonormalisierung verwendet haben. Zur Erinnerung:
P x :=
k
X
hωi | xi ωi
i=1
Qx := (E − P )x = x −
k
X
hωi | xi ωi
i=1
Hierbei sind die ωi die orthonormalen Basisvektoren des k-dimensionalen Unterraums
in den, bzw. in dessen orthogonales Komplement, wir projizieren.
Definition 10.1 (Abstand eines Vektors von einem Unterraum)
Sei M ein Unterraum von Rm . Für einen beliebigen Vektor u ∈ Rm nennt man
|u, M | := min ku − xk
x∈M
den Abstand des Vektors u zu M .
Abbildung 10.2.: Veranschaulichung der Abstands-Definition im R3 mit M = R2 . Das x ∈ M , das die
Abstandsdefinition erfüllt, beschreibt mit u − x die kürzeste Verbindung zwischen
u und M .
140
Satz 10.1 (Eigenschaften des Abstandes)
Sei P die orthogonale Projektion von u auf M ⊂ Rm und Q = E − P . Dann ist
|u, M | = kQuk und das x ∈ M , welches zu diesem Minimum gehört, ist eindeutig
bestimmt.
Beweis. Sei v ∈ Rm beliebig, dann ist:
kvk2 = hv| vi = hP v + Qv| P v + Qvi
= hP v| P vi + hQv| Qvi
= kP vk2 + kQvk2
Schreiben wir nun u − x = v mit u ∈ Rm und x ∈ M (daraus folgt P x = x, Qx = 0),
so erhalten wir:
ku − xk2 = kP u − xk2 + kQuk2
Weil kQuk unabhängig von der Wahl von x ∈ M ist, reduziert sich das Minimierungsproblem auf:
min ku − xk = min kP u − xk
x∈M
x∈M
Die Lösung ist offensichtlich x = P u und ergibt |u, M | = kQuk.
Kommen wir nun wieder zurück zu zu unserem ursprünglichen Problem, das wir
noch etwas verallgemeinern wollen (lineare Zusammenhänge zwischen beliebig vielen
Größen): Zu einer gegebenen Matrix A ∈ Rm×n und einem gegebenen Vektor b ∈ Rm
suchen wir einen Vektor y (min) ∈ Rn mit der Eigenschaft
minn kAy − bk = Ay (min) − b
y∈R
Satz 10.2 (Lösbarkeit und Eindeutigkeit der linearen Regression)
Für ein A ∈ Rm×n , b ∈ Rn , M := {x : x = Ay, y ∈ Rn } ⊂ Rm gilt:
1. Es gibt genau ein x(min) ∈ M mit
(min)
x
− b = minn kAy − bk
y∈R
x
min
= Pb
wobei P der orthogonale Projektor auf M ist.
141
10. Lineare Regression
2. Außerdem kann man das Problem in ein Gleichungssystem umformen:
n
X
(min)
(min)
Ay
hAk | Aj i yj
− b = minn kAy − bk ⇔ hAk | bi =
y∈R
∀ k = 1, 2 . . . n
j=1
Dieses Gleichungssystem mit den Spaltenvektoren Ak von A ist immer lösbar.
3. Sind die Spalten der Matrix A linear unabhängig27 , dann ist das Gleichungssystem aus der vorherigen Behauptung eindeutig lösbar.
4. Bestimmt man zu den linear unabhängigen Spaltenvektoren {A1 , A2 . . . An } mit
der Gram-Schmidt-Orthogonalisierung das Orthogonalsystem {v1 , v2 . . . vn } und
das Orthonormalsystem {ω1 , ω2 . . . ωn }, dann sind die Lösungen des Ausgleichsproblems gegeben durch die Rekursion:
yn(min) =
(min)
yk<n =
1
hωn | bi
kvn k
1
kvk k
n
X
hωk | bi −
!
(min)
yj
hωk | Aj i
j=k+1
Beweis. Behauptung 1 ergibt sich sofort aus Satz 10.1.
Behauptung 2:


a1,1 y1 + a1,2 y2 + . . . + a1,n yn


..
Ay = 

.
am,1 y1 + am,2 y2 + . . . + am,n yn
=
n
X
yi Ai
⇒ M = span {A1 , A2 . . . An }
i=1
Aus der Behauptung 1 wissen wir auch bereits, dass gilt:
(min)
Ay
− b = minn kAy − bk = x(min) − b
y∈R
⇒ Ay
(min)
= x(min) = P b
= (E − Q)b = b − Qb
Da Qb ∈ M ⊥ ist, muss es orthogonal zu allen Ak sein, daraus wiederum folgt, dass
Ay min − b = −Qb ebenfalls senkrecht zu allen Ak sein muss.
0 = Ak Ay (min) − b
∀ k = 1, 2 . . . n
27
Dies setzt m ≥ n voraus, was in der Praxis aber meistens erfüllt ist, da m der Anzahl an Datenpunkten entspricht und n die Anzahl der Parameter.
142
n
+
X
(min)
yi
Ai − b
Ak *
=
i=1
=
n
X
(min)
hAk | Ai i yi
− hAk | bi
i=1
Damit haben wir das Gleichungssystem aus der Behauptung und müssen uns nun nur
noch über die Lösbarkeit Gedanken machen. Hierzu betrachten wir nochmal Ay (min) =
P b. Da wir wissen, dass P b ∈ M gilt und M von den Spalten von A aufgespannt wird,
folgt daraus:
Pb =
n
X
yi A j
j=1
= Ay
(min)
=
n
X
yi A i
i=1
Folglich muss es also eine Lösung für Ay (min) = P b und damit auch für das Gleichungssystem, das wir daraus gewonnen haben, geben. Allerdings ist damit noch
nicht garantiert, dass y (min) hierdurch eindeutig bestimmt ist.
Behauptung 3: Für den Eindeutigkeitsbeweis nehmen wir an, dass es noch ein zweites
ỹ (min) mit Aỹ (min) = P b gibt.
Ay (min) − Aỹ (min) = P b − P b = 0
⇒ 0 = A(y (min) − ỹ (min) )
n
X
(min)
(min)
=
Aj (yj
− ỹj
)
j=1
(min)
(min)
Da nach Voraussetzung alle Aj linear unabhängig sind, muss yj
− ỹj
= 0 für
alle Komponenten sein.
Behauptung 4: Wir wissen bereits, dass Qb = b − Ay (min) ⊥ Aj ∀ j = 1, 2 . . . n ist.
Wenn wir die Gram-Schmidt-Orthonormalisierung auf die Spalten von A anwenden,
erhalten wir ein Orthonormalsystem {ω1 , ω2 . . . ωn }. Dieses spannt denselben Unterraum des Rm auf, wie die Spalten von A, woraus sowohl Qb ⊥ ωj ∀ j = 1, 2 . . . n als
auch ωk ⊥ Aj ∀ j < k folgen.
Qb = b − Ay (min) ⊥ ωk ⇒ 0 = ωk b − Ay (min)
∀ k = 1, 2 . . . n
n
X
(min)
0 = hωk | bi −
hωk | Aj i yj
j=1
143
10. Lineare Regression
Für k = n erhalten wir dann
0 = hωn | bi −
n−1
X
j=1
⇒ yn(min) =
(min)
hωn | Aj i yj
| {z }
− hωn | An i yn(min)
=0
hωn | bi
hωn | An i
und analog für k < n:
0 = hωk | bi −
k−1
X
j=1
(min)
hωk | Aj i yj
−
(min)
hωk | Ak i yk
| {z }
⇒
(min)
hωk | Aj i yj
j=k+1
=0
"
(min)
yk
−
n
X
n
X
1
(min)
hωk | bi −
hωk | Aj i yj
=
hωk | Ak i
j=k+1
#
Um nun die Rekursionsvorschrift zu beweisen, müssen wir nur noch zeigen, dass
kvk k = hωk | Ak i gilt. Hierzu betrachten wir das Orthogonalsystem {v1 , v2 . . . vn },
welches aus der Gram-Schmidt-Orthogonalisierung gewonnen wurde.
vk = Ak −
k−1
X
hωj | Ak i ωj
j=1
⇒ hωk | vk i = hωk | Ak i −
k−1
X
j=1
hωj | Ak i hωk | ωj i
| {z }
=0 da j<k
hωk | vk i = hωk | Ak i
ωk =
hvk | vk i
vk
⇒
= hωk | Ak i
kvk k
kvk k
⇒ kvk k = hωk | Ak i
Setzt man dies nun in die vorherigen Formeln ein, so ergibt sich die zu beweisende
Rekursionsformel.
Mit diesem Existenz- und Eindeutigkeitsbeweis in Kombination mit einer Rekursionvorschrift können wir nun auch einen Algorithmus zur Lösung des linearen Ausgleichproblems formulieren.
Algorithmus 10.1 (Lineare Regression)
Gegeben seien n verschiedene Messgrößen s(i) , von denen m Messwerte der Form
n
o
(1) (2)
(n)
(sj , sj . . . sj
vorliegen. Die optimalen Koeffizienten28 α(i) (minimale Summe
28
Hierbei ist zu berücksichtigen, dass α(n) nicht zur Messgröße s(n) gehört, sondern der kostante
Term in der Regressionsfunktion ist.
144
der quadratischen Abweichungen) für den linearen Zusammenhang
s(n) =
n−1
X
α(i) s(i) + α(n)
i=1
lassen sich durch Definition der Matrix A ∈ Rm×n und des Vektors b ∈ Rm mit
folgender Rekursion berechnen:
for i = 1, 2 . . . m do
for j = 1, 2 . . . n − 1 do
(j)
ai,j = si
end for
ai,n = 1
(n)
b i = si
end for
for i = 1, 2 . . . n do
P
vi = Ak − i−1
j=1 hωj | Ak i ωj
ωi = vi / kvi k
end for
for i = n,
1 do
n − 1 . . .P
(i)
α = hωi | bi − nj=i+1 α(j) hωi | Aj i / kvi k
end for
Für den einfachen Fall einer gleichförmigen Bewegung vom Anfang des Kapitels wollen
wir noch ein paar interessante Eigenschaften der Regression demonstrieren. Gegeben
war ein Zusammenhang s = αt + β für den wir ein y (min) = (α, β)T derart gefunden
hatten, dass gilt:
minn kAy − bk = Ay (min) − b
y∈R
Aus den Eigenschaften eines Minimums und der Positivität der Norm können wir
sofort schlussfolgern:
d
2
kAy − bk
=0
∀ k = 1, 2 . . . n
dyk
y=y (min)
In der euklidischen Norm ergibt sich daraus:

!2 
m
n
X
X
d 
0=
ai,j yj − bi 
dyk i=1 j=1
y (min)
145
10. Lineare Regression
=2
m
n
X
X
i=1
=
!
(min)
ai,j yj
− bi
n
X
·
j=1
m
X
n
X
i=1
j=1
!
ai,j δj,k
j=1
!
(min)
ai,j yj
− bi
· ai,k
∀ k = 1, 2 . . . n
(10.1)
Was bedeutet dieses Ergebnis nun in der Praxis? Um diese Frage zu beantworten,
betrachten wir zuerst den Fall k = n und übertragen die allgemeine Formulierung der
Anschaulichkeit halber auf unser Beispiel.
m
X
⇒
i=1
m
X
bi =
si =
i=1
m X
n
X
(min)
ai,j yj
i=1 j=1
m
X
s(ti ) = s̄ · m
i=1
Die Mittelwerte der Mess- und Fitdaten sind also identisch. Und für k < n ergibt sich
außerdem noch:
m
X
bi ai,k =
i=1
m
X
⇒
si ti =
m X
n
X
(min)
ai,k ai,j yj
i=1 j=1
m
X
i=1
ti s(ti )
i=1
Die ersten Momente der Mess- und Fitdaten stimmen also ebenfalls überein.
Für einen perfekten Fit würde si = s(ti ) ∀ i = 1, 2 . . . m gelten und damit ∆2 = 0
sein. In der Praxis wird dies jedoch nie auftreten und ∆2 , auch bekannt als Varianz der
Residuen kann als Maß für die Güte der Regression verwendet werden. Ein weiteres
Maß für die Güte ist das sogenannte “Bestimmtheitsmaß” R2 .
Ausgehend von der Gesamtvarianz der Messwerte
σ2 =
m
X
m
bi − b̄
2
mit b̄ =
i=1
=
=
m
X
1 X
bi
m i=1
bi − (Ay (min) )i + (Ay (min) )i − b̄
i=1
m h
X
bi − (Ay (min) )i
2
2
+ (Ay (min) )i − b̄
2
i=1
i
+ 2 bi − (Ay (min) )i · (Ay (min) )i − b̄
146
= ∆2 + σf2it + 2
m
X
bi −
i=1
−2
i=1
|
bi −
!
(min)
ai,j yj
j=1
=0 ∀ k wegen 10.1
n
X
n
X
(min)
ai,k yk
k=1
{z
|
m
X
n
X
}
!
(min)
b̄
ai,j yj
j=1
{z
=0 wegen 10.1
}
= ∆2 + σf2it
definiert man das Bestimmtheitsmaß als:
σf2it
∆2
R := 2 = 1 − 2
σ
σ
2
Dieses wird sehr oft als Qualitätsangabe des Fits verwendet und gibt an, welcher
Anteil der Varianz der Messwerte durch die Varianz der Regression erklärt werden
kann.



kein linearer Zusammenhang

0
R2 =
∈ (0, 1) teilweise linearer Zusammenhang



1
perfekt linearer Zusammenhang
Das Bestimmtheitsmaß ist allerdings nur eine Angabe, wie gut der Fit-Prozess ist,
aber keine Prüfung ob tatsächlich ein linearer Zusammenhang vorliegt. Umgekehrt
bedeutet ein schlechtes R2 nicht zwangsläufig, dass die Messgrößen unkorreliert sind,
sondern nur, dass keine lineare Abhängigkeit zwischen den Werten besteht.
147
A. Anhang
A.1. Liste der Algorithmen
2.1. Gauß-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.2. Jacobi-Iteration (Gesamtschrittverfahren) . . . . . . . . . . . . . . . . .
34
2.3. Gauß-Seidel-Iteration (Einzelschrittverfahren) . . . . . . . . . . . . . . .
35
3.1. Neville-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.2. Dividierte Differenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.3. Kubische Spline-Interpolation . . . . . . . . . . . . . . . . . . . . . . . .
58
3.4. Trigonometrische Interpolation . . . . . . . . . . . . . . . . . . . . . . .
62
4.1. Diskrete Fouriertransformation . . . . . . . . . . . . . . . . . . . . . . .
65
4.2. FFT für 2n Stützstellen . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.1. Summierte Quadratur . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
5.2. Gauß-Integration mit Legendre-Polynomen . . . . . . . . . . . . . . . . .
90
6.1. Intervallhalbierungsverfahren . . . . . . . . . . . . . . . . . . . . . . . .
99
6.2. Fixpunkt-Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.3. Newton-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.1. Steepest Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.2. Conjugate Gradients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.1. Potenzmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.2. Householder-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
149
A. Anhang
9.1. Matrix-Inversion mit Gauß . . . . . . . . . . . . . . . . . . . . . . . . . . 134
9.2. QR-Zerlegung für LGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
9.3. QR-Zerlegung für Matrixinversion . . . . . . . . . . . . . . . . . . . . . . 138
10.1. Lineare Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
A.2. Liste der Definitionen
1.1. Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.1. Normierter Raum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.2. Äquivalenz von Normen . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.3. Matrixnorm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.4. Verträglichkeit von Normen . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.5. Induzierte Norm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.1. kubische Spline-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.2. Trigonometrische Interpolationsfunktion . . . . . . . . . . . . . . . . . .
59
4.1. Diskrete Fouriertransformation . . . . . . . . . . . . . . . . . . . . . . .
64
6.1. Lipschitz-Stetigkeit und Kontraktionen . . . . . . . . . . . . . . . . . . .
99
6.2. Fixpunkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.1. Projektoren auf Unterräume . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.1. Ähnlichkeitstransformation . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.2. Householder-Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10.1. Abstand eines Vektors von einem Unterraum . . . . . . . . . . . . . . . . 140
A.3. Liste der Sätze
2.1. Äquivalenz von Normen in endlichdimensionalen Vektorräumen . . . . .
25
2.2. Äquivalenz von LGS und Minimierung (Linear Descent) . . . . . . . . .
33
150
A.3. Liste der Sätze
2.3. Konvergenz der sukzessiven Approximation
. . . . . . . . . . . . . . . .
36
3.1. Eindeutigkeit der Lagrange-Polynome . . . . . . . . . . . . . . . . . . . .
41
3.2. Iterationsschema des Neville-Algorithmus . . . . . . . . . . . . . . . . . .
42
3.3. Rekursionsvorschrift der dividierten Differenzen . . . . . . . . . . . . . .
45
3.4. Lösbarkeit von rationalen Interpolationsproblemen
. . . . . . . . . . . .
53
3.5. Eindeutigkeit und Oszillationsverhalten kubischer Splines . . . . . . . . .
54
3.6. Koeffizienten von trigonometrischen Polynomen . . . . . . . . . . . . . .
61
4.1. Kontraktion der Fouriertransformation für 2n Stützstellen . . . . . . . .
66
5.1. Existenz & Eindeutigkeit von Orthogonalbasen für Polynome . . . . . . .
84
5.2. weitere Orthogonalitäten der Orthogonalbasis für Polynome . . . . . . .
85
5.3. Eigenschaften der Nullstellen der Orthogonalbasis-Polynome . . . . . . .
86
5.4. Regularität von Matrizen mit den Orthogonalbasis-Polynomen . . . . . .
87
5.5. Eigenschaften der Gauß-Integration . . . . . . . . . . . . . . . . . . . . .
88
6.1. Eigenschaften des Intervallhalbierungsverfahren . . . . . . . . . . . . . .
97
6.2. Konvergenz und Fehlerabschätzung der Fixpunkt-Iteration . . . . . . . . 100
6.3. Konvergenz des Newton(-Raphson)-Verfahrens . . . . . . . . . . . . . . . 102
6.4. Fixpunktsatz von Banach . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.5. Ableitungen von Polynomen im Horner-Schema . . . . . . . . . . . . . . 107
7.1. Optimalitätsbedingung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.2. Eigenschaften des Projektors . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.3. Gram-Schmidt-Orthonormalisierung . . . . . . . . . . . . . . . . . . . . . 117
8.1. Konvergenz der Potenzmethode . . . . . . . . . . . . . . . . . . . . . . . 122
8.2. Eigenwert-Invarianz bei Ähnlichkeitstransformationen . . . . . . . . . . . 126
8.3. Eigenschaften von Householder-Matrizen . . . . . . . . . . . . . . . . . . 128
9.1. Iterationsvorschrift für QR-Zerlegung . . . . . . . . . . . . . . . . . . . . 136
10.1. Eigenschaften des Abstandes . . . . . . . . . . . . . . . . . . . . . . . . . 141
151
A. Anhang
10.2. Lösbarkeit und Eindeutigkeit der linearen Regression . . . . . . . . . . . 141
152
Literaturverzeichnis
[1] J. Stoer and R. Bulirsch, Numerische Mathematik I. Springer Lehrbuch, 2007.
[2] J. Nocedal and S. J. Wright, Numerical Optimization. Springer, 2006.
153
Herunterladen