Einführung in die Angewandte Mathematik

Werbung
Prof. Dr. S. Sauter
Institut für Mathematik
Universität Zürich
Einführung in die Angewandte Mathematik
S. Sauter
Sommersemester 2007
Version 08.06. 2007
1
Diese Einführung in die Angewandte Mathematik behandelt die Entwicklung von Lösungsverfahren für mathematische Probleme aus praktischen Anwendungen. Sowohl numerische,
algebraische und algorithmische Aspekte werden betrachtet.
Typischerweise gibt es mehrere Möglichkeiten die Lösung einer mathematischen Fragestellung zu berechnen. Für die Bewertung der verschiedenen Lösungsalgorithmen spielen die
folgenden Kriterien die wesentliche Rolle.
• Grösse der Problemklasse, für die das Lösungsverfahren anwendbar ist,
• Rechen- und Speicheraufwand in Abhängigkeit von der Genauigkeit (Effizienz),
• Implementierungsaufwand.
In der Regel ist es nicht möglich, die exakte Lösung eines mathematischen Problems zu
berechnen, weil 1.) die Computerarithmetik mit Rundungsfehlern behaftet ist und 2.) im
allgemeinen keine explizite endliche Darstellung der Lösung existiert und numerische Appro√
ximationen verwendet werden müssen. (Beispiel: Die Dezimaldarstellung der reellen Zahl 2
besitzt unendliche viele Stellen und kann daher auf dem Computer nicht explizit dargestellt
werden.)
Die Vorlesung gliedert sich in drei Teile.
Nach einem kurzem Vorspann zur Computerarithmetik werden wir uns mit der Approximation und Visualisierung von Funktionen beschäftigen. Da auf dem Computer im allgemeinen
keine Funktionen, die auf Kontinua definiert sind (Beispiel: Abbildungen f : [0, 1] → R sind
charakterisiert durch überabzählbar viele Wertepaare), dargestellt werden können, ist die Approximation von Funktionen durch Funktionen, die auf dem Computer dargestellt werden
können, ein ganz wesentliches Werkzeug zur numerischen Lösung mathematischer Probleme.
Im zweiten Teil werden Fragestellungen aus der Angewandten Algebra behandelt. Wir
werden das QR-Verfahren einführen, welches sich beispielsweise zur robusten Lösung linearer
Gleichungssysteme eignet, aber auch für Eigenwertberechnungen und zur linearen Ausgleichsrechnung.
Im letzten Kapitel werden wir die schnelle Fouriertransformation (FFT) behandeln, die in
der Signalverarbeitung und der statistischen Datenanalyse ein grosse Rolle spielt. Das Lernziel
hierbei ist, baumartige, rekursive Algorithmen zu verstehen und deren Effizienz an Hand der
FFT kennenzulernen.
1
Computerarithmetik
Die Fragen, die in diesem Kapitel diskutiert werden, sind relevant in allen Bereichen der
Mathematik, bei denen numerische Rechnungen auf dem Computer durchgeführt werden.
Die Computerarithmetik unterscheidet sich von der üblichen mathematischen Arithmetik,
weil auf Grund des beschränkten Rechenspeichers auf einem Computer nur eine endliche
Menge von Zahlen zur Verfügung steht. Der Übergang von reellen Zahlen zu Zahlen auf dem
Rechner nennt man Rundung. Die Kombination von elementaren arithmetischen Operationen
◦ ∈ {+, −, ×, /} auf dem Rechner führt typischerweise bei exakter Rechnung wieder auf
reelle Zahlen, die auf dem Rechner nicht darstellbar sind und wiederum gerundet werden
müssen. Das führt dazu, dass einige der Standardrechenregelen selbst für die elementaren
arithmetischen Operationen nur eingeschränkt gelten.
2
1.1
Zahldarstellung auf Computern
Da Festpunktarithmetik so gut wie ausgestorben ist, werden wir uns hier nur mit Fliesskommaarithmetik beschäftigen.
Reelle Zahlen lassen sich auf viele verschiedene Weise einführen. Da man auf einem (physikalischen) Rechner einzelne elektronische Bauteile leicht in zwei unterschiedliche Zustände
versetzen kann, bietet sich die Darstellung von Zahlen als Binärzahl an. Die Zahl t bezeichnet
die maximale, auf dem Rechner realisierbare Zahl der Stellen nach dem Binärpunkt und s die
Anzahl der möglichen Stellen im Exponenten. Die Menge der reellen Fliesskommazahlen auf
einem Computer wird mit R (t, s) bezeichnet. Genauer enthält R (t, s) alle Zahlen x ∈ R, die
sich in der Form
x = f × 2e
schreiben lassen, mit
f = ± (.b−1 b−2 . . . b−t )2 ,
e = ± (cs−1cs−2 . . . c0.)2 .
Hier bezeichnen bi , ci ∈ {0, 1} binäre Ziffern und wir verwenden die Abkürzung
(.d−1d−2 . . . d−k )2 =
k
i=1
(1.1)
di 2−i .
Bezeichnungen: f ist die Mantisse von x, e ist der Exponent von x. Man spricht von
einer normalisierten Darstellung, falls b−1 = 0 gilt. (Beachte: Die Zahl x = 0 besitzt keine
normalisierte Darstellung).
Bemerkung 1.1 (Geometrische Reihe) Sei a ∈ R und n ∈ N. Dann gilt
n
Für n = ∞ und |a| < 1 gilt
i=0
a =
i
∞
i=0
Bemerkung 1.2 Die Menge
1−an+1
1−a
n+1
ai =
a = 1,
a = 1.
1
.
1−a
R (t, s) := {f × 2e : f, e erfüllen (1.1)} ,
der auf dem Computer darstellbaren Zahlen, besteht aus endlich vielen reellen Zahlen, die
nicht gleichverteilt auf der reellen Achse sind.
Die grösste (betragsmässig kleinste) darstellbare Zahl, die sich normalisieren lässt, ist durch
t
s−1 i
s
max |x| =
2−i 2 i=0 2 = 1 − 2−t 22 −1
x∈R(t,s)
i=1
s−1 k
s
min |x| = 2−1 2− k=0 2 = 2−2 .
x∈R(t,s)
3
gegeben. Typische Werte auf modernen Computern sind t = 23 und s = 7, was zu einer grössten Zahl 1.70 × 1038 und kleinsten Zahl 2.94 × 10−39 führt. Falls in einer Rechnung eine Zahl
auftritt, deren Betrag grösser (kleiner) als die (betragsmässig) grösste/kleinste darstellbare
Zahl auf dem Rechner ist, spricht man von Überlauf (Unterlauf). Zahlenüberlauf führt üblicherweise zum sofortigen Abbruch der Berechnung, Zahlenunterlauf führt häufig dazu, dass die
Zahl intern auf Null gerundet wird. Zahlenüberlauf kann fatale Folgen haben, Zahlenunterlauf
ist wesentlich harmloser. Beispielsweise ist der Grund für den Absturz einer Arianerakete nach
dem Start ein Zahlenüberlauf gewesen.
1.2
Rundung
Die Eingabe von Daten oder die Ergebnisse arithmetischer Operationen auf dem Computer
ergeben im allgemeinen Zahlen, die wiederum nicht auf dem Computer darstellbar sind. Daher
ist in die Computerarithmetik das Runden integriert. Es existieren verschiedene Arten der
Rundung, beispielsweise das Abschneiden
∞
t
chop : x = ±
b−k 2−k 2e −→ x⋆ = ±
b−k 2−k 2e
k=1
k=1
oder das symmetrische Runden. Dies ist beim Binärsystem einfacher als beim Zehnersystem.
Falls die (t + 1)te Binärziffer 1 ist, wird aufgerundet, ansonsten abgerundet.
rd (x) := chop x + 2−(t+1) × 2e .
Bemerkung 1.3 Man beachte, dass das Runden einer reellen Zahl nicht notwendigerweise
nach R (t, s) abbildet, da der Exponent nicht verändert wird. Hier wäre jedoch ein Abrunden
sehr gefährlich, da beliebig grosse Fehler gemacht werden könnten. Die sichere Möglichkeit ist,
dass die Rechnung beim Überlauf vom Computer automatisch mit einer geeigneten Fehlermeldung abgebrochen wird.
Der Rundungsfehler beim Abschneiden lässt sich für Zahlen mit normalisierbarer Darstellung absolut wie folgt abschätzen:
∞
∞
−k e
−k
|x − chop (x)| = b−k 2 2 ≤
2
2e = 2−t × 2e .
k=t+1
k=t+1
Dieser Fehler hängt von der absoluten Grösse von x (genauer von e) ab. Um diese Abhängigkeit
zu eliminieren geht man zum relativen Fehler über (für normalisiertes x)
−t
e
x − chop (x) 2−t
2
×
2
≤ ∞
≤
= 21−t.
−k
e
−1
x
± ( k=1 b−k 2 ) 2
2
Für das symmetrische Runden zeigt man leicht die etwas verbesserte Fehlerabschätzung
x − rd (x) ≤ 2−t .
x
Diese Fehlerabschätzungen hängen nicht von x sondern nur von t, d.h. vom Computer ab.
Man bezeichnet sie daher als relative Maschinengenauigkeit:
eps := 2−t .
4
Falls t = 23 gilt, erhält man für die relative Maschinengenauigkeit:
d.h. sieben signifikante Stellen.
1.3
eps = 2−23 ≈ 1.19 × 10−7,
Rundungsfehler bei Gleitkommarechnungen
Alle vier Grundrechenarten, auf einem Computer ausgeführt, können als Resultat Zahlen produzieren, die nicht mehr vom Rechner darstellbar sind. Indem wir Über/Unterlauf vernachlässigen, sollten wir annehmen dass jede der Grundrechenarten ◦ ∈ {+, −, ×, /} ein korrekt
gerundetes Resultat liefert. Für Fliesskommazahlen x, y ∈ R (t, s) bezeichnet fl (x ◦ y) das
Ergebnis auf dem Rechner und sollte
fl (x ◦ y) = x ◦ y (1 + εx◦y ) ,
|εx◦y | ≤ eps
erfüllen. Im folgenden werden wir den Rundungsfehlereinfluss bei den vier Grundrechenarten
untersuchen.
Genauer nehmen wir an, dass die (physikalische Aufgabe) lautet, für zwei reelle Zahlen
x, y die Operation z = x ◦ y zu berechnen. Wir nehmen weiter an, dass diese Operation auf
dem Rechner wie folgt durchgeführt wird:
Input: x, y →Interne Darstellung x⋆ = x (1 + εx ), y ⋆ = y (1 + εy ) →Exakte Operation auf
gerundeten Zahlen z ⋆ := fl (x ◦ y) := x⋆ ◦ y ⋆ →Ausgabe z ⋆.
Da wir annehmen, dass εx , εy sehr klein sind, vernachlässigen wir im folgenden quadratische
Terme ε2x , ε2y , εx εy . Die Schreibweise
a=b
˙
bedeutet, dass |a − b| ≤ Cε2 gilt mit einer moderaten Konstanten C, die unabhängig von ε
ist und ε := max {|εx | , εy }.
Wie nennen die Operation ◦ gutartig, falls z ⋆ =z
˙ (1 + εx◦y ) gilt mit |εx◦y | ≤ C1 |εx | + C2 |εy |
mit moderaten Konstanten C1, C2 , die unabhängig von εx , εy sind.
a) Multiplikation: Mit den obigen Konventionen gilt
x⋆ y ⋆ = xy (1 + εx + εy + εx εy ) =xy
˙ (1 + εx + εy ) .
Der relative Fehler des Produkts ist dann durch εx×y = εx + εy gegeben. Das bedeutet, dass
die Multiplikation gutartig ist.
b) Division: Sei y = 0 und εy hinreichend klein. Dann folgt1 mittels Taylorentwicklung der
Ordnung 1
2 x⋆
x 1 + εx
x
=
=
1
+
ε
−
ε
+
O
ε ,
x
y
y⋆
y 1 + εy
y
also
εx/y = εx − εy .
Daher ist die Division ebenfalls eine gutartige Operation.
c) Addition und Subtraktion: Durch Vorzeichenwechsel lässt sich der Fall der Subtraktion
auf die Addition zurückführen. Es gilt
xεx + yεy
⋆
⋆
x + y = x (1 + εx ) + y (1 + εy ) = x + y + xεx + yεy = (x + y) 1 +
,
x+y
1
Durch Ausmultiplizieren verifiziert man leicht, dass für alle δ > 0 gilt (1 + δ)−1 ≤ 1 − δ + δ 2 .
5
wobei wir x + y = 0 annehmen. Daher gilt
εx+y =
x
y
εx +
εy .
x+y
x+y
Wie zuvor ist der Fehler eine Linearkombination aus den einzelnen relativen Fehlern, aber die
Koeffizienten können betragsmässig beliebig gross werden. Falls x und y gleiches Vorzeichen
haben sind beide Koeffizienten zwischen 0 und 1 und der Fehler verhält sich gutartig:
|εx+y | ≤ |εx | + |εy | ,
xy ≥ 0.
Die Addition zweier Zahlen mit gleichem Vorzeichen ist also eine gutartige Operation. Der
einzig ungünstige Fall ist, wenn x ≈ −y gilt und |x| gross ist. In diesem Fall spricht man von
Auslöschung.
Bemerkung 1.4 Die einzige rundungsfehlerkritische Situation tritt auf, falls zwei grosse und
etwa gleichgrosse Zahlen subtrahiert werden. Dieses Phänomen heisst Auslösung. In einigen
Fällen kann das vermieden werden. Hier zeigt sich der fundamentale Unterschied zwischen
idealisierter mathematischer und konkreter numerischer Berechnung.
√
√
Beispiel 1.5 Berechne y = x + δ − x mit x > 0 und sehr kleinem δ. Wie bereits analysiert
können für grosses x und kleines δ ernsthafte Auslöschungseffekte auftreten. Dieses Problem
lässt sich umformulieren. Die Darstellung
δ
y=√
√
x+δ+ x
ist mathematisch eine andere Darstellung des gleichen Ausdrucks. Hier treten keine Auslöschungseffekte auf.
Beispiel 1.5 zeigt, dass mathematisch-äquivalente Darstellungen eines Ausdrucks auf dem
Computer unterschiedlich gutartig sein könnten, da die (ideale) mathematische Arithmetik
nicht mehr gilt.
Übungsaufgabe 1.6 Sei
a
y := 333.75b6 + a2 11a2b2 − b6 − 121b4 − 2 + 5.5b8 + .
2b
a. Schreiben Sie ein Programm, welches als Eingabe a und b benötigt und der Wert y
ausgibt. Berechnen Sie y für a = 77617 und b = 33096. Verleichen Sie den Wert mit
dem Ergebnis, welches ihr Taschenrechner liefert. Was stellen Sie fest und warum?
b. Auf wieviel Stellen genau müsste eine Arithmetik mindestens rechnen, um ein korrektes
Resultat zu erreichen?
6
2
Darstellung und Approximation von Funktionen
Konvention: In diesem Kapitel bezeichnet I = [a, b] ⊂ R immer ein reelles Intervall.
Beispiel 2.1 Aus der Physik ist bekannt, dass ein physikalisches System bestrebt ist einen
möglichst niedrigen Energiezustand anzunehmen. Dieser Zustand (beispielsweise die Geschwindigkeitsverteilung in einer Strömung) wird durch eine mathematische Funktion beschrieben, die
als Minimum eines „Energiefunktionals“ charakterisiert ist.
Falls der physikalische Körper eindimensional modelliert werden kann (z.B. ein gerader
Abschnitt eines Kanals ist), kann die Minimierungsaufgabe von folgender (mathematischer)
Bauart sein: Sei I = [0, 1]. Finde eine differenzierbare Funktion u : I → R, welche das
Funktional
1
1
′
2
2
J (u) =
u (x) dx
u (x) + u (x) dx − 2
0
0
minimiert. Falls wir beispielsweise das Funktinoal J für die konstante Funktion g = 1 berechnen, ergibt sich
1
1
J (g) =
1dx − 2
1dx = −1
0
0
und für die lineare Funktion h (x) = x ergibt sich
1
1
2
1
1
1
2
J (h) =
1 + x dx − 2
xdx = 1 + − 2 × = .
3
2
3
0
0
Das heisst, dass für die beiden Funktion g und h die Ungleichung J (g) < J (h) gilt. Die Aufgabe diejenige Funktion u zu konstruieren, für die das Funktional J den minimal-möglichen Wert
annimmt, kann im allgemeinen nicht exakt gelöst werden und numerische Lösungsmethoden
müssen zur Approximation eingesetzt werden. Das erfordert zunächst, effiziente Darstellungen
von Funktionen zu finden, um danach mit diesen rechnen zu können.
2.1
Darstellung von Funktionen
Funktionen f : I → R sind charakterisiert durch die (überabzählbar) unendlich vielen Wertepaare
{(x, f (x)) : x ∈ I} .
Daher ist es nicht möglich, allgemeine Funktionen auf Computern darzustellen. Stattdessen
beschränkt man sich auf Funktionensysteme beispielsweise auf die Menge aller Polynome von
Maximalgrad n :
Pn := a0 + a1 x + a2x2 + . . . + an xn mit reellen Koeffizienten ai , 0 ≤ i ≤ n .
Ein Polynom (kontinuierliche Funktion) f ∈ Pn ist dann eindeutig charakterisiert durch die
Angabe der endlich vielen reellen Zahlen ai , 0 ≤ i ≤ n. Generell rechnet man auf dem Computer nicht mit Funktionen sondern mit Koeffizienten, welche Funktionen aus Funktionensysteme
charakterisieren. Da Funktionen im allgemeinen von unendlich vielen Werten abhängen, kann
man nicht alle Funktion f : I → R auf dem Computer durch endlich viele Koeffizienten charakterisieren. Man verwendet daher auf dem Computer Funktionensysteme (z.B. Pn ), um eine
7
wesentlich grössere Menge von Funktionen zu approximieren und mit diesen Approximationen
dann zu rechnen.
Polynome eignen sich in vielen Fällen sehr gut zur Approximation von Funktionen. Der
Weierstrasssche Approximationssatz besagt, dass jede stetige Funktion auf I beliebig genau
durch Polynome approximiert werden kann.
Wir werden uns daher im folgenden mit einer effizienten Darstellungen von Polynomen
beschäftigen.
Bemerkung 2.2 Ein Polynom in der Darstellung
a0 + a1 x + a2 x2 + . . . + an xn
(2.1)
lässt sich in einem Punkt z mit 3n − 1 elementaren arithmetischen Operationen auswerten,
wie der folgende Algorithmus zeigt.
c1 := z; for i = 2 to n do ci = z × ci−1 ;
s := a0 ; for i = 1 to n do s := s + ai ci .
Die Newtonsche Darstellung mittels dividierter Differenzen ist für viele Anwendungen
besonders geeignet. Eine dieser Anwendungen wollen wir zunächst beschreiben.
Sei Θn := {x0 , x1, . . . , xn } ⊂ I eine Menge von n + 1 verschiedenen Punkten, die alle im
Intervall I enthalten sind und Stützstellen genannt werden. Die Werte einer Funktion seien in
diesen Stützstellen gegeben:
fi = f (xi ) ∀0 ≤ i ≤ n.
Ziel: Konstruiere ein Polynom p möglichst niedrigen Grades, welches die Funktion f in
den Stützstellen interpoliert, d.h.
p (xi ) = fi
erfüllt.
∀0 ≤ i ≤ n
(2.2)
Satz 2.3 Seien (xi , fi ), 0 ≤ i ≤ n, eine gegebene Menge von Wertepaaren und die Stützstellen
xi , 0 ≤ i ≤ n, verschieden. Dann existiert genau ein Polynom p ∈ Pn mit der Eigenschaft (2.2).
Der Beweis dieses Satzes wird ausgelassen und in der Numerik I-Vorlesung nachgeholt.
Hier wollen wir das gesuchte Polynom explizit konstruieren (womit dann bereits dessen Existenz gezeigt ist). Das interpolierende Polynom hängt von der Stützstellenmenge Θn und der
Funktion f ab, und wir schreiben p (f, Θn ) statt p, um diese Abhängigkeit anzudeuten.
Wir stellen uns die Stützstellenmenge Θn sukzessive aufgebaut vor:
Θ0 := {x0} ,
Θ1 := Θ0 ∪ {x1} ,
Θ2 := Θ1 ∪ {x2} , . . .
und schreiben pj = p (f, Θj ) für das Polynom pj ∈ Pj , welches f in den Stützstellen Θj :=
{xk : 0 ≤ k ≤ j} interpoliert. In vielen Anwendungen tritt nun die Aufgabe auf, alle Polynome
pj , 0 ≤ j ≤ n, in einem Zwischenpunkt z ∈ I auszuwerten.
8
Bemerkung 2.4 Der Aufwand, alle Polynome pj mit dem Algorithmus aus Bemerkung 2.2
in einem Punkt z ∈ I auszuwerden, beträgt
n
j=1
(3j − 1) =
n (3n + 1)
2
(2.3)
elementare arithmetische Operationen. (Die Gleichheit in (2.3) folgt mit vollständiger Induktion.)
Die Newtonsche Darstellung erlaubt die Auswertung dieser Polynome in O (n)-Operationen.
Satz 2.5 Für die Interpolationspolynome pj , 0 ≤ j ≤ n, gilt die Rekursion
p0 (x) = b0,
pn (x) = pn−1 (x) + bn ωn−1 (x) ,
n = 1, 2, . . .
mit geeigneten Konstanten bi , 0 ≤ i ≤ n, und dem Stützstellenpolynom
ωn−1 (x) = (x − x0) (x − x1 ) · · · (x − xn−1 ) .
(2.4a)
(2.4b)
(2.5)
Beweis. Durch vollständige Induktion.
Anfang: n = 0:
Wir wählen b0 := f0 . Dann ist p0 = f0 konstant und interpoliert offensichtlich den Wert
(x0, f0 ).
Induktionsannahme: Aussage gelte für 0 ≤ j ≤ n − 1.
Induktionsschluss: n − 1 → n
Offensichtlich gilt ωn−1 (xj ) = 0 für alle Stützstellen xj , 0 ≤ j ≤ n − 1, da ein Faktor in
(2.5) dann gleich Null ist. Daraus folgt aus (2.4b) und der Induktionsannahme
pn (xj ) = pn−1 (xj ) = fj
∀0 ≤ j ≤ n − 1.
Wir müssen noch den Punkt xn überprüfen. Einsetzen liefert2
!
pn (xn ) = pn−1 (xn ) + bn ωn−1 (xn ) = fn .
Da wegen (2.5) ωn−1 (xn ) = 0, können wir dividieren und erhalten, dass für
bn :=
fn − pn−1 (xn )
ωn−1 (xn )
(2.6)
schliesslich auch pn (xn ) = fn erfüllt ist.
Die Definition (2.6) zeigt, dass die Koeffizienten bj von den Stützstellen xi , 0 ≤ i ≤ j, und
der Funktion f abhängen. Wir drücken diese Abhängigkeit durch die Schreibweise aus
bn = [x0 , x1, . . . , xn ] f,
n = 0, 1, 2, . . .
und nennen die rechte Seite die n-te dividierte Differenz von f bezüglich der Knotenpunkte
x0 , x1, . . . , xn . Für festes f ist dies eine Funktion von n + 1 Variablen, den Stützstellen xi , 0 ≤
i ≤ n.
2
!
„=“ bedeutet: „soll gleich sein“ im Sinne einer Bedingung.
9
Zentral für die Effizienz der Newtonschen Darstellung (2.4) ist die folgende Rekursionsformel für die Koeffizienten bk
k = 0 : b0 = [x0] f := f0 ,
k ≥ 1 : bk = [x0, x1, . . . , xk ] f =
[x1 ,x2 ,...,xk ]f −[x0 ,x1 ,...,xk−1 ]f
.
xk −x0
(2.7)
Die k-te Differenz lässt sich also schreiben als Differenzenquotient der (k − 1)-ten dividierten
Differenzen.
Der Beweis der Formel (2.7) wird hier weggelassen und in der Vorlesung Numerik I behandelt. Die Formel (2.7) kann verwendet werden, um das Schema der dividierten Differenzen zu
erzeugen.
x f
x0 f0
x1 f1 [x0, x1 ] f
x2 f2 [x1, x2 ] f [x0 , x1, x2 ] f
x3 f3 [x2, x3 ] f [x1 , x2, x3 ] f [x0 , x1, x2 , x3] f
..
..
.
.
...
...
...
Man beachte, dass gemäss (2.7) jeder Eintrag in obigem Schema aus dem linken Nachbar in
der gleichen Zeile und dem linken Nachbar aus der darüberliegenden Zeile zu berechnen ist.
Die dividierten Differenzen bn , welche in Newton’s Formel (2.4a) auftreten, sind genau die
ersten n + 1 Diagonaleinträge im Differenzenschema.
Das Hinzufügen eines zusätzlichen Wertepaares (xn+1 , fn+1 ) erfordert lediglich das Erzeugen einer weiteren Zeile von links nach rechts in obigem Schema.
Beispiel 2.6 Ziel ist es, die Wertepaare (0, 3), (1, 4), (2, 7), (4, 19) durch ein kubische Polynom (Polynom vom Grad 3) zu interpolieren. Das Berechnungsschema besitzt in diesem Fall
die folgende Form:
x
0
1
2
4
f
3
4
7
19
(4 − 3) / (1 − 0) = 1
(7 − 4) / (2 − 1) = 3 (3 − 1) / (2 − 0) = 1
(19 − 7) / (4 − 2) = 6 (6 − 3) / (4 − 1) = 1 (1 − 1) / (4 − 0) = 0
(2.8)
Die Koeffizienten sind daher durch b0 = 3, b1 = 1, b2 = 1, b3 = 0 gegeben und das interpolierende Polynom durch
p3 (f, Θ3) (x) = 3 + 1 × (x − 0) + 1 × (x − 0) (x − 1) + 0 × (x − 0) (x − 1) (x − 2) = 3 + x2.
Bemerkung 2.7 Der Aufwand pro Kästchen im Schema (2.8) (rechts von den ersten beiden
Spalten) beträgt 3 arithmetische Operationen. Insgesamt beträgt die Anzahl der Kästchen rechts
von den ersten beiden Spalten
n
n (n + 1)
j=
2
j=1
10
und somit der Gesamtaufwand zur Berechnung der Koeffizienten bj , 0 ≤ j ≤ n, 3 n(n+1)
2
arithmetische Operationen. Sind diese berechnet und gespeichert lassen sich alle Polynome pj ,
0 ≤ j ≤ n, an einer Zwischenstelle mit dem folgenden Algorithmus auswerten
c0 := z − x0 ; for j = 1 to n − 1 do cj = (z − xj ) cj−1 ;
s0 := f0 ; for j = 1 to n do sj = sj−1 + bj cj−1.
Die berechneten Zahlen sj , 0 ≤ j ≤ n, sind dann genau die Auswertungen von pj im Punkt z.
Der Aufwand zur Auswertung aller Polynome beträgt daher lediglich 4n Operationen.
Man beachte, dass alle Polynome mittels der Koeffizienten bj , 0 ≤ j ≤ n, abgespeichert
werden können (Aufwand n + 1 reelle Zahlen) im Gegensatz zur Speicherung der Polynome
in der Darstellung (2.1), bei der für jedes Polynom pj insgesamt j + 1 reelle Koeffizienten
abzuspeichern sind. Der Speicheraufwand würde dann quadratisch mit n wachsen:
n
j=0
2.2
(j + 1) =
(n + 2) (n + 1)
.
2
Adaptive Verfeinerung
In diesem Abschnitt werden wir uns mit der folgenden Problemstellung beschäftigen.
Sei I = [a, b] ⊂ R ein Intervall. Eine Funktion f : I → R beschreibt ein physikalisches
Verhalten und kann in Punkten x ∈ [a, b] gemessen werden. Die Messungen seien “teuer”,
und daher ist es das Ziel, die Funktion f rekursiv mit Polynomen pn ∈ Pn , n ∈ N0, zu
approximieren und die Stützstellen “möglichst problemangepasst” zu wählen.
Die verwendeten Stützstellenmengen Θn , n ∈ N0, werden schrittweise konstruiert, so dass
die Rekursion Θ0 = {x0 } und
für n = 1, 2, . . . :
Θn = Θn−1 ∪ {xn }
erfüllt ist. Die Wahl der jeweils neuen Stützstelle xn geschieht “adaptiv” mit Hilfe eines
“a-posteriori Fehlerindikators”, der rekursiv die Kenntnis der bereits berechneten Polynoms
pn−1 , pn−2 verwendet und im folgenden hergeleitet wird.
Der Einfachheit halber wählen wir immer x0 = a und x1 = b. Die Stützstellenmenge Θn ,
n ≥ 1, zerlegt dann das Intervall [a, b] in (abgeschlossene) Teilintervalle τi , 1 ≤ i ≤ n, die wir
im Gitter
Gn := {τi : 1 ≤ i ≤ n}
zusammenfassen (siehe Abb. 1). Für zwei beliebige, verschiedene Teilintervalle τi , τj ∈ G ist
der Schnitt τi ∩ τj dann entweder leer oder eine gemeinsame Stützstelle.
Wahl der neuen Stützstelle:
Sei n ≥ 2 und Stützstellenmengen Θj und zugehörige Gitter Gj für 1 ≤ j ≤ n − 1 erzeugt.
Bezeichne pj das Interpolationspolynom zum Gitter Θj . Wir berechnen für k = 1, 2, . . . , n − 1
die Differenzen
dk := |pn−1 (Mk ) − pn−2 (Mk )|
(2.9)
in den Mittelpunkten Mk der Intervalle τk ∈ Gn−1 und bestimmen ein k⋆ mit
dk⋆ = max dk .
1≤k≤n−1
11
t
x
0
t
1
x
t
4
4
x
t
3
x
3
2
t
2
x
5
5
x
1
Abbildung 1: Schrittweise Unterteilung des Intervalls [a, b] mit x0 = a und x1 = b. Man beachte, dass die Gitterpunkte und die Teilintervalle τi im allgemeinen nicht angeordnet numeriert
sind.
Als neuen Gitterpunkt wählen wir
xn := Mk⋆ .
Bezeichnen wir die Endpunkte von τk⋆ mit α, β lassen sich die Teilintervalle
τ1neu := [α, Mk⋆ ]
und τ2neu := [Mk⋆ , β]
definieren. Dann ist die neue Stützstellenmenge und das Gitter Gn durch
gegeben.
Θn := Θn−1 ∪ {xn }
und Gn := (Gn−1\τk⋆ ) ∪ {τ1neu , τ2neu }
Bemerkung 2.8 Die Polynome pj werden am günstigsen in der Newtonsche Darstellung aus
dem vorigen Abschnitt gespeichert. Im Schritt n−1 → n muss dann lediglich die n-te dividierte
Differenz bn berechnet werden (vgl. (2.7)), d.h. eine neue Zeile im Schema zur Berechnung
der dividierten Differenzen erzeugt werden. Die Auswertung der Differenzen in (2.9) erfolgt
dann effizient mit dem Algorithmus aus Bemerkung 2.7.
Bemerkung 2.9 Als Stoppkriterium für das Hinzufügen von Gitterpunkten kann eine maximale Anzahl von Stützstellen vorgegeben werden. Alternativ kann eine Toleranz ε > 0 festgelegt
werden und der Algorithmus abgebrochen werden, falls dk⋆ ≤ ε gilt.
2.3
Fehlerabschätzungen
In diesem Abschnitt werden wir uns damit beschäftigen, wie die Genauigkeit der Polynominterpolation von der Funktion f , der Wahl der Stützstellen und deren Anzahl abhängt.
Zunächst wird ein Mass für die Genauigkeit einer Funktionsapproximation eingeführt. Sei
dazu wieder I = [a, b] ⊂ R mit a < b ein reelles Intervall und f : I → R eine Funktion.3
Definition 2.10 Die Menge aller stetigen Funktionen auf I ist durch
C 0 (I) := {f : I → R | f ist stetig in jedem Punkt x ∈ I}
gegeben. Für k ∈ N ist die Menge aller k-mal stetig differenzierbaren Funktionen auf I gegeben
durch
C k (I) := f : I → R | ∀0 ≤ i ≤ k : f (i) existiert und ist stetig .
Hierbei bezeichnet f (i) die i-te Ableitung von f .
Wir setzen voraus, dass die Begriffe „Stetigkeit“ und „Differenzierbarkeit“ einer reellen Funktion bekannt
sind.
3
12
Die Mengen C k (I) sind Vektorräume und es lassen sich Normen darauf definieren. Die
„Maximumsnorm“ auf C 0 (I) ist definiert für eine Funktion f ∈ C 0 (I) durch4
f max := max |f (x)| .
a≤x≤b
Man prüft leicht nach, dass die Normeigenschaften erfüllt sind:
∀f ∈ C 0 (I) :
f max ≥ 0
und f max = 0 ⇐⇒ f = 0,
0
∀f ∈ C (I) , ∀α ∈ R : αfmax = |α| xmax
∀f, g ∈ C 0 (I) :
f + gmax ≤ f max + gmax
(Dreiecksungleichung).
Beispiel 2.11
a. Sei I = [−1, 2] und f (x) = x2. Dann gilt f max = 4.
b. Sei I = [0, 10] und f (x) = ex . Dann gilt f max = e10 ≈ 2.2 × 104 .
Mit Hilfe der Maximumsnorm lässt sich der „Abstand“ zweier Funktionen messen. Sei f
gegeben und p eine Approximation von f . Dann gilt
f − pmax = max |f (x) − p (x)| .
a≤x≤b
Insbesondere folgt aus den Normeigenschaften, dass f − pmax = 0 gilt, genau dann wenn
f = p ist.
Wir kommen nun zur Abschätzung des Interpolationsfehlers.
Bezeichnungen: f ∈ C 0 (I) ist eine gegebene Funktion. Die Menge der gegebenen Stützstellen wird wieder mit Θn := {xi : 0 ≤ i ≤ n} bezeichnet. Das Interpolationspolynom, welches
f in den Stützstellen Θn interpoliert, wird mit pn bezeichnet. Dieses hängt von f und Θn ab.
Für die Fehlerdarstellung benötigen wir das „Stützstellenpolynom“ ωn , welches nur von
Θn abhängt und gegeben ist durch
ωn (x) := (x − x0 ) (x − x1) · · · (x − xn ) .
Es ist ein Polynom vom Grad n + 1 und besitzt Nullstellen genau in den Stützstellen.
Satz 2.12 Sei f ∈ C n+1 (I) mit I = [a, b] ⊂ R. Dann gilt die Fehlerdarstellung
f (x) − pn (x) =
f (n+1) (ξ)
ωn (x) ,
(n + 1)!
x ∈ [a, b]
(2.10)
an einer geeigneten Zwischenstelle ξ ∈ [a, b], die im allgemeinen von x, den Stützstellen und
von f abhängt.
Der Beweis dieses Satzes wird in der Vorlesung Numerik I nachgeholt.
Da ξ in (2.10) in [a, b] enthalten ist,
(n+1) f
(ξ) ≤ max
und für alle x ∈ [a, b]
a≤x≤b
gilt
(n+1)
f
(x) = f (n+1) max =: Cn
|ωn (x)| ≤ max |ωn (x)| = ωn max =: M (Θn ) .
a≤x≤b
(2.11)
(2.12)
Aus der Analysis ist bekannt, dass das Maximum einer stetigen Funktion auf einem beschränkten, abgeschlossenen Intervall I immer existiert.
4
13
Korollar 2.13 Aus Satz 2.12 folgt
Bemerkung 2.14
f − pn max ≤
Cn
M (Θn ) .
(n + 1)!
(2.13)
a. Die Grösse M (Θn ) hängt nur von der Wahl der Stützstellen ab und nicht von der Funktion f .
b. Umgekehrt hängt Cn nicht von der Wahl der Stützstellen ab, sondern lediglich von deren
Anzahl und von der Funktion f .
c. Aus Korollar 2.13 folgt: Eine Folge von Polynominterpolationen pn , n ∈ N, konvergiert
gegen f bezüglich der Maximumsnorm, falls
Cn
n→∞
M (Θn ) → 0
(n + 1)!
gilt. Man beachte, dass diese Bedingung lediglich hinreichend, aber nicht unbedingt notwendig ist.
Beispiel 2.15 Wir betrachten die lineare Interpolation mit zwei Stützstellen x0 = a und
x1 = b, d.h.
f (b) − f (a)
pn (x) = f (a) + (x − a)
.
b−a
Es gilt die Fehlerdarstellung
f (x) − p1 (x) = (x − a) (x − b)
und die Fehlerabschätzung
f ′′ (ξ)
,
2
für ein ξ ∈ [a, b]
C1
(b − a)2 .
8
(Hier wurde benutzt, dass für x ∈ [a, b] gilt |ω1 (x)| = (x − a) (b − x) und dieser Ausdruck
maximal wird für x = (a + b) /2. Der Maximalwert ist 14 (b − a)2 .)
f − p1∞ ≤
Bemerkung 2.16 Für x ∈ I gilt |x − xi | ≤ (b − a). Daraus folgt
M (Θn ) ≤ (b − a)n+1 ,
und das ergibt mit (2.13) die Abschätzung
f − pn max ≤ Cn
(b − a)n+1
.
(n + 1)!
(2.14)
Die Abschätzung der Konstante Cn ist in vielen Fällen nicht einfach. Um die Konvergenz
für n → ∞ betrachten zu können, folgt aus der Definition (2.11) sofort, dass wir f ∈ C ∞ (I)
fordern müssen (d.h. f ∈ C k (I) für alle k ∈ N). Das folgende Beispiel zeigt jedoch, dass diese
Bedingung nicht hinreichend ist für die Konvergenz.
14
Beispiel 2.17 Wir betrachten die Funktion f (x) =
Dann gilt
f (n) (x) = (−1)n
und für die Konstante Cn
1
x+1
in einem Intervall [0, b] für ein b > 0.
n!
(x + 1)n+1
(n+1) (n+1)
(n
+
1)!
n+1
= (n + 1)!
f
= max (−1)
Cn = f
=
max
(x)
max
0≤x≤b
0≤x≤b (x + 1)n+2 .
Eingesetzt in (2.14) ergibt sich die Interpolationsfehlerabschätzung (beachte a = 0)
f − pn max ≤ bn+1.
Die Interpolation konvergiert sehr schnell für 0 < b < 1 aber divergiert, falls b > 1 zu gross
ist.
Die Wahl der Stützstellen fliesst lediglich in die Konstante M (Θn ) ein. Das folgende Beispiel zeigt das charakteristische Verhalten des Stützstellenpolynoms für äquidistante Stützstellen.
Beispiel 2.18 (Interpolation vom Grad n) Sei I = [a, b], n ∈ N und f ∈ C n+1 (I). Äquidistante Gitterpunkte auf dem Intervall I sind durch xi = a + ih mit h := (b − a) /n für
i = 0, 1, . . . , n gegeben. Das Stützstellenpolynom besitzt die Form
ωn (x) = (x − a) (x − a − h) (x − a − 2h) · · · (x − b) .
Dies ist eine hochoszillierende Funktion (siehe Abbildung); die maximalen Funktionswerte und
Steigungen sind an den Intervallenden.
Das Maximum des Stuetzstellenpolynoms
(rot) fuer die Cebysev-Stuetzstellen ist
deutlicher kleiner verglichen zum Maximum
des Stuetzstellenpolynoms (schwarz) fuer
aequidistante Stuetzstellen.
15
Die Frage, ob durch eine geschicktere Wahl der n+1 Stützstellen die Konstante M (Θn ) verkleinert werden kann, lässt sich positiv beantworten. Die Čebyšev-Stützstellen (vgl. Übungsaufgabe) sind durch
xi =
1 + cos (2i+1)π
2(n+1)
2
b+
1 − cos (2i+1)π
2(n+1)
2
a,
0≤i≤n
gegeben. Die zugehörige Stützstellenmenge Θn := {xi : 0 ≤ i ≤ n} minimiert die Konstante
M (Θn ) in (2.13).
16
Abbildung 2: Schaltkreis eines Routing Channels (Ausschnitt).
3
Lineare Gleichungssysteme — das QR-Verfahren
In diesem Abschnitt werden wir die Lösung linearer Gleichungssysteme (LGS) behandeln.
Dieses Problem tritt in vielen unterschiedlichen Bereichen der Mathematik und in vielen praktischen Anwendungen auf, und wir beginnen mit einem einleitenden Beispiel.
Beispiel 3.1 Ziel sei es, das elektrische Feld in einem komplizierten Schaltkreis zu berechnen.
Der Schaltkreis sei gegeben durch eine Menge von Verzweigungspunkten (Knotenpunkte) Θ =
{xi : 1 ≤ i ≤ n} und einer Menge von Verbindungskanten (elektrische Leiter) E ⊂ Θ × Θ,
beispielsweise bedeutet die Notation e = (xi , xj ) ∈ E, dass e die Knotenpunkte xi und xj als
Endpunkte besitzt. Aus Symmetriegründen setzen wir voraus, dass mit jedem e = (xi , xj ) auch
die “umgekehrte” Kante ẽ = (xj , xi ) in E enthalten ist.
Auf Computerchips können derartige Schaltkreise äusserst komplex sein, wie die Abbildung
2 zeigt. Um das elektrische Feld bei einem angelegten äusseren Feld oder einer angelegten Spannung zu berechnen, führt man in den Knotenpunkten xi ∈ Θ die Werte ui der Spannung als
Unbekannte ein. Diese Werte werden in einem Spannungsvektor u = (u (xi ))ni=1 zusammengefasst.
Auf einem Leiterstück e = (xi , xj ) ∈ E der Länge he := xi − xj beträgt dann die elektrische Energie
(u (xi ) − u (xj ))2
ae
,
he
wobei ae > 0 einen gegebenen Leitfähigkeitskoeffizienten für die Kante e bezeichnet. Die Gesamtenergie des Systems bei einem angelegten Feld f = (f (xi ))ni=1 beträgt dann für einen
Spannungsvektor v = (v (xi ))ni=1 folglich
1 ae
J (v) :=
(v (xi ) − v (xj ))2 −
f (xi ) v (xi ) .
2
he
x ∈E
e=(xi ,xj )∈E
i
Der Zustand, den das elektrische System einnimmt, ist derjenige, welcher die Energie J (·)
minimiert. Mathematisch ist dieser Zustand charakterisiert durch die Gleichung
∇J (u) = 0
Der Gradient5 wird hierbei auf die Variablen u (xi ) angewendet. Durch Berechnung dieser
Ableitungen erhält man schliesslich, dass der Spannungsvektor für das elektrische System die
Lösung des linearen Gleichungssystems
Au = f
Der Gradient wirkt auf eine Funktion f (x,
Variablen abhängt und bezeichnet
y, z...), die von mehreren
⊺
∂
∂
∂
den Vektor der partiellen Ableitungen ∇f = ∂x f, ∂y f, ∂z f, . . . .
5
17
ist, wobei
Ai,j :=











a(xi ,x )
k
falls i = j,
h
(x
,x
)
i
k
x ∈Θ:
k
(xi ,xk )∈E
a(xi ,xj )

−


h(xi ,xj )







0
falls (xi , xj ) ∈ E,
andernfalls.
Sind einige der Werte von u durch Messungen bekannt, können diese Variablen bereits eingesetzt werden und die entsprechenden Zeilen und Spalten aus der Matrix gestrichen werden.
Dies ist ein praktisches Beispiel, für das die robuste und effiziente Lösung grosser linearer
Gleichungssysteme eine wesentliche Rolle spielt. Generell unterscheidet man zwei Typen von
Verfahren zur Lösung linearer Gleichungssysteme.
• Direkte Lösungsmethoden lassen sich zur Auflösung aller linearer Gleichungssysteme
mit regulären Matrizen einsetzen. Vernachlässigt man den Rundungsfehler liefern diese
Verfahren nach endlich vielen Schritten die exakte Lösung.
• Iterative Lösungsverfahren konstruieren aus einem Startvektor eine Folge von Vektoren,
die gegen die exakte Lösung des linearen Gleichungssystems konvergieren. Im allgemeinen konvergiert ein iteratives Verfahren nicht für alle regulären Gleichungssysteme. Die
Konvergenzanalyse dient u.a. zur Bestimmung von hinreichenden Kriterien an das LGS,
damit die Konvergenz gesichert ist.
In diesem Kapitel werden wir uns mit direkten Lösungsverfahren beschäftigen. In der Vorlesung Numerik I werden iterative Verfahren zur Lösung von LGS behandelt. Die wesentlichen
Vor- und Nachteile dieser Verfahren sind im folgenden kurz zusammengestellt. n bezeichnet
immer die Dimension des (quadratischen) Gleichungssystems.
direkte Lösungsverfahren
iterative Verfahren
anwendbar auf alle regulären Matrizen Konvergenz für kleinere Klassen von Matrizen
Aufwand O (n3 )
Aufwand der schnellsten Verfahren
(Mehrgitterverfahren) beträgt O (n) .
Sei A ∈ Cn×n eine reguläre, quadratische Matrix der Dimension n mit (im Allgemeinen)
komplexen Einträgen ai,j ∈ C. Wir betrachten die Aufgabe, für gegebene rechte Seite b ∈ Cn
einen Vektor x ∈ Cn zu finden mit
Ax = b.
(3.1)
Die Dimension der Matrix A sei gross, d.h. 5-10000 Unbekannte.
Für einige wenige Matrixtypen ist die Lösung von (3.1) sehr einfach.
Dreiecksmatrizen: Sei A = (ai,j )ni,j=1 ∈ Cn×n eine linke untere Dreiecksmatrix, d.h.


⋆ 0 ... 0
 .. . . . . .. 

.
. .  d.h. a = 0 ∀1 ≤ i < j ≤ n.
A= .

i,j

0 
⋆ ...
⋆
18
Bemerkung 3.2 Die Voraussetzung „A ist regulär“ impliziert für Dreiecksmatrizen, dass die
die Diagonalelemente ai,i von Null verschieden sind. (Beachte: det A = a1,1 × a2,2 × . . . × an,n .)
Die Lösung eines regulären LGS mit linker unterer Dreiecksmatrix geschieht durch einfaches Rückwärtseinsetzen.
procedure solve_lower_triangular_system(A, b, x) ;
begin
for i := 1 to n do begin
s := bi ;
for j := 1 to i − 1 do s := s − ai,j xj ;
xi := s/ai,i
end;
end;
Wie man leicht abzählt, beträgt die erforderliche Anzahl arithmetischer Operationen
n
i−1
1+
2 = n2.
i=1
j=1
Analog lassen sich reguläre LGS mit rechten oberen Dreiecksmatrizen einfach lösen.
Unitäre Matrizen
Konvention: C bezeichnet die Menge der komplexen Zahlen. Jede komplexe Zahl w ∈
C lässt sich eindeutig zerlegen
gemäss w = u + i v mit reellen Zahlen u, v ∈ R und der
√
imaginären Einheit i = −1. Die Zahl u = Re (w) bezeichnet den Realteil und v = Im (w)
den Imaginärteil von w. Für eine komplexe Zahl w = u + i v ∈ C ist die komplexe Konjugation
durch w := u − i v definiert. Für Vektoren u = (uk )nk=1 ∈ Cn und v = (vk )nk=1 ∈ Cn ist das
Euklidsche Skalarprodukt durch
n
uk vk
u, v
=
k=1
gegeben und die Euklidsche Norm (Länge) durch u = u, u
1/2 . Die Spaltenvektoren einer
quadratischen Matrix Q ∈ Cn×n werden mit q1,q2 ,. . . ,qn bezeichnet.
Definition 3.3 Die Matrix Q ∈ Cn×n heisst unitär, falls deren Spaltenvektoren qi , 1 ≤ i ≤
n, eine Orthonormalbasis in Cn bilden:
1 i = j,
qi , qj =
0 sonst.
Die komplex transponierte Matrix einer Matrix A = (ai,j )ni,j=1 ist durch
gegeben.
AH = (aj,i )ni,j=1
Bemerkung 3.4
(a) Für eine unitäre Matrix Q ∈ Cn×n gilt Q−1 = QH .
(b) Für beliebiges x ∈ Cn gilt Qx = x.
19
Beweis. Für Q = (qi,j )ni,j=1 gilt QH = (qj,i )ni,j=1 . Wir bezeichnen die Spaltenvektoren in Q
wieder mit q1 , q2, . . . ,qn . Dann gilt
n
H 1 i = j,
Q Q i,j =
(qm,i ) qm,j = qj , qi =
0 sonst.
m=1
Daher ist QH Q die Einheitsmatrix, und daraus folgt QH = Q−1.
Für beliebiges x = (xi )ni=1 ∈ Cn gilt
n
n
n
2
xi qi ,
xj qj =
xi xj qi , qj Qx = Qx, Qx
=
=
n
i=1
i=1
j=1
i,j=1
|xi |2 = x2 .
Durch Wurzelziehen erhalten wir die Behauptung (b).
Aus Bemerkung 3.4 folgt, dass sich lineare Gleichungssysteme mit unitären Matrizen sehr
einfach auflösen lassen. Aus
Qx = b folgt x = QH b,
und die Lösung ist durch eine einfache Matrix-Vektor-Multiplikation gegeben.
procedure solve_unitary_system(Q, b, x) ;
begin
for i := 1 to n do begin
xi := 0;
for j := 1 to n do xi := xi + qj,i bj
end;
end;
Der Aufwand beträgt offensichtlich 2n2 arithmetische Operationen.
Das bekannteste direkte Lösungsverfahren ist die Gauss-Elimination. Hierbei werden eine
linke untere Dreiecksmatrix L und eine rechte obere Dreiecksmatrix R konstruiert, so dass
die folgende Faktorisierung der Originalmatrix
A = LR
gilt. Dann lässt sich ein (beliebiges) reguläres Gleichungssystem der Form
Ax = b d.h. LRx = b
in zwei Schritten lösen: Berechne y in Ly = b mit Hilfe von procedure solve_lower_triangular_system und anschliessend x in Rx = y mit Hilfe der analogen Prozedur für rechte
obere Dreiecksmatrizen. Das Verfahren besitzt jedoch zwei entscheidende Nachteile: (a) Das
Verfahren kann numerisch instabil sein, d.h. Rundungs- und Eingabefehler können kritisch
verstärkt werden, durch den Gauss-Algorithmus. (b) Die Implementierung der Spalten und
Zeilenvertauschungen kompliziert den Algorithmus.
20
In diesem Kapitel werden wir einen Eliminationsalgorithmus vorstellen, bei dem beide
Nachteile beseitigt sind.
Generell setzen wir immer voraus, dass A ∈ Cn×n , A regulär, gilt.
Das Ziel des QR-Verfahrens ist es, sukzessive eine unitäre Matrix U und eine obere Dreiecksmatrix R zu konstruieren, so dass
UA = R
gilt. Das Gleichungssystem
ist daher in zwei Stufen zu lösen:
(3.2)
UH Rx = Ax = b
Berechne y := Ub und löse danach Rx = y.
Die unitäre Matrix U in (3.2) wird spaltenweise
Matrix P1 gesucht mit

k ⋆ ...
.

 0 ⋆ ..
P1 A =  . .
 .. ..
0 ⋆ ...
aufgebaut. Genauer wird eine unitäre

⋆
.. 
. 
.

⋆
Falls die erste Spalte a1 der Matrix A bereits ein Vielfaches des ersten Einheitsvektors ist, d.h.,
a1 = ke1, setzen wir P1 = I also gleich der Einheitsmatrix. Im folgenden wird der (typischere)
Fall betrachtet, dass a1 kein Vielfaches von e1 ist.
Wir setzen6
P1 = I − 2wwH
(3.3)
mit
w=
Wählt man
k :=
a1 − ke1
.
a1 − ke1 − |aa1,1
a1 a1,1 =
0,
1,1 |
a1 a1,1 = 0.
(3.4a)
(3.4b)
rechnet man nach (vgl. Lemma 3.5), dass
P1a1 = ke1
gilt, d.h., die erste Spalte von A eliminiert ist.
Lemma 3.5 Mit der Wahl (3.4) von w und k gilt
Die Matrix P1 ist unitär.
P1 a1 = ke1 .
Das
Product zweier Vektoren a = (ai )ni=1 , b = (bi )ni=1 ∈ Cn ist eine n×n-Matrix, deren Einträge
dyadische
durch abH
:= ai bj , 1 ≤ i, j ≤ n, definiert sind.
6
i,j
21
Beweis. Zunächst rechnet man nach, dass
a1 − ke1 2 = a12 − a1,1k − ka11 + |k|2
Einsetzen der Definition von k
=
gilt. Daraus folgt
2 a1 (|a1,1| + a1)
a1 − ke1 , a1 H
.
P1 a1 = I − 2ww a1 = ke1 + (a1 − ke1 ) 1 − 2
a1 − ke12
=:δ
Die Behauptung ergibt sich, falls wir δ = 0 zeigen. Wir verwenden
a1 − ke1 , a1
a1 − ke1 , a1 − ke1 a1 − ke1, −ke1
+2
2 = 1−2
2
a1 − ke1 a1 − ke1
a1 − ke1 2
a1,1 − k Einsetzen von k
= −1 − 2k
=
0.
a1 − ke12
δ =1−2
Die Unitarität von P1 folgt wegen w = 1 gemäss
H
I − 2wwH = I − 4wwH + 4w wH w wH = I.
PH
1 P1 = I − 2ww
=1
Damit ist gezeigt, dass sich P1 in der Form
schreiben lässt mit
P1 = I − βuuH



u = a1 − ke1 = 

a1,1
|a1,1 |
(|a1,1| + a1 )
a2,1
..
.
an,1





und β =
1
.
a1 (|a1,1 | + a1)
(3.5)
Die Anwendung von P1 auf A(0) , b(0) := (A, b) liefert also ein System A(1) , b(1) mit
erstem Spaltenvektor ke1 . Nach j − 1 Schritten erhält man eine Matrix der Bauart
(j−1) (j−1) D
B
,b
A
=
0 Ã(j−1)
mit einer (j − 1) × (j − 1) oberen Dreiecksmatrix D. Man konstruiert nun, wie zuvor erklärt,
eine (n − j + 1) ×(n − j + 1) unitäre Matrix P̃j , welche die erste Spalte von Ã(j−1) eliminiert.
Eingesetzt in die n × n-Einheitsmatrix ergibt sich
I 0
Pj =
.
0 P̃j
Anwendung von Pj auf A(j−1), b(j−1) lässt die ersten (j − 1) Zeilen unverändert und
auch den linken unteren Nullblock. Die ersten Zeile von Ã(j−1) ist danach eliminiert. Nach
(n − 1) Schritten erhält man eine obere Dreiecksmatrix:
R := A(n−1) .
22
Die Eliminationsmatrix Pj ist durch (n − j + 1) wesentliche Komponenten von uj charakterisiert. In Ã(j−1) werden aber nur (n − j) Plätze unterhalb des Diagonalelements Ãj,j frei,
so dass man typischerweise das Diagonalelement von Ã(j−1) in einem separaten Vektor d
abspeichert und alle wesentlichen Komponenten von u in die frei werdenden Plätze.
In konstruktiver Weise haben wir damit gezeigt, dass sich jede reguläre Matrix A ∈ Cn×n in
das Produkt einer unitären Matrix und einer oberen Dreiecksmatrix zerlegen lässt. Bezeichnet
man das Produkt der Eliminationsmatrizen mit P = Pn−1 Pn−2 · · · P1, dann ist P wieder
unitär (aber nicht notwendigerweise hermitesch), und es gilt
PA = R bzw. A = QR mit Q = PH .
Schliesslich wollen wir den Aufwand für das QR-Verfahren abschätzen.
3.6 Der
Aufwand, die QR-Zerlegung einer Matrix A ∈ Cn×n zu berechnen, beträgt
Satz
4 3
n + p (n) arithmetische Operationen, wobei p ein Polynom vom Maximalgrad 2 bezeichnet.
3
Beweis. Der Algorithmus zur Berechnung von P1 gliedert sich in die folgenden Schritte:
1. Berechnung von a1: Anzahl Operationen
(n − 1) +
Additionen
n
Multiplikationen
+
1
Quadratwurzel
= 2n.
2. Berechnung von k: Aufwand: O (1) Operationen (unabhängig von n)
3. Berechnung von u und β (vgl. (3.5)): Aufwand: O (1) Operationen (unabhängig von n)
4. Auswertung von P1A = A − βuuH A. Die Berechnung erfolgt in 2 Schritten
(a) Berechnung von vH := βuH A. Dazu sind n − 1 Skalarprodukte der Länge n auszuwerten. Gesamtaufwand zur Berechnung von vH := (n − 1) 2n Operationen.
(b) Berechnung von A−uvH . Die Berechnung erfordert n (n − 1) Multiplikationen und
genauso viele Subtraktionen.
Der Gesamtaufwand aus Schritt 1-4 beträgt
2n + O (1) + 2n (n − 1) + 2n (n − 1) = 4n2 + p̃ (n)
Operationen, wobei p̃ ein Polynom vom Maximalgrad 1 bezeichnet.
Dieser Eliminationsschritt muss für die kleiner werdenden, nicht-eliminierten unteren Blockmatrizen durchgeführt werden und beträgt
n−1
4
4 (n − i + 1)2 + p̃ (n − i + 1) = n3 + p (n)
3
i=1
Operationen, wobei p ein Polynom vom Maximalgrad 2 bezeichnet.
Bemerkung 3.7 Der Aufwand, das faktorisierte Gleichungssystem QRx = b nach x aufzulösen, beträgt 3n2 arithmetische Operationen.
23
4
Eine weitere Anwendung des QR-Verfahrens: Lineare
Ausgleichungsrechnung
In diesem Kapitel werden wir die Lösung des folgenden Problems betrachten. Sei f eine physikalische Grösse z.B. Spannung, Temperatur etc, die von verschiedenen Parametern abhängt
z.B. den Ortskoordinaten, der Zeit, etc. Mathematisch formuliert, betrachten wir eine Abbildung f : Rk → R. Wir nehmen an, dass die Funktion f nicht kontinuierlich sondern lediglich
gemessene Wertepaare vorliegen
(i) (i) y ,b
für 1 ≤ i ≤ n.
Hierbei bezeichnet b(i) ∈ R den Messwert an Parameterpunkt y(i) ∈ Rk , der mit f y(i) bis
auf Messfehler übereinstimmt.
Ziel ist es nun, eine lineare (genauer: affine) Abbildung
f˜ (y) = a0 +
k
j=1
a j yj
(4.1)
zu finden, welche „möglichst gut“ die Wertepaare y(i) , b(i) approximiert. Gesucht ist hier
der Koeffizientenvektor a = (aj )kj=0, welcher die lineare Abbildung festlegt. Die folgende Abbildung illustriert ein charakteristisches Beispiel.
Linearer Fit von Messdaten.
Um den Begriff „möglichst gut“ mathematisch zu präzisieren, führen wir ein geeignetes
Mass ein. Zunächst stellen wir fest, dass im idealen Fall
f˜ y(i) = b(i) ∀1 ≤ i ≤ n
(4.2)
gilt und alle Wertepaare exakt von der Funktion f˜ „getroffen“ werden. Setzt man den Ansatz
(4.1) in (4.2) ein, ergibt sich
a0 +
k
j=1
(i)
aj yj = b(i)
24
∀1 ≤ i ≤ n.
(4.3)
n
(i)
Wir setzen Y(j) := yj
i=1
n
für 1 ≤ j ≤ k und b : = b(i) i=1 ∈ Rn und definieren die Matrix
A ∈Rn×(k+1) durch die Spaltenvektoren
A = 1 | Y(1) | Y(2) | Y(3) | . . . | Y(k)
mit 1 = (1, 1, . . . , 1)⊺ .
Damit lässt sich (4.3) auch kompakt schreiben gemäss
Aa − b = 0.
Für n > (k + 1) ist dieses lineare Gleichungssystem (LGS) überbestimmt, d.h., es existieren
mehr Gleichungen als Unbekannte und das LGS besitzt im allgemeinen keine Lösung. In der
linearen Ausgleichsrechnung besteht die Aufgabe darin, einen Vektor a = (ai )ki=0 zu finden,
so dass Aa − b „im quadratischen Mittel“ möglichst klein ist. Die Aufgabe lautet: Finde
a ∈ Rk+1 so dass die Abbildung
F : Rk+1 → R,
F (x) :=
n
an der Stelle x = a minimal ist:
F (a) ≤ F (x)
i=1
(Ax − b)2i
∀x = (xi )ki=0 ∈ Rk+1.
Aus der Analysis ist bekannt, dass eine notwendige Bedingung für eine Minimalstelle durch
∂
F (a) = 0
∂ai
∀1 ≤ i ≤ k :
gegeben ist. Diese Normalengleichungen lauten explizit:
∀1 ≤ i ≤ k :
2
n
j=1
k
n
Aj,i (Aa)j − bj = 2
Aj,i
Aj,ℓ aℓ − bj = 0.
j=1
Der Wert a ist dann charakterisiert durch
ℓ=1
(4.4)
A⊺ Aa = A⊺ b.
Dies ist ein lineares Gleichungssystem mit quadratischer Matrix A⊺ A ∈ Rk×k und rechter
Seite A⊺ b ∈ Rk .
Satz 4.1
a. Das lineare Ausgleichsproblem: Suche a ∈ Rk+1 , so dass
Aa − b = min Aa − b =: min F (y)
y∈Rk+1
gilt, besitzt mindestens eine Lösung.
y∈Rk+1
(4.5)
b. Die Bilder verschiedener Lösungen a1 , a2 ∈ Rk+1 sind gleich: Aa1 = Aa2 . Daher ist das
Residuum r = b − Aa1 = b − Aa2 eindeutig und genügt der Beziehung
A⊺ r = 0.
25
c. Das Problem (4.4) ist äquivalent zum linearen Ausgleichsproblem (4.5).
Der Beweis wird in der Vorlesung Numerik 1 nachgeholt.
Der einfachste Fall liegt vor, wenn die Matrix A vollen Spaltenrang besitzt, also die Spalten
von A linear unabhängig sind. Dann gilt
Ax = 0 =⇒ x = 0.
Die Matrix A⊺ A der Nomalengleichung ist dann regulär, da die Symmetrie von A⊺ A offensichtlich ist und für alle x = 0 gilt Ax = 0 und
x, A⊺ Ax = Ax, Ax = Ax2 > 0.
Die Minimallösung kann dann mit Hilfe des QR-Verfahren, angewendet auf die Normalengleichung (4.4), gelöst werden.
26
Jan
Feb
März
April
Mai
Juni
Juli
Aug
Sept
Okt
Nov
Dez
5
Zürich
1901-1960
−1.0
0.2
3.9
7.7
12.1
15.0
16.7
16.0
12.9
7.8
3.0
0.0
Zürich
1961-1990
−0.5
0.9
4.2
7.9
12.2
15.4
17.7
16.8
13.9
9.2
3.9
0.6
Säntis
1961-1990
−7.6
−8.0
−7.0
−4.6
−0.5
2.4
4.9
4.9
3.4
1.0
−4.2
−6.4
Tabelle 1: Gemittelte Klimatabelle
Jungfraujoch
1961-1990
−13.6
−14.2
−13.1
−10.8
−6.6
−3.7
−1.2
−1.2
−2.6
−5.2
−10.4
−12.3
Schnelle Fouriertransformation (FFT)
In vielen Anwendungen der Statistik liegen Messdaten vor, aus denen empirische Gesetze herauszulesen sind. Gerade in der Signalverarbeitung oder bei der Ausbreitung akustischer oder
elektromagnetischer Wellen (Hören, Handy-Empfang) sind die beschreibenden Funktionen eine (verrauschte) Überlagerung (Linearkombination) weniger signifankter Wellen der Bauart
ei λn x . Die Fouriertransformation erlaubt es, aus gemessenen Signalen die wesentlichen Schwingungsanteile herauszufiltern. Diese reduzierte Information kann dann sehr effizient übermittelt
werden und wird dann vom Empfänger mittels inverser Fouriertransformation zurückübersetzt.
Es sei hier betont, dass das effiziente Herausfiltern der wesentlichen Information aus komplizierten Signalen und deren schnelle Übertragung eine immense Bedeutung für viele Bereiche
unseres Alltags besitzt.
5.1
Einleitendes Beispiel (Teil I)
In der Klimatologie interessiert man sich unter anderem für Temperaturmittelwerde über gewisse Zeitintervalle an verschiedenen Orten. Für einen festgewählten Ort, hängt dieser Wert
noch vom Mittelungszeitraum ab. Je länger diese Epoche ist, desto weniger sollten die Mittelwerte um einen Gleichgewichtszustand schwanken. Berechnen wir an einem Ort beispielsweise
die Temperatur gemittelt über einen festen Monat, so sind die Schwankungen dieses Wert über
die vergangenen hundert Jahre relativ klein. Dennoch kann man daraus die durchschnittliche
Erwärmung der Erde ablesen. Eine Mittelung über längere Zeiträume „verschmiert“ immer
stärker die Detailinformation. So ist beispielsweise bekannt, dass der durchschnittliche Temperaturanstieg in den Sommermonaten Juli/August signifikant grösser ist als in den Wintermonaten Januar/Februar. Diese Information geht natürlich verloren, wenn über das ganze
Jahr gemittelt wird.
Im folgenden Experiment betrachten wir langjährige Monatsmittel der Temperatur an
verschiedenen Orten und für verschiedene zeitliche Mittel.
Die Fourier-Analyse wird uns erlauben, diese Daten miteinander zu vergleichen und physi27
kalisch zu interpretieren. Im folgenden Abschnitt werden wir die diskrete Fouriertransformation (DFT) einführen und danach die DFT zur Interpretation dieses Beispiels verwenden.
5.2
Diskrete Fouriertransformation
Konvention: Mit R wird die Menge der reellen und mit C die Menge der komplexen Zahlen
bezeichnet. Die Komponenten eines Vektor a ∈ Cn bzw. a ∈ Rn werden mit ai , 0 ≤ i ≤ n − 1,
bezeichnet, und wir verwenden die Kurzschreibweise a = (ai )n−1
i=0 .
Jede √
komplexe Zahl w ∈ C besitzt eine eindeutige Darstellung w = u + i v mit u, v ∈ R
und i = −1 der imaginären Einheit; u wird der Real- und v der Imaginärteil von w genannt:
u = Re w,
v = Im w.
Die „komplexe Konjugation“ einer komplexen Zahl w = u + i v wird mit w bezeichnet und
durch
w := u − i v
definiert.
Wir betrachten eine stetige, periodische Funktion f : [a, b] → C (im folgenden „Signal“
genannt), die in regelmässigen Abständen abgetastet wird. Dies ergibt den Vektor
n−1
f = (fr )n−1
r=0 = (f (a + r∆t))r=0
mit ∆t = (b − a) /n. In der Praxis ist von der Funktion f nur der Vektor f und die Periodenn−1
länge (b − a) bekannt und das Ziel ist, eine Funktion mit Hilfe der Wertepaare (a + r∆t, fr )r=0
zu bestimmen, welche f approximiert. Der Ansatz ist durch Exponentialfunktionen gegeben
Die Interpolationsbedingungen
n−1
2π
1 ˆ i b−a
mt
˜
.
f (t) =
fm e
n m=0
fr = f˜ (r∆t)
führen auf die Bestimmungsgleichungen
fr =
für 1 ≤ r ≤ n − 1
n−1
2π
1 ˆ i b−a
mr∆t
fm e
.
n m=0
(5.1)
n−1
2π
Für m ∈ {0, 1, 2, . . . n − 1} definieren wir die Vektoren wm ∈ Cn durch wm := ei m b−a r∆t
.
r=0
Diese erfüllen die folgenden Orthogonalitätsrelationen bezüglich des Euklidischen Skalarprodukt7
n−1
n−1
n−1
u, v =
uk vk
∀u = (uk )k=0
∈ Cn , ∀v = (vk )k=0
∈ Cn .
k=0
7
Das Zeichen „∀“ steht für „für alle“.
28
Satz 5.1 Für m, k ∈ {0, 1, 2, . . . n − 1} gilt
Beweis. Es gilt
wm , wk =
wm, wk =
n−1
r=0
e
i
n m=k
0 m=
k
2π
mr∆t
b−a
e
−i
2π
kr∆t
b−a
=
mit α = ei
. Offensichtlich gilt |α| = 1.
1.Fall: α = 1, d.h., m = k. Dann gilt
2π
(m−k)∆t
b−a
n−1
r=0
αr
wm , wk = n.
2. Fall: α = 1, d.h., m = k. Dann gilt mit ∆t = (b − a) /n
2π i (m−k)
2π
2π
i b−a
(m−k)∆tn
i b−a
(m−k)(b−a)
n
1
−
e
1
−
e
1
−
α
1
−
e
αr =
=
=
=
= 0.
2π
2π
2π
i
(m−k)∆t
i
(m−k)∆t
i
1−α
1 − e b−a
1 − e b−a
1 − e b−a (m−k)∆t
r=0
n−1
Die Interpolationsgleichung (5.1) lässt sich in der kompakten Form schreiben
f=
mit
1
Wf̂
n
(5.2)
n−1
f̂ = fˆi
.
f = (fi )n−1
i=0 ,
i=0
W bezeichnet die Matrix, welche die Vektoren wm , 0 ≤ m ≤ n − 1, als Spaltenvektoren
besitzt. Man beachte, dass W symmetrisch aber nicht hermitesch ist. Aus den Orthogonalitätsrelationen folgt
n−1
2π
ˆ
fs = f , ws =
fk e− i s b−a k∆t
(5.3)
k=0
n
Definition 5.2 Für einen beliebigen Vektor f = (fi )n−1
i=0 ∈ R ist die diskrete Fouriertransformation (DFT) zur Periodenlänge (b − a) durch
fˆs =
gegeben.
n−1
k=0
fk e− i s b−a k∆t
2π
Lemma 5.3 Die inverse Fourier-Transformation ist durch
n−1
gegeben.
2π
1 ˆ i s b−a
k∆t
fs =
fk e
n k=0
29
(5.4)
Beweis. Es gilt
n−1
n−1
n−1 n−1
n−1
2π
2π
2π
2π
1 1
1 ˆ i s 2π k∆t
=
fℓ e− i k b−a ℓ∆t ei s b−a k∆t =
fℓ
e− i k b−a ℓ∆t ei s b−a k∆t .
fk e b−a
n k=0
n k=0 ℓ=0
n ℓ=0
k=0
Man beachte, dass der Klammerausdruck gleich dem Skalarprodukt ws , wℓ ist. Mit der
Orthogonalitätsrelation aus Satz 5.1 erhalten wir daher das Gewünschte
n−1
1
fℓ ws , wℓ = fs .
n ℓ=0
Bemerkung 5.4 Man beachte, dass die Matrix W vollbesetzt ist und die naive Anwendung
von (5.4) einer Matrix-Vektor-Multiplikation entstricht mit einem Aufwand von 2n2 arithmetischen Operationen.
n
Lemma 5.5 Die gegebenen Daten seien reell f = (fr )n−1
r=0 ∈ R .
a. Dann gilt für 1 ≤ s ≤ n − 1
fˆs = fˆn−s .
Für gerades n und s = n/2 gilt insbesondere fˆs ∈ R.
b. Dann interpoliert das trigonometrische Polynom
n−1
⌊
1
2 ⌋
πn
2πmt
2πmt
fˆn cos b−a
t n gerade
T (t) := Â0 +
+ B̂m sin
Âm cos
+ n 2
b−a
b−a
0
sonst
m=1
(5.5)
die Wertepaare (r∆t, fr ), r = 0, 1, . . . , n − 1. Die Koeffizienten sind hierbei durch Â0 :=
fˆ0
und für 1 ≤ m ≤ n−1
n
2
2
2
Âm :=
Re fˆm , B̂m := −
Im fˆm
(5.6)
n
n
gegeben.
Beweis. @ a: Die Rechenregeln für komplexe Konjugation ergeben
fˆn−s =
n−1
k=0
fk e
2π
i(n−s) b−a
k∆t
=
n−1
k=0
fk e e
i 2π
=1
2π
− i s b−a
k∆t
=
n−1
k=0
2π
fk e− i s b−a k∆t = fˆs .
@ b: Sei t = r∆t für ein r ∈ {0, 1, . . . , n − 1}. Wir verifizieren die Interpolationsbedingung.
Für 1 ≤ m < n/2 gilt
2π
2π
2π
2π
i b−a
mt
i b−a
(n−m)t
i b−a mt
i b−a
(n−m)t
ˆ
ˆ
ˆ
fm e
+fn−m e
= Re fm e
+e
2π
2π
+ i Im fˆm ei b−a mt − ei b−a (n−m)t
2πmt
2πmt
− 2 Im fˆm sin
.
= 2 Re fˆm cos
b−a
b−a
30
Â0
Â1
Â2
Â3
Â4
Â5
Â6
B̂1
B̂2
B̂3
B̂4
B̂5
Zürich
1901-1960
7.85833
−8.90393
−0.025
0.0666667
−0.0583333
−0.0127363
0.075
−0.0688996
0.418579
−0.116667
−0.0721688
−0.0977671
Zürich
1961-1990
8.51667
−8.9645
−0.025
−0.0333333
0.0583333
−0.10217
0.05
−0.510406
0.534049
0.0333333
−0.0433013
−0.106261
Säntis
1961-1990
−1.80833
−6.39046
0.25
0.266667
0.233333
−0.126208
−0.025
−2.24206
0.288675
0.25
−0.0288675
−0.307938
Jungfraujoch
1961-1990
−7.90833
−6.37602
0.308333
0.316667
0.208333
−0.140642
−0.00833333
−2.26706
0.274241
0.2
−0.101036
−0.332938
Tabelle 2: Fourierkoeffizienten der gemittelten Klimatabelle
Daraus folgt
n−1
⌊
n−1
2 ⌋
2π
2πmt
2πmt
1
i b−a mt
ˆ
˜
= Â0 +
fm e
Âm cos
+ B̂m sin
+ γn (t) ,
f (t) =
n m=0
b
−
a
b
−
a
m=1
wobei der Koeffizient γn (t) durch
1
γn (t) := fˆn2
n
πn
πn
t + i sin
t
cos
b−a
b−a
definiert ist. Da der Imaginärteil von γn (t) in allen Stützstellen r∆t verschwindet, interpoliert
das trigonometrische Polynom T (t) aus (5.5) die Wertepaare (r∆t, fr ) für 0 ≤ r ≤ n − 1.
5.3
Einleitendes Beispiel (Teil II)
Wir wollen nun die Daten aus Tabelle 1 mit Hilfe der Fourier-Transformation analysieren und
beginnen mit dem Verhalten des zeitlichen Verlaufs. Die Periodenlänge beträgt ein Jahr und
die Zeitschritte einen Monat, d.h., b − a = 1 und ∆t = 1/12. Damit gilt
i m2πr 11
wm := e 12
.
r=0
Die Matrix W ist eine 12 × 12 Matrix. Da die gegebenen Daten reell sind, verwenden wir
ein trigonometrisches Polynom zur Interpolation. Die Kombination von (5.4) und Lemma 5.5
liefert nach expliziter Rechnung die Koeffizienten. Aus der Koeffiziententabelle liest man leicht
ab, dass beispielsweise der Temperaturverlauf in Zürich zwischen 1901 und 1960 gut durch die
Funktion
f˜ (t) = 7.85833 − 8.90393 cos 2πt + 0.418579 sin 4πt
und für der Temperaturverlauf in Zürich zwischen 1961-1990 durch die Funktion
g̃ (t) = 8.51667 − 8.9645 cos 2πt + 0.534049 sin 4πt
31
Trigonometrische Approximation des Temperaturverlaufs und gemessene Datenpunkte.
Schwarz: Zeitraum 1901-1960. Rot: Zeitraum 1961-1990.
wiedergegeben wird (5.3) und anstelle von 12 Datenpunkten lediglich 3 Koeffizienten zur
Wiedergabe des Verlaufs benötigt werden.
Die folgende Grafik vergleicht die Temperaturverläufe von Zürich (1961-1990) mit den
entsprechenden Daten für den Säntis und das Jungfraujoch.
Trigonometrische Approximation des Temperaturverlaufs und
gemessene Datenpunkte. Zeitraum 961-1990. Schwarz: Zuerich.
Rot: Saentis. Blau: Jungfraujoch.
Zur physikalischen Interpretation der Fourierkoeffizienten:
32
Der Koeffizient â0 entspricht dem Jahresmittel. Es fällt auf, dass die Fourierkoeffizienten von je zwei Messreihen ausser â0 sehr gut übereinstimmen. Der mittlere Temperaturgang
entspricht fast einer reinen Grundschwingung mit der Periode von einem Jahr. Im Vergleich
zu den Messwerten in Zürich sind bei den beiden Bergstationen merkliche Anteile von höheren Frequenzen vorhanden und die Amplituden der Grundschwingung wesentlich geringer.
Wir versuchen im folgenden die Beobachtungen physikalisch zu deuten: Die Landmassen im
Mittelland erwärmen sich hauptsächlich durch die Sonneneinstrahlung und bestimmen die Monatsmittel der Lufttemperatur wesentlich. Vermutlich wird der mittlere Temperaturverlauf in
Zürich wesentlich von der Sonneneinstrahlung und der Tageslänge diktiert. Gegenüber dem
Sonnenstand (Maximum am 21.6.) hinkt das Temperatursignal hinterher. Die Verzögerung ist
noch deutlicher erkennbar in den Grundschwingungen, die aus den Daten der Bergstationen
abgeleitet wurde.
5.4
Die schnelle Fouriertransformation
Für das betrachtete Beispiel mit zwölf Datenpunkten spielt die Komplexität der Fouriertransformation keine Rolle. In der Praxis treten jedoch häufig Probleme auf, wo eine riesige Menge
an Daten gemessen wurde und die charakteristischen Eigenschaften herausgefiltert werden
sollen. Der Erfolg der Fouriertransformation zur Analyse und Kompression von Daten beruht wesentlich auf der Tatsache, dass ein schneller Algorithmus zur Fouriertransformation
existiert.
In Bemerkung 5.4 haben wir festgestellt, dass eine “naive” Anwendung der Definition einen
Aufwand von O (N 2 ) arithmetischen Operationen benötigt. Dies würde dazu führen, dass sehr
grosse Datenmengen auch mit modernsten Computern nicht analysierbar wären.
In diesem Abschnitt werden wir die schnelle Fouriertransformation behandeln, welche die
Transformation mit einem Aufwand von O (N log N ) berechnet. Dies ist ein Beispiel, wie
das Verwenden hierarchischer, baumartiger Algorithmen die Komplexität einer Berechnung
drastisch reduzieren kann.
−1
N
Wir betrachten die Aufgabe für gegebene Koeffzienten (fk )N
die Fourierkoeffizik=0 ∈ R
enten
N −1
1 βj =
fk ωnjk , j = 0, 1, 2, . . . , N − 1
(5.7)
N k=0
zu berechnen, wobei wir
ωm := e−2π i /2
m
gesetzt und N = 2n für eine Ganzzahl n > 0 angenommen haben. (Das Verfahren von Cooley
und Tukey lässt sich am einfachsten erklären für den Fall N = 2n ist aber verallgemeinerbar
für beliebiges N .)
Die Herleitung des Algorithmus basiert auf der Interpolationseigenschaft:
mit
p (xk ) = fk ,
des trigonometrischen Polynoms
k = 0, 1, . . . , N − 1
xk = 2πk/N,
p (x) := β0 + β1 ei x + . . . βN −1 ei x(N −1)
33
mit den Koeffizienten βj aus (5.7). Sei N = 2n . Ferner seien
p0 (x) := β0,0 + β0,1 ei x + . . . β0,M −1 ei x(M −1)
p1 (x) := β1,0 + β1,1 ei x + . . . β1,M −1 ei x(M −1)
diejenigen trigonometrischen Polynome der halben Ordnung M = N/2
p0 (x2ℓ ) = f2ℓ ,
p1 (x2ℓ ) = f2ℓ+1,
für ℓ = 0, 1, . . . , M − 1.
Dann
interpoliert
p0 (x)
an allen geradzahlig indizierten Stützstellen (x2k , f2k ) und q (x) :=
2π
π
p1 x − N = p1 x − M an allen Stützpunkten (x2k+1 , f2k+1 ) mit ungeradem Index. Wegen
1 für gerades k,
i xk M
i πk
e
=e =
−1 für ungerades k
interpoliert daher das trigonometrische Polynom
1 + ei M x
1 − ei M x
π
p̃ (x) :=
p0 (x) +
p1 x −
2
2
M
(5.8)
an allen Stützstellen: p̃ (xk ) = fk , k = 0, 1, . . . , N − 1. Da es offensichtlich ein Polynom
(N − 1)-ten Grades ist, stimmt p̃ (x) mit p (x) überein. Wir haben so die Bestimmung von
p (x) (d.h. der Koeffizienten βj ) auf die Bestimmung zweier anderer Polynome halben Grades
zurückgeführt. Dieses Vorgehen kann man natürlich wiederholen. Man bekommt so ein nstufiges Rekursionsverfahren: Allgemein hat man für jedes m = 0, 1, . . . , n (M := 2m−1 ,
R := 2n−m) R trigonometrische Polynome vom Grad 2M − 1 der Form
(m)
(m)
(m)
pr(m) (x) = βr,0 + βr,1 ei x + . . . + βr,2M −1 ei(2M −1)x ,
mit den Interpolationseigenschaften
pr(m) (xRℓ ) = fRℓ+r ,
ℓ = 0, 1, . . . , 2M − 1,
r = 0, 1, . . . , R − 1
r = 0, 1, . . . , R − 1.
(5.9)
(5.10)
Diese Polynome genügen analog zu (5.8) für m = 1, 2, . . . , n (M := 2m−1, R := 2n−m) den
Rekursionsformeln
(m−1) π
i Mx
2pr(m) (x) = 1 + ei M x p(m−1)
(x)
+
1
−
e
p
x
−
, r = 0, 1, . . . , R − 1. (5.11)
r
R+r
M
Die Polynome pr (x) = βr,0 , r = 0, 1, . . . , N − 1, können sofort angegeben werden: (5.10)
ergibt
(0)
βr,0 = fr , r = 0, 1, . . . , N − 1.
(5.12)
(0)
(0)
Für die Koeffizienten βr,k der übrigen Polynome pr (x) erhält man durch Koeffizientenvergleich aus (5.11) die Rekursionsformeln:


(m)
(m−1)
(m−1) k
2βr,k = βr,k
+ βR+r,k ωm 
m = 1, 2, . . . , n


für
r = 0, 1, . . . , R − 1; R = 2n−m
(5.13)

m−1
(m)
(m−1)
(m−1) k 

k = 0, 1, . . . , M − 1; M = 2
.
2βr,M +k = βr,k
− βR+r,k ωm
(m)
(m)
34
Ausgehend von der Startwerten (5.12) liefern diese Formeln für m = 1, 2, . . . , n schliesslich
(n)
die gesuchten Koeffizienten βk = β0,k , k = 0, 1, . . . , N − 1. Zur praktischen Realisierung
N −1
dieses Verfahrens benötigt man wiederum nur einen Vektor f̃ = f˜i
zur Speicherung der
i=0
(m−1)
βr,k
und
(m)
βr,k ,
wenn man nach der Auswertung von (5.13)
βR+r,k durch βr,k
Koeffizienten
(m)
bzw. βr,M +k überschreibt. Die folgende Permutationsabbildung wird Bitumkehrung genannt
und ist für eine Ganzzahl z mit Binärdarstellung
z = α0 + α12 + . . . + αn−1 2n−1 ,
durch
(m−1)
(m)
aj ∈ {0, 1}
ρ (z) := αn−1 + αn−22 + . . . + α02n−1
definiert. Wir permutieren den Startvektor f̃ entsprechend ρ (r)
f˜ρ(r) = fr ,
r = 0, 1, . . . , N − 1.
Das folgende Programm der schneller Fourier-Transformation liefert dann schliesslich
f˜k = N βk ,
k = 0, 1, . . . N − 1
in der natürlichen Anordnung. (Der Faktor N = 2n erklärt sich daraus, dass im folgenden
Programm der Faktor 2 in (5.13) weggelassen wurde.
for m := 1 to n do
begin
for k := 0 to 2m−1 − 1 do
begin
k
e := ωm
;
for r := 0 to 2n − 1 step 2m do
begin
u := f˜r+k
v := e × f˜r+k+2m−1
f˜r+k := u + v f˜r+k+2m−1 := u − v;
end
end
end;
5.5
Weitere Anwendungen: Die schwingende Saite und die gedämpfte Schwingung eines Massepunktes
Wir betrachten eine Seite (beispielsweise eine Geigenseite) der Länge a > 0, die in den Punkten
0 und a eingespannt ist. Die Seite kann durch Zupfen oder Streichen zum Schwingen angeregt werden, und wir bezeichnet die Auslenkung zum Zeitpunkt t ≥ 0 im Punkt x ∈ (0, a)
mit u (x, t). Um diese Auslenkung zu berechnen, benötigen wir das zugehörige physikalische
Bewegunsgesetz, welches aus den Newtonschen Kraftgesetzen hergeleitet werden kann,
2
∂ 2u
2∂ u
=
α
∂t2
∂x2
x ∈ (0, a) , t ∈ [0, T ] ,
35
(5.14)
wobei T einen festen Endzeitpunkt und α eine positive Materialkonstante bezeichnet. Diese
Gleichung enthält Ableitungen nach mehreren Variablen (t, x) und wird daher partielle Differentialgleichung genannt. Um die Gleichung zu lösen, verwenden wir einen Separationsansatz
u (x, t) = v (x) w (t) ,
welcher für partiellen Differentialgleichungen geeignet ist, bei denen die Variablen in einem
Rechtecksgebiet (0, a)×(0, T ) liegen und bei denen die Gleichung (5.14) linear in der Funktion
3
, etc. enthält) und homogen ist (also keine Funktion f als
u ist (also keine Potenzen u2, ∂u
∂x
weiteren additiven Term in (5.14) enthält). Einsetzen des Separationsansatzes in (5.14) ergibt
(5.15)
v (x) ẅ (t) = α2 v ′′ (x) w (t) .
Hier bezeichnet der doppelte Punkt auf einer Funktion die zweite Zeitableitung und der Doppelstrich die zweite Ableitung nach dem Ort x. Falls w (t) = 0 und v (x) = 0 gilt, lässt sich
(5.15) auch in der Form
ẅ (t)
v ′′ (x)
= α2
w (t)
v (x)
schreiben. Die linke Seite dieser Gleichung hängt nur von t ab und die rechte nur von x.
Gleichheit für alle x und t kann daher nur gelten, falls die jeweiligen Quotienten konstant
sind:
v ′′ (x)
ẅ (t)
= −λ
und
= −α2λ.
v (x)
w (t)
Das sind zwei gewöhnliche Differentialgleichungen (d.h. Differentialgleichungen für Funktionen
mit einer Variablen)
(5.16a)
(5.16b)
v ′′ (x) = −λv (x) x ∈ (0, a)
ẅ (t) = −α2λw (t) t ∈ [0, T ] .
Die Vorgabe, dass die Saite in den Punkten 0 und a eingespannt ist, spiegelt sich in den
Randbedingungen wieder:
u (0, t) = v (0) w (t) = 0 und u (a, t) = v (a) w (t) = 0
∀t ∈ [0, T ] .
(5.17)
Da wir uns nicht für die Nulllösung (u (x, t) = 0 für alle x, t) interessieren, folgt dass t ∈ [0, T ]
existiert mit w (t) = 0. Daher ist (5.17) äquivalent zu
v (0) = 0 und v (a) = 0,
(5.16c)
und das sind die Randbedingungen für die Gleichung (5.16a). Gleichung (5.16a) mit (5.16c)
hat nicht für jedes λ ∈ R eine nichttriviale Lösung (d.h. eine Lösung, die verschieden von
der Nulllösung ist). Mit der Produktregel für Integrale folgt für v = 0 (hier bezeichnet 0 die
Nullfunktion auf (0, a))
a
a
a
a
2
2
′′
′ a
′ 2
λ
v =−
vv = − vv |0 +
(v ) =
(v ′ ) > 0,
0
0
0
0
da die Funktion v nicht gleichzeitig konstant, Nullrandwerte haben und von der Nullfunktion
verschieden sein kann. In der Theorie der gewöhnlichen Differentialgleichung wird bewiesen,
36
dass sich jede Lösung von (5.16a) als Linearkombination zweier linear unabhängiger Lösungen
√ λx
von (5.16a) schreiben lässt. Einfache Rechnung zeigt, dass die Funktionen v1 (x) = cos
√ und v2 (x) = sin
λx zwei linear unabhängige Lösungen von (5.16a) sind und die allgemeine
Lösung die Form
√ √ λx + B sin
λx
v (x) = A cos
besitzt. Einsetzen in die Randbedingungen liefert die Bedingungen
√
√
A=0
und
A cos λa + B sin λa = 0,
d.h. A = 0 und
√
B sin λa = 0.
(5.18)
Die Wahl B = 0 würde wiederum auf die Nulllösung führen, und wir betrachten daher den
Fall B = 0. Dann folgt aus (5.18)
√
λa = kπ
∀k = 1, 2, . . .
Wir haben damit die Lösungen von (5.16a), (5.16c) bestimmt:
kπ
v (x) = B sin
x .
a
Wir müssen daher die zweite Gleichung (5.16b) nur für diese Werte λk = (kπ/a)2 lösen. Die
Überlegungen für die Funktion v lassen sich übertragen auf die Funktion w, und wir erhalten
w (t) = C cos α λk t + D sin α λk t.
Insgesamt haben wir gezeigt, dass für k ∈ N≥1 die Funktionen
uk (x, t) := sin
λk x C cos α λk t + D sin α λk t
mit λk = (kπ/a)2
die Gleichung (5.14) mit Randbedingungen (5.17) lösen. Vom praktischen Standpunkt ist
diese Lösung noch nicht ganz befriedigend. Interessanter ist die Frage, wie die eingespannte
Saite schwingt, wenn deren Ausgangslage und die durch Zupfen oder Streichen mitgegebene
Anfangsgeschwindigkeit vorgegeben ist:
u (x, 0) = g (x)
und
∂u
(x, 0) = h (x)
∂t
∀x ∈ (0, a) .
Um dieses Problem zu lösen, stellen wir zunächst fest, dass jede Linearkombination aus Funktionen uk die Gleichung (5.14) mit Randbedingungen (5.17) löst. Das führt zum Ansatz
u (x, t) =
∞
k=1
uk (x, t) =
∞
k=1
sin
λk x Ck cos α λk t + Dk sin α λk t .
(5.19)
Dieser Ansatz macht nur Sinn, falls die unbekannten Koeffizienten Ck , Dk so gewählt werden
können, dass die Reihe konvergiert und gliedweise zweimal differenzierbar sind. Die Anfangsbedingungen ergeben dann
∞
k=1
sin
λk x Ck = g (x)
und α
∞
k=1
Dk
37
λk sin
λk x = h (x)
∀x ∈ (0, a) . (5.20)
Mit diesem mathematischen Zugang sind wir also auf das Problem gestossen, gegebene „physikalische“ Funktionen in trigonometrische Reihen zu entwickeln und durch Koeffizientenvergleich die gesuchten Konstanten Ck , Dk abzulesen. Wegen der Periodizität der Sinusund Kosinusfunktion können, beschränken wir uns auf periodische Anfangsbedingungen, d.h.,
g (0) = g (a) = 0 und h (0) = h (a) = 0 („= 0“ wegen der Einspannbedingung) . Der Ansatz
(5.19) enthält unendlich viele Summanden, so dass selbst bei bekannten Koeffizienten Ck , Dk
die Funktion u (x, t) im Allgemeinen nicht in endlicher Zeit ausgewertet werden kann. Indem
die Summe im Ansatz (5.19) durch eine endliche Summe ersetzt wird:
u (x, t) =
m
m
k=1
sin
λk x Ck cos α λk t + Dk sin α λk t
können jedoch die Gleichheiten in (5.20) im Allgemeinen nicht gelten. Die Idee ist nun die
Funktion g in geeigneten Punkten
√ zu interpolieren. Der Einfachheit halber nehmen wir für
das folgende a = π an, so dass λk = k gilt. Wir zerlegen das Intervall [0, π] in Gitterpunk−1
te xk = 2π Nk für k = 0, 1, 2, . . . N − 1 und bestimmen die Fourierkoeffizienten (ĝk )N
k=0 im
trigonometrischen Polynom
N −1
2π
1 ĝk ei b−a kx ,
p (x) =
N k=0
so dass die Interpolationsbedingung
p (xk ) = gk
∀0 ≤ k ≤ N − 1
erfüllt ist. Dann werden die Koeffizienten im Sinus-Kosinus-Polynom (vgl. (5.5)) gemäss (5.6)
bestimmt. Die Koeffizienten zu den Kosinustermen müssen (näherungsweise) verschwinden
und werden daher weggelassen. Durch diesen Ansatz erhält man also eine numerische Approximation der Lösung der schwingenden Saite.
Ein ähnliches Problem, welches sich durch einen Fourierreihenansatz näherungsweise lösen
lässt, wird durch eine gedämpfte Schwingung unter dem Einfluss periodischer Zwangskräfte
beschrieben. Wir stellen uns einen metallenen Massepunkt an einer Feder aufgehängt vor, der
periodischen Kräften ausgesetzt ist — beispielsweise in einem periodischen äusseren magnetischem Feld schwingt — und wollen dessen Auslenkung u (t) zum Zeitpunkt t ∈ [0, T ] zu bestimmen (damit stellt u̇ (t) die Geschwindigkeit des Massepunktes zum Zeitpunkt t dar und ü (t)
die Beschleunigung.) Die Bewegung eines solchen elastisch angebundenen und Reibungskräften
unterliegenden Punktes mit der Masse m wird durch die gewöhnliche Differentialgleichung
mü = −k 2u − r u̇ + K (t)
beschrieben, wobei m > 0 die Masse, k > 0 eine Materialkonstante für die Feder, r > 0
den inneren Reibungskoeffizienten und
√ K (t) die periodische äussere Kraft darstellt. Mit den
Abkürzungen ρ = r/ (2m), ω0 = k/ m lässt sich diese Differentialgleichung auch in der Form
schreiben
1
ü + 2ρu̇ + ω02u = K (t) .
m
Die Periodizität von K wird durch die Bedingung K (T ) = K (0) wiedergespiegelt. Der Einfachheit halber nehmen wir an, dass die Periodenlänge T = 2π erfüllt. Wir betrachten hier
38
lediglich den Fall einer geraden Zwangskraft8 (vgl. (5.5))
1
K (t) := T∞ (t) :=
ak cos (kt) .
m
k=0
∞
(5.21)
1
Man beachte, dass die endliche Reihe TN (t) dann eine Approximation von m
K darstellt, deren
Koeffizienten wieder durch die Interpolationsbedingung mittels schneller Fouriertransformation gewonnen werden können. Die Idee ist nun Lösungen der Gleichung
ük + 2ρu̇k + ω02uk = cos (kt)
für alle k ∈ N zu bestimmen, so dass die exakte Lösung durch die Linearkombination
u (t) =
gegeben ist.
∞
k=0
ak uk (t)
(5.22)
Bemerkung 5.6 Man beachte, dass die Konvergenz von Funktionenreihen wie beispielsweise
(5.21) vom Abklingen der Koeffizienten ak abhängt. Offensichtlich gilt
|ak cos (kt)| ≤ |ak |
∀t,
so dass aus dem Majorantenkriterium
die Konvergenz von (5.21) für jedes t aus der absoluten
Konvergenz der Reihe
ak gefolgert werden kann.
Die detaillierte Konvergenztheorie von unendlichen Fourierreihen würde den Rahmen dieser Vorlesung sprengen. Wir verwenden diese lediglich als formale Reihen, die für Berechnungen immer durch eine endliche Summe ersetzt werden.
Für k = 0 gilt
ü0 + 2ρu̇0 + ω02u0 = 1
und wir sehen, dass die konstante Funktion
u0 = ω0−2
die Gleichung löst. Für k ≥ 1 müssen wir die Gleichung
lösen. Der Ansatz
ük + 2ρu̇k + ω02uk = cos (kt)
(5.23)
uk = Ak cos (kt) + Bk sin (kt) ,
eingesetzt in (5.23), ergibt daher die Bestimmungsgleichung
− Ak k 2 cos (kt) − Bk k 2 sin (kt) + 2ρ (−Ak k sin (kt) + Bk k cos (kt))
+ ω02 (Ak cos (kt) + Bk sin (kt)) = cos (kt) .
8
Der Fall einer ungeraden Zwangskraft lässt sich analog behandeln und daraus dann die Lösung für den
allgemeinen Fall gewinnen.
39
Sortieren nach Kosinus- und Sinustermen liefert
−Ak k 2 + 2ρBk k + ω02 Ak − 1 cos (kt) + −Bk k 2 − 2ρAk k + ω02Bk sin (kt) = 0.
Für Ak , Bk erhalten wir also folgendes lineares Gleichungssystem
2ρk
Ak
1
−k 2 + ω02
=
2
2
−2ρk
−k + ω0
Bk
0
mit der exakten Lösung
Ak =
ω02 − k 2
2
(ω02 − k 2 ) + 4k 2 ρ2
und Bk =
(ω02
2kρ
.
2
− k 2 ) + 4k 2 ρ2
Damit haben wir gezeigt, dass die Lösung der gedämpften Schwingungsgleichung unter periodischen Zwangskräften (formal) die Entwicklung
u (t) =
∞
k=0
2
ak
2
ω
−
k
cos
(kt)
+
2kρ
sin
(kt)
0
2
(ω02 − k 2) + 4k 2 ρ2
besitzt. Indem die Summe bei einem Index N −1 abgebrochen wird, erhält man eine numerische
Näherung der exakten Lösung.
Zusammenfassend erhält man auch für dieses Anwendungsbeispiel durch trigonometrische
1
Approximation der rechten Seite m
K mit Hilfe der schnellen Fouriertransformation zunächst
N −1
die Koeffizienten (ak )k=0 und durch
u (t) =
N
N
−1
k=0
2
ak
2
ω
−
k
cos
(kt)
+
2kρ
sin
(kt)
0
2
(ω02 − k 2) + 4k 2ρ2
eine Approximation uN der exakten Lösung u.
40
Herunterladen