Aufgabe vollständig gelöst
-
Wo das klassische Gram-Schmidt-Verfahren seinen rechten Winkel verliert 8 Schritte
Das Werkzeug zeigt drei Spalten im Abstand von 10⁻⁸ und die Lösung des klassischen Gram-Schmidt-Verfahrens dafür. Rechne den Algorithmus von Hand durch. Finde jene einzelne Rundung, die das Verfahren dreißig Grad kostet. Erkläre dann, wie weit jede der beiden Versionen getrieben werden kann, bevor ein Einsatz nicht mehr lohnt.
-
Jede Spalte ist der Vektor (1, 0, 0, 0), bei dem ein ε in einen anderen Eintrag gesetzt wurde. AᵀA ist die 3 × 3-Einsmatrix plus ε²I. Ihre Eigenwerte sind einmal 3 + ε² und zweimal ε². Die Singulärwerte sind folglich √(3 + ε²) und ε. Die Konditionszahl steht damit exakt fest und ist nicht nur geschätzt. Die oberste Zeile der Tabelle zeigt 1,7321 × 10⁸.
-
‖a₁‖² ist 1 + ε², und ε² ist 10⁻¹⁶. Ein Double-Wert fasst 1, und die nächste darstellbare Zahl liegt 2,2204 × 10⁻¹⁶ weiter hinten. Alles unterhalb der Hälfte dieser Lücke, also 1,1102 × 10⁻¹⁶, verschwindet bei der Addition zu 1. Zehn hoch minus sechzehn liegt darunter. Die Quadratwurzel ist 1. Ein Teilen dadurch ändert nichts. Somit kommt q₁ als die Spalte selbst heraus, bei der das ε² einfach aus den Akten gestrichen wurde. Jede andere Rundung in diesem Problem kostet eine Einheit an der letzten Stelle. Diese hier kostet dreißig Grad.
-
Als Nächstes Spalte 2. Hier sind sich beide Versionen einig, da nur ein einziger Vektor davor liegt. Der Projektionskoeffizient ist q₁ᵀa₂ = 1. Zieht man ihn ab, bleibt (0, −ε, ε, 0). Das hat die Länge ε√2 = 1,4142 × 10⁻⁸. Spalte 2 kam mit der Länge 1 an, soweit ein Double das beurteilen kann. Bis auf 1,4142 × 10⁻⁸ war sie bereits vollständig durch q₁ abgedeckt.
-
Spalte 3, auf klassische Art. Der Koeffizient zu q₁ ist wieder 1. Der Koeffizient zu q₂ ist q₂ᵀa₃. Weil q₂ komplett in den Einträgen 2 und 3 lebt, während a₃ sein ε im Eintrag 4 behält, beträgt dieses Skalarprodukt exakt 0. Genau das besagt die Zeile Was q₂ von Spalte 3 abzieht. Zieht man nur q₁ ab, bleibt (0, −ε, 0, ε), abermals mit der Länge ε√2. Daher zeigt Rest von Spalte 3 ebenfalls 1,4142 × 10⁻⁸.
-
Sowohl q₂ als auch q₃ wurden gebildet, indem man q₁ von einer Spalte mit der gleichen führenden 1 abzog. Beide tragen also ein −1/√2 in Eintrag 2 und haben sonst nichts gemeinsam. Ihr Skalarprodukt ist ein Halb. Das Werkzeug druckt 0,5000 und 60,00°. Der intern gespeicherte Wert ist 0,4999999999999999. Er weicht um eine Einheit an der letzten Stelle von dem Halb ab, das die Algebra vorgibt, weil ±1/√2 kein Binärbruch ist. Das ist die Größenordnung des Fehlers, zu dem diese Arithmetik fähig ist. Die dreißig Grad sind es nicht. Die klassische Verlustzeile zeigt 0,7071, was √(2 × 0,5²) entspricht. Das ist dasselbe Halb, das in jeder Ecke von QᵀQ einmal gezählt wird.
-
Das modifizierte Verfahren an derselben Spalte. Nachdem der Anteil von q₁ abgezogen wurde, lautet der Rest (0, −ε, 0, ε). Diese Version misst nun hiergegen anstatt gegen a₃. Bildet man das Skalarprodukt mit q₂, ergibt das ε/√2 = 7,0711 × 10⁻⁹, also nicht null. Zieht man das ab, verbleibt (0, −ε/2, −ε/2, ε) mit der Länge ε√(3/2) = 1,2247 × 10⁻⁸. Damit kommt q₂ᵀq₃ auf 1,1102 × 10⁻¹⁶ statt eines Halben. Die modifizierte Verlustzeile zeigt 1,1547 × 10⁻⁸. Darin steckt nur noch das, was q₁ nicht entfernen konnte. Die Subtraktion lässt −ε² in Richtung q₁ liegen. Teilt man dies durch einen Rest, der nur ε√2 lang ist, wird daraus wieder ε/√2.
-
Dasselbe Argument greift bei jeder Spaltenanzahl, die das Werkzeug bietet. Das klassische Verfahren bildet jedes spätere q, indem es q₁ von einer Spalte mit der gleichen führenden 1 abzieht. Somit landet jedes Paar davon bei 60°. Das sind exakt (n − 1)(n − 2)/2 Paare. Der Orthogonalitätsverlust entspricht der Quadratwurzel aus der Hälfte dieser Anzahl. Bei zwei Spalten existieren solche Paare nicht. Übrig bleibt lediglich die ε-große Neigung, die beide Versionen teilen.
-
Die klassische Ausgleichsgerade erreicht einen Verlust von 1 bei κ = 2,35 × 10⁸. Genau deshalb verläuft die klassische Kurve am rechten Rand des Feldes bereits flach. Die modifizierte Version erhält eine gemessene Schranke anstelle einer extrapolierten. Ihre eigene Kurve knickt hinter 10⁻⁸ nämlich um. Eine so weit hinausgezogene Ausgleichsgerade würde durch das Feld darunter sofort widerlegt. Über 724 Punkte des Durchlaufs hinweg überstieg ihr Verlust nie das 1,25-Fache der Maschinengenauigkeit mal κ. Diese Schranke erreicht die 1 erst bei κ = 3,60 × 10¹⁵. Eins geteilt durch die Maschinengenauigkeit ergibt 4,50 × 10¹⁵.
Antwort
Die dreißig Grad stammen aus einer einzigen Zeile. Klassisch berechnet q₂ᵀa₃ = 0, während modifiziert q₂ᵀv₃ = 7,0711 × 10⁻⁹ liest. Auf dem Papier sind das dieselben Zahlen.
Der Abstand von 10⁻⁸ ist die erste Stufe, bei der ε² aus 1 + ε² verschwindet. Schließlich ist die Wurzel aus der halben Maschinengenauigkeit exakt 1,0537 × 10⁻⁸. Von dort an abwärts zeigt die Zelle 60,00°, egal wie viel weiter du den Regler ziehst. Eine Stufe zurück, bei 10⁻⁷, misst sie 89,24° und das klassische Verfahren hat bereits 1,88 × 10⁻² an Orthogonalität eingebüßt. Der Kollaps beginnt also lange bevor der Schieberegler die Stufe erreicht, die für glatte Werte sorgt.
Åke Björck veröffentlichte die Analyse der modifizierten Version 1967. Seitdem ist die geänderte Reihenfolge der Standard. Beide führen dieselbe Anzahl an Multiplikationen aus. Bei diesem Abstand weicht der Orthogonalitätsverlust zwischen ihnen um den Faktor 6,1 × 10⁷ ab. Die modifizierte Variante behält ihre rechten Winkel bis zu dem Punkt bei, an dem ein Double die Spalten überhaupt nicht mehr voneinander unterscheiden kann. Das klassische Verfahren gibt sie sieben Größenordnungen früher auf. -
Quellen (5)
- The matrix the tool is built on, and the name it carries: P. Läuchli, "Jordan-Elimination und Ausgleichung nach kleinsten Quadraten", Numerische Mathematik 3(1), 226–240, 1961. doi:10.1007/BF01386022
- The analysis of the modified variant that made it the default: Åke Björck, "Solving linear least squares problems by Gram-Schmidt orthogonalization", BIT 7(1), 1–21, 1967. doi:10.1007/BF01934122
- The corresponding rounding-error analysis of the classical variant: Luc Giraud, Julien Langou, Miroslav Rozložník and Jasper van den Eshof, "Rounding error analysis of the classical Gram-Schmidt orthogonalization process", Numerische Mathematik 101(1), 87–100, 2005. doi:10.1007/s00211-005-0615-4
- Gram's paper of 1883, where the process is set out for least squares: J. P. Gram, "Ueber die Entwickelung reeller Functionen in Reihen mittelst der Methode der kleinsten Quadrate", Journal für die reine und angewandte Mathematik 1883(94), 41–73. doi:10.1515/crll.1883.94.41
- And Schmidt's of 1907, where the form used today appears: Erhard Schmidt, "Zur Theorie der linearen und nichtlinearen Integralgleichungen", Mathematische Annalen 63, 433–476, 1907. doi:10.1007/BF01449770