Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Studientag zur Algorithmischen Mathematik Numerik und lineare Algebra Winfried Hochstättler Diskrete Mathematik und Optimierung FernUniversität in Hagen 30. Juni 2012 Outline Kodierung von Zahlen Rundungsfehler Outline Kodierung von Zahlen Rundungsfehler LGS Cholesky-Faktorisierung Fehlerfortpflanzung LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Zahldarstellung im B-adischen System Satz Sei x ∈ R \ {0}. Dann gibt es eine eindeutige Darstellung x = σB n ∞ X x−i B −i i=1 mit σ ∈ {+1, −1}, n ∈ Z, x−i ∈ {0, 1, . . . , B − 1}, x−1 6= 0, ∀j : ∃k ≥ j : x−k 6= B − 1. Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Zahldarstellung im B-adischen System Satz Sei x ∈ R \ {0}. Dann gibt es eine eindeutige Darstellung x = σB n ∞ X x−i B −i i=1 mit σ ∈ {+1, −1}, n ∈ Z, x−i ∈ {0, 1, . . . , B − 1}, x−1 6= 0, ∀j : ∃k ≥ j : x−k 6= B − 1. Zum Beweis zeige Existenz und dann Eindeutigkeit (technisch). Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Zahldarstellung im B-adischen System Satz Sei x ∈ R \ {0}. Dann gibt es eine eindeutige Darstellung x = σB n ∞ X x−i B −i i=1 mit σ ∈ {+1, −1}, n ∈ Z, x−i ∈ {0, 1, . . . , B − 1}, x−1 6= 0, ∀j : ∃k ≥ j : x−k 6= B − 1. Warum wollen wir ∀j : ∃k ≥ j : x−k 6= B − 1? Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Zahldarstellung im B-adischen System Satz Sei x ∈ R \ {0}. Dann gibt es eine eindeutige Darstellung x = σB n ∞ X x−i B −i i=1 mit σ ∈ {+1, −1}, n ∈ Z, x−i ∈ {0, 1, . . . , B − 1}, x−1 6= 0, ∀j : ∃k ≥ j : x−k 6= B − 1. Warum wollen wir ∀j : ∃k ≥ j : x−k 6= B − 1? Was ist 0, 9 im Dezimalsystem? (B = 10) Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Zahlumwandlung Schreibe 181 15 1 = 12 15 im 5-er System (also B = 5): LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Zahlumwandlung Schreibe 12 181 15 1 :5 15 1 = 12 15 im 5-er System (also B = 5): = 2 Rest 2 1 15 LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 12 1 = 12 15 im 5-er System (also B = 5): = = 1 15 1 2 Rest 15 2 Rest 2 LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 1 1 : 15 5 12 1 = 12 15 im 5-er System (also B = 5): = = = 1 15 1 2 Rest 15 3 1 1 : = 0 Rest 15 15 15 2 Rest 2 LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 1 1 : 15 5 1 1 : 15 25 12 1 = 12 15 im 5-er System (also B = 5): = = = = 1 15 1 2 Rest 15 3 1 : = 0 Rest 15 15 5 3 : = 1 Rest 75 75 2 Rest 2 1 15 2 75 LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 1 1 : 15 5 1 1 : 15 25 2 1 : 75 125 12 1 = 12 15 im 5-er System (also B = 5): = = = = = 1 15 1 2 Rest 15 3 1 1 : = 0 Rest 15 15 15 5 3 2 : = 1 Rest 75 75 75 10 3 1 : = 3 Rest 375 375 375 2 Rest 2 LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 1 1 : 15 5 1 1 : 15 25 2 1 : 75 125 12 1 = 12 15 im 5-er System (also B = 5): = = = = = 1 15 1 2 Rest 15 3 1 1 : = 0 Rest 15 15 15 5 3 2 : = 1 Rest 75 75 75 10 3 1 1 1 : = 3 Rest (es gilt: = · 375 375 375 375 25 2 Rest 2 1 15 ) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 1 1 : 15 5 1 1 : 15 25 2 1 : 75 125 12 1 = 12 15 im 5-er System (also B = 5): = = = = = 1 15 1 2 Rest 15 3 1 1 : = 0 Rest 15 15 15 5 3 2 : = 1 Rest 75 75 75 10 3 1 1 1 : = 3 Rest (es gilt: = · 375 375 375 375 25 2 Rest 2 1 Also: 12 15 = 22.013(5) . 1 15 ) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zahlumwandlung Schreibe 181 15 1 :5 15 1 2 :1 15 1 1 : 15 5 1 1 : 15 25 2 1 : 75 125 12 1 = 12 15 im 5-er System (also B = 5): = = = = = 1 15 1 2 Rest 15 3 1 1 : = 0 Rest 15 15 15 5 3 2 : = 1 Rest 75 75 75 10 3 1 1 1 : = 3 Rest (es gilt: = · 375 375 375 375 25 2 Rest 2 1 Also: 12 15 = 22.013(5) . 1 BTW: 12 15 = 12.06(10) . 1 15 ) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. A erklärte das Problem für unzulässig, während B eine zulässige Lösung fand. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. A erklärte das Problem für unzulässig, während B eine zulässige Lösung fand. Automobilhersteller E kaufte daraufhin Produkt B. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. A erklärte das Problem für unzulässig, während B eine zulässige Lösung fand. Automobilhersteller E kaufte daraufhin Produkt B. 2004 stellte HAL den Vertrieb von Produkt A ein und stiftete den Code der Community. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. A erklärte das Problem für unzulässig, während B eine zulässige Lösung fand. Automobilhersteller E kaufte daraufhin Produkt B. 2004 stellte HAL den Vertrieb von Produkt A ein und stiftete den Code der Community. 2009 hat HAL hat den Hersteller von B gekauft. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. A erklärte das Problem für unzulässig, während B eine zulässige Lösung fand. Automobilhersteller E kaufte daraufhin Produkt B. 2004 stellte HAL den Vertrieb von Produkt A ein und stiftete den Code der Community. 2009 hat HAL hat den Hersteller von B gekauft. Und die Moral von der Geschicht: 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Ein Döneken zu Rundungsfehlern Ende der 90er haben wir in einem Projekt zur Planung der Tagesproduktion bei einem großen Automobilhersteller E ein sehr großes Lineares Programm aufgestellt. Firma E benutzte den LP-Solver A der Firma HAL1 , wir den LP-Solver B, einer universitären Ausgründung. A erklärte das Problem für unzulässig, während B eine zulässige Lösung fand. Automobilhersteller E kaufte daraufhin Produkt B. 2004 stellte HAL den Vertrieb von Produkt A ein und stiftete den Code der Community. 2009 hat HAL hat den Hersteller von B gekauft. Und die Moral von der Geschicht: Es ist nicht trivial einen numerisch stabilen LP-Solver zu schreiben. 1 Name von der Redaktion geändert Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zur Numerik linearer Gleichungssysteme (LGS) Aufgabenstellung: Sei A ∈ Rm×n , b ∈ Rm . Gesucht ist ein Vektor x ∈ Rn mit Ax = b. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zur Numerik linearer Gleichungssysteme (LGS) Aufgabenstellung: Sei A ∈ Rm×n , b ∈ Rm . Gesucht ist ein Vektor x ∈ Rn mit Ax = b. Ein klassisches Lösungsverfahren ist aus den vorherigen Mathematikkursen bekannt: Das Gaußsche Eliminationsverfahren. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zur Numerik linearer Gleichungssysteme (LGS) Aufgabenstellung: Sei A ∈ Rm×n , b ∈ Rm . Gesucht ist ein Vektor x ∈ Rn mit Ax = b. Ein klassisches Lösungsverfahren ist aus den vorherigen Mathematikkursen bekannt: Das Gaußsche Eliminationsverfahren. Wir wollen dies hier aus numerischer Perspektive wiederholen. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) • Zeilen vertauscht (Multiplikation von (A|b) mit Permutationsmatrix P(A|b)) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) • Zeilen vertauscht (Multiplikation von (A|b) mit Permutationsmatrix P(A|b)) • Zeilen mit Skalaren multipliziert (Multiplikation mit Diagonalmatrix D(A|b) ) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) • Zeilen vertauscht (Multiplikation von (A|b) mit Permutationsmatrix P(A|b)) • Zeilen mit Skalaren multipliziert (Multiplikation mit Diagonalmatrix D(A|b) ) • das Vielfache einer Zeile zu einer anderen addiert. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) • Zeilen vertauscht (Multiplikation von (A|b) mit Permutationsmatrix P(A|b)) • Zeilen mit Skalaren multipliziert (Multiplikation mit Diagonalmatrix D(A|b) ) • das Vielfache einer Zeile zu einer anderen addiert. Diese Schritte setzten wir zu zwei Typen von Makroschritten zusammen: Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) • Zeilen vertauscht (Multiplikation von (A|b) mit Permutationsmatrix P(A|b)) • Zeilen mit Skalaren multipliziert (Multiplikation mit Diagonalmatrix D(A|b) ) • das Vielfache einer Zeile zu einer anderen addiert. Diese Schritte setzten wir zu zwei Typen von Makroschritten zusammen: Gauss-Eliminationsschritt: erzeuge Nullen unter einem Nichtnullelement. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Zeilenumformungen Die Lösungsmenge eines LGS ändert sich nicht, wenn man in der erweiterten Koeffizientenmatrix (A|b) • Zeilen vertauscht (Multiplikation von (A|b) mit Permutationsmatrix P(A|b)) • Zeilen mit Skalaren multipliziert (Multiplikation mit Diagonalmatrix D(A|b) ) • das Vielfache einer Zeile zu einer anderen addiert. Diese Schritte setzten wir zu zwei Typen von Makroschritten zusammen: Gauss-Eliminationsschritt: erzeuge Nullen unter einem Nichtnullelement. Gauss-Jordan-Eliminationsschritt: erzeuge Einheitsspalte. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 1 2 1 1 1 0 1 −1 2 3 1 4 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 0 2 1 1 1 0 0 −2 2 3 1 4 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 0 0 1 1 1 0 0 −2 2 1 −1 4 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 0 0 0 1 1 0 0 −2 2 1 −1 4 −2 −2 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 1 2 1 1 1 0 1 −1 2 3 1 4 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 1 2 1 1 1 0 0 −2 2 3 1 4 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 1 2 1 1 1 0 0 −2 2 1 −1 4 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 1 2 1 1 1 0 0 −2 2 1 −1 4 −2 −2 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 2 1 1 1 1 0 1 −1 4 0 −2 2 −2 −2 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 2 1 1 1 1 0 1 −1 4 0 −2 2 −2 −4 9 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 2 1 1 1 1 0 1 −1 4 0 −2 2 −2 2 5 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung LU-Zerlegung Wir betrachten nun quadratische Matrizen von vollem Rang. Satz: Zu jeder regulären Matrix A gibt es eine Dreieckszerlegung PA = LU, wobei L linke untere und U rechte obere Dreiecksmatrix ist und P Permutationsmatrix. Beispiel: 1 2 1 1 1 2 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 −2 2 1 0 0 1 1 0 1 −1 4 0 −2 2 −2 2 5 1 0 1 −1 4 = 2 −2 2 1 0 5 1 1 1 0 3 1 4 = PA 1 −1 2 −1 −1 1 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Abschätzung des Rechenaufwandes: Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Abschätzung des Rechenaufwandes: d-ter Gaußeliminationsschritt: n − d Divisionen, (n − d)2 Multiplikationen und Additionen Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Abschätzung des Rechenaufwandes: d-ter Gaußeliminationsschritt: n − d Divisionen, (n − d)2 Multiplikationen und Additionen d-te Zeile eines diagonalen Gleichungssystems: 1 Division, (d − 1) Multiplikationen und Additionen. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Abschätzung des Rechenaufwandes: d-ter Gaußeliminationsschritt: n − d Divisionen, (n − d)2 Multiplikationen und Additionen d-te Zeile eines diagonalen Gleichungssystems: 1 Division, (d − 1) Multiplikationen und Additionen. 3 2 +n Gaußelimination: n2 Divisionen, 2n −3n Divisionen und Additionen 6 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Abschätzung des Rechenaufwandes: d-ter Gaußeliminationsschritt: n − d Divisionen, (n − d)2 Multiplikationen und Additionen d-te Zeile eines diagonalen Gleichungssystems: 1 Division, (d − 1) Multiplikationen und Additionen. 3 2 +n Gaußelimination: n2 Divisionen, 2n −3n Divisionen und Additionen 6 Lösen der Gleichungssysteme: n Divisionen und n2 Additionen und Multiplikationen. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Effizientes Lösen von Ax = b mittels LU-Zerlegung 1. Pb = PAx = L(Ux). 2. Löse Ly = Pb. 3. Löse Ux = y . Abschätzung des Rechenaufwandes: d-ter Gaußeliminationsschritt: n − d Divisionen, (n − d)2 Multiplikationen und Additionen d-te Zeile eines diagonalen Gleichungssystems: 1 Division, (d − 1) Multiplikationen und Additionen. 3 2 +n Gaußelimination: n2 Divisionen, 2n −3n Divisionen und Additionen 6 Lösen der Gleichungssysteme: n Divisionen und n2 Additionen und Multiplikationen. Gauß-Jordan Mindestens n3 2 Additionen und Multiplikationen. Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Naiv erhalten wir Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Naiv erhalten wir Divisionen: n(n + 1 − 1) = n2 Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Naiv erhalten wir Divisionen: n(n + 1 − 1) = n2 Additionen und Multiplikationen: n(n − 1)(n + 1) = n3 − n. Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Wenn wir die bereits erzeugten Einheitsspalten nicht mehr berücksichtigen Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Wenn wir die bereits erzeugten Einheitsspalten nicht mehr berücksichtigen Divisionen: n+1 2 Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Wenn wir die bereits erzeugten Einheitsspalten nicht mehr berücksichtigen Divisionen: n+1 2 Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Gauß-Jordan-Algorithmus def gaussjordanelim(A,i,j): A_ij=A[i,j] A[i,:]=A[i,:]/A_ij for k in range(i)+range(i+1,m): A_kj=A[k,j] A[k,:]=A[k,:]-A[i,:]*A_kj (A, b) ist (n × n + 1)-Matrix. Wenn wir die bereits erzeugten Einheitsspalten nicht mehr berücksichtigen Divisionen: n+1 2 Additionen und Multiplikationen: (n+2)(n2 −1) . 2 Wenn ich von Hand rechne, habe ich immer den Eindruck der Gauß-Jordan geht schneller. Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Cholesky-Faktorisierung A∈R n×n heißt symmetrisch, falls A> = A. Eine symmetrische Matrix (=) heißt positiv (semi-)definit, falls ∀x ∈ Rn \ {0} : x > Ax > 0. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Cholesky-Faktorisierung A∈R n×n heißt symmetrisch, falls A> = A. Eine symmetrische Matrix (=) heißt positiv (semi-)definit, falls ∀x ∈ Rn \ {0} : x > Ax > 0. Satz: Sei A symmetrisch und positiv definit. Dann existiert eine linke untere Dreiecksmatrix L mit A = LL> . Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Cholesky-Faktorisierung A∈R n×n heißt symmetrisch, falls A> = A. Eine symmetrische Matrix (=) heißt positiv (semi-)definit, falls ∀x ∈ Rn \ {0} : x > Ax > 0. Satz: Sei A symmetrisch und positiv definit. Dann existiert eine linke untere Dreiecksmatrix L mit A = LL> . `11 `21 0 `22 `n1 ... `n2 ... ... ... .. . ... 0 `11 0 0 ... `nn ... 0 `21 `22 ... 0 ... ... .. . ... `n1 `2n ... `nn a11 a21 a21 a22 an1 ... an2 = ... ... ... .. . ... an1 a2n ... ann Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Cholesky-Faktorisierung A ∈ Rn×n heißt symmetrisch, falls A> = A. Eine symmetrische Matrix (=) heißt positiv (semi-)definit, falls ∀x ∈ Rn \ {0} : x > Ax > 0. Satz: Sei A symmetrisch und positiv definit. Dann existiert eine linke untere Dreiecksmatrix L mit A = LL> . `11 `21 0 `22 `n1 ... `n2 ... ... ... .. . ... 0 `11 0 0 ... `nn `11 = √ ... 0 a11 `21 `22 ... 0 `i1 = ... ... .. . ... ai1 `11 `n1 `2n ... `nn a11 a21 a21 a22 an1 ... an2 = ... falls i ∈ {2, . . . , n} ... ... .. . ... an1 a2n ... ann Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Cholesky-Faktorisierung A ∈ Rn×n heißt symmetrisch, falls A> = A. Eine symmetrische Matrix (=) heißt positiv (semi-)definit, falls ∀x ∈ Rn \ {0} : x > Ax > 0. Satz: Sei A symmetrisch und positiv definit. Dann existiert eine linke untere Dreiecksmatrix L mit A = LL> . `11 `21 0 `22 `n1 ... `n2 ... `kk ... ... .. . ... 0 `11 0 0 ... `nn v u k −1 X u `2kj = takk − j=1 ... 0 `21 `22 ... 0 aik − `ik = ... ... .. . ... k −1 X j=1 `kk `n1 `2n ... `nn a11 a21 a21 a22 an1 ... an2 = ... ... ... .. . ... an1 a2n ... ann `kj `ij falls i ∈ {k + 1, . . . , n} Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: LL> = 0 0 0 0 0 0 1 1 = 1 5 −1 7 −1 7 =A 26 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: 1 LL> = `11 = √ 1=1 0 0 1 0 0 0 0 1 1 = 1 5 −1 7 −1 7 =A 26 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: 1 1 LL> = −1 `11 = `21 = `31 = √ 1=1 1 1 =1 −1 1 = −1 0 0 1 0 0 0 1 0 −1 1 1 = 1 5 −1 7 −1 7 =A 26 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: 1 1 LL> = −1 `11 = `21 = `31 = √ 0 0 1 2 0 0 0 1=1 1 1 =1 −1 1 = −1 `22 = √ 1 2 0 −1 5 − 12 = 2 1 1 = 1 5 −1 7 −1 7 =A 26 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: 1 1 LL> = −1 `11 = `21 = `31 = √ 0 0 1 2 0 0 0 4 1=1 1 1 =1 −1 1 = −1 `22 = `32 = √ 1 2 0 −1 4 = 5 − 12 = 2 =4 7−1·(−1) 2 1 1 1 5 −1 7 −1 7 =A 26 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: 1 1 LL> = −1 `11 = `21 = `31 = √ 0 0 1 2 0 0 0 4 3 1=1 1 1 =1 −1 1 = −1 `22 = `32 = √ 1 2 0 −1 1 1 4 = 1 5 3 −1 7 5 − 12 = 2 =4 7−1·(−1) 2 `33 = p −1 7 =A 26 26 − (−1)2 − 42 = 3 Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiel: 1 1 LL> = −1 `11 = `21 = `31 = √ 0 0 1 2 0 0 0 4 3 1=1 1 1 =1 −1 1 = −1 `22 = `32 = √ 1 2 0 −1 1 1 4 = 1 5 3 −1 7 5 − 12 = 2 =4 7−1·(−1) 2 `33 = p −1 7 =A 26 26 − (−1)2 − 42 = 3 Bemerkung Existiert eine Cholesky-Faktorisierung A = LL> und steht auf der Hauptdiagonalen von L keine 0, so ist A positiv definit, denn dann gilt für x 6= 0: x > Ax = x > LL> x = (L> x)> (L> x) > 0. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Lösen von LGS mittels Choleskyfaktorisierung In der konvexen Optimierung muss man häufiger LGS mit positiv definiten Matrizen lösen. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Lösen von LGS mittels Choleskyfaktorisierung In der konvexen Optimierung muss man häufiger LGS mit positiv definiten Matrizen lösen. Was sind die Kosten einer solchen Lösung? Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Lösen von LGS mittels Choleskyfaktorisierung In der konvexen Optimierung muss man häufiger LGS mit positiv definiten Matrizen lösen. Was sind die Kosten einer solchen Lösung? n Quadratwurzeln, n2 − n Divisionen, und jeweils Multiplikationen. n3 −n 6 Additionen und Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Lösen von LGS mittels Choleskyfaktorisierung In der konvexen Optimierung muss man häufiger LGS mit positiv definiten Matrizen lösen. Was sind die Kosten einer solchen Lösung? n Quadratwurzeln, n2 − n Divisionen, und jeweils Multiplikationen. n3 −n 6 Additionen und Gegenüber der LU-Zerlegung hat man also etwa den halben Aufwand. Outline Kodierung von Zahlen Rundungsfehler LGS Normen reeller Vektorräumen Eine Abbildung k · k : V −→ R heißt Norm auf V , wenn Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Normen reeller Vektorräumen Eine Abbildung k · k : V −→ R heißt Norm auf V , wenn 1. kxk = 0 ⇐⇒ x = 0 (Nichtentartetheit) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Normen reeller Vektorräumen Eine Abbildung k · k : V −→ R heißt Norm auf V , wenn 1. kxk = 0 ⇐⇒ x = 0 2. ∀α ∈ R : kαxk = |α| · kxk (Nichtentartetheit) (Homogenität) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Normen reeller Vektorräumen Eine Abbildung k · k : V −→ R heißt Norm auf V , wenn 1. kxk = 0 ⇐⇒ x = 0 2. ∀α ∈ R : kαxk = |α| · kxk 3. kx + y k ≤ kxk + ky k (Nichtentartetheit) (Homogenität) (Dreiecksungleichung) Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Normen reeller Vektorräumen Eine Abbildung k · k : V −→ R heißt Norm auf V , wenn 1. kxk = 0 ⇐⇒ x = 0 (Nichtentartetheit) 2. ∀α ∈ R : kαxk = |α| · kxk 3. kx + y k ≤ kxk + ky k (Homogenität) (Dreiecksungleichung) Die m × n Matrizen bilden auch einen Vektorraum. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Normen reeller Vektorräumen Eine Abbildung k · k : V −→ R heißt Norm auf V , wenn 1. kxk = 0 ⇐⇒ x = 0 (Nichtentartetheit) 2. ∀α ∈ R : kαxk = |α| · kxk (Homogenität) 3. kx + y k ≤ kxk + ky k (Dreiecksungleichung) Die m × n Matrizen bilden auch einen Vektorraum. Satz: Seien k · kRn bzw. k · kRm Normen über Rn bzw. Rm . Die Abbildung k · k : Rm×n −→ R mit kAk := max kAxkRm kxkRn =1 ist eine Norm, die wir die zugehörige Matrixnorm nennen. Outline Kodierung von Zahlen Rundungsfehler LGS Beispiele für zugehörige Matrixnormen 1. kxk1 = n X |xi | ist die 1-Norm zugehörige Matrixnorm: i=1 kAk1 = max j∈{1,...,n} n X i=1 |aij | ist die Spaltensummennorm Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiele für zugehörige Matrixnormen 1. kxk1 = n X |xi | ist die 1-Norm zugehörige Matrixnorm: i=1 kAk1 = max j∈{1,...,n} 2. kxk∞ = kAk∞ = n X |aij | ist die Spaltensummennorm i=1 max |xi | ist die ∞-Norm i∈{1,...,n} max i∈{1,...,n} n X j=1 zugehörige Matrixnorm: |aij | Zeilensummennorm Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Beispiele für zugehörige Matrixnormen 1. kxk1 = n X |xi | ist die 1-Norm zugehörige Matrixnorm: i=1 kAk1 = max j∈{1,...,n} 2. kxk∞ = kAk∞ = n X |aij | ist die Spaltensummennorm i=1 max |xi | ist die ∞-Norm i∈{1,...,n} max i∈{1,...,n} n X zugehörige Matrixnorm: |aij | Zeilensummennorm j=1 v uX u n 2 3. kxk2 = t xi ist die euklidische Norm i=1 zug. Matrixnorm: √ kAk2 = max{ λ | λ ist EW von A> A} ist die Spektralnorm Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerabschätzung Wenn wir mit Fließpunktzahlen rechnen, machen wir notwendig Rundungsfehler. Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerabschätzung Wenn wir mit Fließpunktzahlen rechnen, machen wir notwendig Rundungsfehler. exakter Wert x Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerabschätzung Wenn wir mit Fließpunktzahlen rechnen, machen wir notwendig Rundungsfehler. exakter Wert x Näherungswert x + ∆x Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerabschätzung Wenn wir mit Fließpunktzahlen rechnen, machen wir notwendig Rundungsfehler. exakter Wert x Näherungswert x + ∆x absoluter Fehler k(x + ∆x) − xk = k∆xk = abs(x) Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerabschätzung Wenn wir mit Fließpunktzahlen rechnen, machen wir notwendig Rundungsfehler. exakter Wert x Näherungswert x + ∆x absoluter Fehler k(x + ∆x) − xk = k∆xk = abs(x) relativer Fehler k(x+∆x)−xk = k∆xk kxk kxk = rel(x) (unter Vor: x 6= 0) Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerabschätzung Wenn wir mit Fließpunktzahlen rechnen, machen wir notwendig Rundungsfehler. exakter Wert x Näherungswert x + ∆x absoluter Fehler k(x + ∆x) − xk = k∆xk = abs(x) relativer Fehler k(x+∆x)−xk = k∆xk kxk kxk = rel(x) (unter Vor: x 6= 0) Kondition einer Matrix cond(A) = kAk · kA−1 k Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Fehlerfortpflanzung bei Lösung eines LGS Sei x eindeutige Lösung von Ax = b. Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Fehlerfortpflanzung bei Lösung eines LGS Sei x eindeutige Lösung von Ax = b. Sei x + ∆x Lösung des in b gestörten Systems A(x + ∆x) = (b + ∆b) Satz 1: Falls b 6= 0, so ist rel(x) ≤ cond(A)rel(b). Outline Kodierung von Zahlen Rundungsfehler LGS Fehlerfortpflanzung Fehlerfortpflanzung bei Lösung eines LGS Sei x eindeutige Lösung von Ax = b. Sei x + ∆x Lösung des in b gestörten Systems A(x + ∆x) = (b + ∆b) Satz 1: Falls b 6= 0, so ist rel(x) ≤ cond(A)rel(b). Sei nun x + ∆x Lösung des in A gestörten Systems (A + ∆A)(x + ∆x) = b. Satz 2: Falls x 6= 0 und kA−1 k · k∆Ak < 1, so ist rel(x) ≤ cond(A) rel(A) 1 − cond(A) · rel(A) Outline Kodierung von Zahlen Rundungsfehler Beweis von Satz 1: Aus A(x + ∆x) = (b + ∆b) und Ax = b folgt LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler Beweis von Satz 1: Aus A(x + ∆x) = (b + ∆b) und Ax = b folgt A∆x = ∆b, also ∆x = A−1 ∆b, somit LGS Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Beweis von Satz 1: Aus A(x + ∆x) = (b + ∆b) und Ax = b folgt A∆x = ∆b, also ∆x = A−1 ∆b, somit k∆xk = kA−1 ∆bk ≤ kA−1 k · k∆bk. Aus Ax = b folgt kbk = kAxk ≤ kAk · kxk. Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Beweis von Satz 1: Aus A(x + ∆x) = (b + ∆b) und Ax = b folgt A∆x = ∆b, also ∆x = A−1 ∆b, somit k∆xk = kA−1 ∆bk ≤ kA−1 k · k∆bk. Aus Ax = b folgt kbk = kAxk ≤ kAk · kxk. Multiplizieren wir beide Ungleichungen (alle Werte sind ≥ 0), so haben wir Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Beweis von Satz 1: Aus A(x + ∆x) = (b + ∆b) und Ax = b folgt A∆x = ∆b, also ∆x = A−1 ∆b, somit k∆xk = kA−1 ∆bk ≤ kA−1 k · k∆bk. Aus Ax = b folgt kbk = kAxk ≤ kAk · kxk. Multiplizieren wir beide Ungleichungen (alle Werte sind ≥ 0), so haben wir k∆xk · kbk ≤ kA−1 k · k∆bk · kAk · kxk oder Fehlerfortpflanzung Outline Kodierung von Zahlen Rundungsfehler LGS Beweis von Satz 1: Aus A(x + ∆x) = (b + ∆b) und Ax = b folgt A∆x = ∆b, also ∆x = A−1 ∆b, somit k∆xk = kA−1 ∆bk ≤ kA−1 k · k∆bk. Aus Ax = b folgt kbk = kAxk ≤ kAk · kxk. Multiplizieren wir beide Ungleichungen (alle Werte sind ≥ 0), so haben wir k∆xk · kbk ≤ kA−1 k · k∆bk · kAk · kxk oder k∆xk k∆bk ≤ kA−1 k · kAk · . | {z } kbk kxk cond(A) Fehlerfortpflanzung