Technische Universität München WiSe 7 / 8 Institut für Informatik Univ.-Prof. Dr. Hans-Joachim Bungartz Michael Obersteiner Philipp Samfass Numerisches Programmieren, Übungen Musterlösung 8. Übungsblatt: Gaußelimination mit Pivotsuche, LR-Zerlegung, Matrixnorm ) Gauß-Elimination und Pivotsuche Lösen Sie das lineare Gleichungssystem ( 3 ) x = ( ) mit der Gauß-Elimination: a) Ohne Spalten-Pivotsuche in exakter Arithmetik (d.h. keine Zeilenvertauschungen und ohne Runden rechnen) b) Ohne Spalten-Pivotsuche und mit Rundungsfehlern (korrektes Runden in dezimaler Gleitkomma-Darstellung mit 3 signifikanten Stellen. Bsp.:.36 =.36 ergibt.4). c) Mit Spalten-Pivotsuche und mit Rundungsfehlern wie in b). Lösung: a) Gauß-Elimination ohne Pivotsuche und mit exakter Arithmetik: ( ) ( ) x = =.9995..., x = (x ) =.4997... ( ).4997... x =..9995... b) Gauß-Elimination ohne Pivotsuche und mit Rundungsfehlern (3 Stellen):
( ) ( ). 3. 3. 3 ( ). 3. 3. 3 ( ) x =. Runden Der zweite Eintrag x ist in Ordnung, aber x ist komplett falsch! c) Gauß-Elimination mit Pivotsuche und mit Rundungsfehlern (3 Stellen): ( ) ( ) ( ) ( ) Runden x =, x = x / =.5 ( ).5 x =. Diesmal ist x für beide Einträge in der passen Größenordnung (vgl. i)). ) LR-Zerlegung In dieser Aufgabe wollen wir den Algorithmus der LR-Zerlegung aus der Vorlesung an Beispielen nachvollziehen und vergleichen. Die LR-Zerlegung zur Lösung eines linearen Gleichungssystems Ax = b besteht aus drei Teilen:. Zerlegung der Matrix A: A = L R. Vorwärtssubstitution: Ly = b 3. Rückwärtssubstitution: Rx = y a) Lösen Sie unter Verwung der Gauß-Elimination das lineare Gleichungssystem Ax = b mit 4 3 5 A = b = 3. b) Berechnen Sie die LR-Zerlegung (.) der Matrix A. c) Führen Sie nun zur Lösung von Ax = b die Vorwärts- und Rückwärtssubstitution (.) und (3.) durch. Verwen Sie den Vektor b aus Teilaufgabe a). d) Setzen Sie die LR-Zerlegung ebenfalls zur Lösung von Ax = c mit c = (,, ) T ein. Wie groß ist der zusätzliche Aufwand?
Lösung: Zunächst folgt eine kleine Einführung zur LR-Zerlegung. Zuerst wird die Matrix A in ein Produkt zweier Matrizen zerlegt, einmal in die linke untere Dreiecksmatrix L mit -ern auf der Diagonalen, und die rechte obere Dreiecksmatrix R. Daraufhin wird mit der Vorwärtsund der Rückwärtssubstitution das lineare Gleichungssystem gelöst. Eine mögliche Umsetzung der drei Abschnitte in Pseudocode sieht folgermaßen aus:. LR-Zerlegung: A = LR for i =:n % Fuer j e d e Z e i l e i for k=: i % Berechne Elemente L [ i, k ] L [ i, k ] := A[ i, k ] ; for j =:k L [ i, k ] := L [ i, k] L [ i, j ] R[ j, k ] ; L [ i, k ] := L [ i, k ] /R[ k, k ] ; for k=i : n % Berechne Elemente R[ i, k ] R[ i, k ] := A[ i, k ] ; for j =: i R[ i, k ] := R[ i, k] L [ i, j ] R[ j, k ] ;. Vorwärtssubstitution: Ly = b for i =:n y [ i ] := b [ i ] ; for j =: i y [ i ] := y [ i ] L [ i, j ] y [ j ] ; 3. Rückwärtssubstitution: Rx = y for i=n: : x [ i ] := y [ i ] ; for j=i +:n x [ i ] := x [ i ] R[ i, j ] x [ j ] ; x [ i ] := x [ i ] /R[ i, i ] ; Die Grundidee ist für die Algorithmen Gaußelimination und LR-Zerlegung natürlich die gleiche: Bringe A durch Zeilenumformungen auf Zeilenstufenform. Der Gauß-Algorithmus eliminiert sukzessive Einträge in einer Spalte i (äußere Schleife), geht also spaltenweise vor. Dagegen berechnet unser LR-Algorithmus für jedes i der äußeren Schleife die Einträge von L und R in der Zeile i; er arbeitet also zeilenweise. Die zweite Schleife über k läuft dementsprech über die nötigen Spaltenindizes von L und R. Um zu verstehen, warum der LR-Algorithmus die angegebene Form hat, betrachten wir die
Zerlegung genauer. A = L R bedeutet in Indexnotation A ik = n L ij R jk, j= i, k =,..., n wobei n die Dimension der Matrix A ist. Die Einträge A ik können in solche unterhalb bzw. oberhalb der Diagonalen aufgesplittet und getrennt betrachtet werden. i > k: Einträge unterhalb der Diagonalen: Zeile mal Spalte im Produkt L R ergibt aufgrund der Nullen eine Summe, die nur bis k läuft (kleinerer der beiden Indizes): A ik = n L ij R jk = j= L ik = k L ij R jk = j= k L ij R jk + L ik R kk j= ( ) k A ik L ij R jk /R kk. j= i k: Einträge oberhalb der Diagonalen: Die Summe läuft nur bis i (kleinerer der beiden Indizes): A ik = n L ij R jk = j= R ik = i L ij R jk = j= i L ij R jk + L ii R ik j= ( ) i A ik L ij R jk / L ii. }{{} j= = Damit erhalten wir exakt die Formeln der LR-Zerlegung aus dem angegebenen Algorithmus. Man macht sich leicht klar, dass aufgrund des zeilenweisen Durchlaufs der äußeren Schleife (über i) stets alle nötigen Werte schon vorhanden sind, um die neuen Einträge L ik und R ik zu berechnen. a) Lösungsschritte bei Anwung von Gauß-Elimination auf das Problem Ax = b.. 5 3 5 / / / 5/ 3. 4. x = 4 3 5 / / 3 4 3
b) Für die Berechnung der Zerlegung (.) von A = stellen wir zwei Möglichkeiten zur Verfügung: Die erste basiert auf den Algorithmen wie oben beschrieben und damit der Gaußelimination, die zweite auf dem Lösen von Gleichungen aus der Gleichung A = LR. LR-Zerlegung basier auf Gaußelimination Die Matrizen L und R denken wir uns mit lauter Nulleinträgen vorbelegt. Neu hinzukomme Einträge werden mit einer Box gekennzeichnet. i=: L : for k = : nichts zu tun (empty) R : for k = : 3 R[, k] = A[, k]; for j = : empty R = i=: L : for k = : R : for k = : 3 L[, ] = A[, ] = ; for j = : empty L[, ] = L[, ]/R[, ] = /4; L = R[, k] = A[, k]; for j = : R[, k] = R[, k] L[, ] R[, k]; / k = : R[, ] = R[, ] L[, ] R[, ] = / = ; k = 3 : R[, 3] = R[, 3] L[, ] R[, 3] = / 3 = /; R = -/
i=3: L : for k = : L[3, k] = A[3, k]; R : for k = 3 : 3 for j = : k k = : empty k = : L[3, ] = L[3, ] L[3, ] R[, ] = ; L[3, k] = L[3, k]/r[k, k]; L = / / R[3, 3] = A[3, 3]; for j = : R[3, 3] = R[3, 3] L[3, j] R[j, 3]; j = : R[3, 3] = / 3 = /; j = : R[3, 3] = / ( /); R = / Damit haben wir unsere gesuchte Zerlegung: A = L R = / / /.
Wir beginnen mit allen uns be- LR-Zerlegung basier auf Matrixmultiplikation kannten Informationen über die LR-Zerlegung von A: = Wir sehen 9 Unbekannte auf der rechten Seite, und für jeden der 9 Einträge in A entsteht eine Gleichung. Diese Gleichungen werden wir nun nacheinander (von oben nach unten oder von links nach rechts) durchgehen, und jedes Mal nach der fehlen Unbekannten auflösen. Beginnen wir mit dem Feld (, ):. =. Es gilt: A = 4! = R + + R = 4. Das Gleiche machen wir mit Feld (,): und damit = 4 A =! = L 4 + + L =. Verfolgen wir dieses Vorgehen weiter, erhalten und lösen wir nacheinander folge Gleichungen: (, ) 4 = R R = 4 (, ) = L 4 L = (3, ) = L 3 4 L 3 = (, ) = R R = (, ) = + R R = (3, ) = + L 3 L 3 = (, 3) 3 = R 3 R 3 = 3 (, 3) = 3 + R 3 R 3 = (3, 3) = 3 + + R 33 R 33 = Damit ergibt sich dann die selbe Lösung wie oben.
c) Substitution: Vorwärtssubstitution Ly = b: / / y y y 3 Rückwärtssubstitution Rx = y: / = x x x 3 5 3 y = (5, /, 3) T. = 5 / 3 x = (, 4, 3) T. d) Die Zerlegung ist bereits bekannt, daher müssen zur Lösung von Ax = c lediglich Vorwärts- und Rückwärtssubstitution durchgeführt werden. Der Aufwand hierfür ist O(n ) Operationen (vergleiche O(n 3 ) Operationen für die Berechnung der Zerlegung bei der Lösung von Ax = b). Substitution: Vorwärtssubstitution Lỹ = c: / / Rückwärtssubstitution Rx = ỹ: / x x x 3 y y y 3 = = ỹ = (,, ) T. x = ( /, /, ) T.
3) Matrixnorm Die Matrix-Grenzen-Norm- (auch als Spektralnorm bekannt) ist eine der wichtigsten Matrixnormen: Ax A = sup x x wobei die Vektornorm die bekannte Euklidische Länge entspricht: x = x +... + x n. Zeigen Sie, dass für eine diagonale Matrix D gilt: D = max i=,...,n d ii. Hinweis: Sei j so dass d jj = max i=,...,n d ii. Zeigen Sie: a) D d jj (Betrachten Sie ein Eigenvektor zu Eigenwert d jj ), b) D d jj. (Im Allgemeinen, die -Norm von A ist gleich dem größten Singulärwert von A: A = λmax (A T A) = σ max (A).) Lösung: a) D d jj. Sei e j der Vektor mit an der Stelle j und an alle andere Stellen:. e j = j.. e j ist ein Eigenvektor zu Eigenwert d jj : De j = d jj e j. Dann: Dx D = sup De j x x e j = d jje j = d jj e j = d jj b) D d jj :
Dx D = sup x x = sup x sup x = sup x = sup d jj x = d jj. x d + x d +... + x nd nn x +... + x n x d jj + x d jj +... + x nd jj x +... + x n x +... + x n d jj x +... + x n Zum Schluss: D d jj, D d jj, dann muss D = d jj gelten. 4) Orthogonale Matrizen Eine Matrix Q heißt Orthogonal, wenn gilt wobei I der Einheitsmatrix entspricht. QQ T = Q T Q = I, Zeigen Sie die folgen Eigenschaften orthogonaler Matrizen: a) det Q = ±, b) Q =. Hinweis: Verwen Sie det(ab) = det A det B und x = x T x. Zusatz: Wie stellen sich diese Eigenschaften für diagonale Matrizen graphisch dar? Zeichnen Sie die Kurven det D = ±, und D = in einem Diagramm von d gegen d. Lösung: a) det Q = ±: = det I = det(qq T ) = det Q det Q T = (det Q). Die Gleichung x = hat nur ± als Lösungen.
b) Q = : Qx Q = sup x x = sup x xt Q T Qx xt x = sup x xt Ix xt x = sup xt x x xt x = sup = x Zusatz:.5 det(d) = det(d) = - D = orthogonale.5 d -.5 - -.5 - - -.5 - -.5.5.5 d Unter diagonale Matrizen gibt es 4 orthogonale: ( ) ( ) ( ) ( ),,,. Zusatzaufgabe: Image Stitching mit Gauß-Elimination In dieser Aufgabe verwen wir die Gauß-Elimination zum Lösen linearer Gleichungssysteme im Bereich des Rechnersehens. Eine der Aufgaben, die durch Techniken der Bildverarbeitung bewältigt werden, ist das Zusammensetzen von Einzelbildern (engl. image stiching) bzw. die Erzeugung von Panoramabildern.
Will man zwei Bilder I und I aneinandernähen, detektiert der entspreche Algorithmus zunächst sogenannte Merkmalpunkte (engl. feature points) in beiden Bildern. Unter der Annahme, dass beide Bilder einen gemeinsamen Teil einer Szenerie zeigen, gibt es solche Merkmalpunkte in beiden Bildern. Anschließ findet eine Verknüpfung der Merkmalpunkte im ersten Bild I mit den zugehörigen Punkten im Bild I statt, wie in Abbildung gezeigt. Abbildung : Image stiching. In der Praxis treten viele Fehler beim Finden gemeinsamer Bildmerkmale auf. Allerdings gehen wir hier von perfekten Beziehungen zwischen den Punkten aus. Da sich die Punkte in der Bildebene befinden, existiert eine lineare Transformation H (im Englischen als homomorphy bezeichnet), die die Mengen von Merkmalpunkten aufeinander abbildet. Bezeichnet man die Merkmalpunkte in Bild I als x i, i =,... n und in Bild I als x i, i =,... n, so kann die Korrespondenz zwischen ihnen durch x = Hx ausgedrückt werden. Aufgabe: Gegeben seien die beiden Punktepaare I I ( ) ( ) 3 x = x = ( ) ( ). 4 x = x 3 = 4 Bestimmen Sie die entspreche x-transformationsmatrix H. Lösung: Gegeben seien zwei Merkmalpunkte x = [3 ] T und x = [4 3] T im Bild I und deren korrespondiere Punkte x = [ ] T und x = [ 4] T im anderen Bild I. Wie bereits erwähnt, lässt sich der Zusammenhang zwischen korrespondieren Punkten über die Transformation x = H x ausdrücken. Nun gilt es die Einträge der Homography-Matrix zu finden. Notieren wir zunächst den bekannten Zusammenhang für das erste Paar korrespondierer Punkte: x ( ) = H ( x ) ( ) h h = 3 h h x ( ) 4 = H ( x ) h h = h h ( ) 4 3 Nach der Matrix-Vektor-Multiplikation erhalten wir ein System mit vier Gleichungen mit den vier Unbekannten h, h, h, h.
3h + h = 3h + h = 4h + 3h = 4h + 3h = 4 Durch Tauschen der zweiten und dritten Gleichung erhalten wir das folge (lineare) Gleichungssystem, das wir mittels Gauß-Elimination lösen: 3 h 3 A h = b 4 3 h 3 h = 4 3 3 4 3 h 4 4 3 4 Die Gauß-Elimination erfolgt wie folgt: 3 4 3 3 4 3 4 / 4 3 3 3 3 3 / 4 3 4 3 4 3 3 3 3 4 3 3 Damit lässt sich leicht h = 4, h =, h =, h = berechnen. Weiterer Lösungsweg: Hx = x Gauß : und damit folgt die Lösung H = und Hx = x lässt sich schreiben als H [ ] [ ] x x = x x T [ ] [ ] T T x H T x = x T x T ( ) ( ) 3 H T = 4 3 4 ( ) ( ) 3 3 4 3 4 ( ). 4 H T = 4 ( 4 ),