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