Gauß-Elimination mit Teilpivotisierung - Cleves Corner Cleve Moler auf Mathematik und Informatik

In seltenen Fällen, Gaußsche Eliminations mit teilweisem Verschwenkung ist instabil. Aber die Situationen sind so unwahrscheinlich, dass wir den Algorithmus als Grundlage für unsere Matrixberechnungen weiterhin verwenden.

Pivot Wachstum

Ich zögere fast, dies zu bringen. Gauß-Elimination mit teilweisem Verschwenkung ist potentiell instabil. Wir wissen von einer bestimmten Testmatrix, und haben darüber seit Jahren bekannt ist, wo die Lösung simultane lineare Gleichungen durch unseren ikonischen Backslash Operator berechnet ist weniger genau als wir normalerweise erwarten. Die Lösung wird durch unakzeptabel große Rundungsfehler verunreinigt, die mit großen Elementen während des Eliminierungsprozesses auftreten. Die beanstandeten Matrix wird durch die folgende Funktion erzeugt, die in Nick Higham Sammlung von MATLAB Testmatrices ein Spezialfall der GFPP Funktion ist.

Hier ist die 8-mal-8.

Gauß-Elimination mit teilweisem Verschwenkung tut nicht tatsächlich irgendeine Verschwenkung mit dieser speziellen Matrix. Die erste Reihe ist mit jedem der anderen Zeilen hinzugefügt Nullen in der ersten Spalte einzuführen. Dies erzeugt Zweien in der letzten Spalte. Als ähnliche Schritte wiederholt werden, wobei jeder Schritt ein oberes Dreieck U. Elemente in dem letzten Spalte Doppel zu erstellen. Das Element, das Wachstum in dem endgültigen Dreiecksfaktor U ist 2 ^ (n-1).

Wenn also die Matrix, um n auf die Anzahl von Bits in dem Gleitkomma-Wort gesetzt ist (plus eins), das letzte Diagonalelement von U wächst 1 / eps sein.

Wenn wir versuchen, Backslash zu verwenden, um ein lineares System beteiligt diese Matrix und eine zufällige rechten Seite zu lösen, wird der Rücksubstitution mit U beginnen, (n, n). Die Rundungsfehler können als EPS (U (n, n)) und Sumpf die Lösung selbst zu sein, wie groß zu erwarten.

Normalerweise erwarten wir die Lösung durch Gauß-Elimination berechnet einen Rest in der Größenordnung von Rundungsfehlern zu haben. Aber in diesem Fall ist der Rest viele Größenordnung größer. Backslash ist fehlgeschlagen.

Alles, was wir zu dieser Matrix tun Schwenken während der Beseitigung zu provozieren wird das Wachstum der Elemente in U. Eine Möglichkeit, die ersten beiden Reihen zu tauschen ist zu verhindern.

Das ist viel besser. Jetzt Backslash verwenden und auf dem Rest suchen.

So ist der Rest nun in der Größenordnung von Abrundungs ​​bezogen auf A und x. Backslash wie erwartet funktioniert.

Einführung Lärm

Eine weitere Möglichkeit, Schwenken zu provozieren ist die Matrix mit einem kleinen weißen Rauschen zu stören.

So ist U gut benommen. Lassen Sie uns über Backslash sehen.

Auch hier ist der Rest in der Größenordnung von Abrundungs ​​und Backslash wie erwartet funktioniert.

Wachstumsfaktor

Angenommen, wir Gaußschen Eliminations mit jedem Schwenkvorgang werden unter Verwendung eines Systems von linearen Gleichungen zu lösen, um eine Matrix A $ $ beteiligt sind. Lassen Sie bezeichnet a $ $ _ ^ die Elemente in der Matrix nach dem $ k $ ten Schritt der Eliminierung. Der Wachstumsfaktor für diesen Schwenkvorgang ist die Menge,

Dieser Wachstumsfaktor ist eine entscheidende Größe in Wilkinsons Rundungsfehleranalyse. Wenn $ \ rho $ nicht zu groß ist, dann ist die Beseitigung Algorithmus stabil. Leider haben sich die Matrix wir gerade gesehen, GFPP. zeigt, dass der Wachstumsfaktor für die Teil-Schwenk mindestens 2 $ ^ $.

Zu der Zeit war er seine Analyse in Anfang der 1970er Jahre präsentiert, wußte Wilkinson zu dieser Matrix. Aber er sagte, dass es ein ganz besonderer Fall ist. Er berichtete:

Es ist unsere Erfahrung, dass eine wesentliche Zunahme der Größe der Elemente aufeinanderfolgender Eine äußerst ungewöhnlich ist auch bei Teil Schwenken. Kein Beispiel der natürlich hat in meiner Erfahrung entstanden ist, eine Zunahme so groß wie 16 gegeben.

Bei der Entwicklung von LINPACK in den späten 1970er Jahren, einen Kollegen am Argonne, J. T. Goodman, und ich habe einige Experimente mit Zufallsmatrizen für Element Wachstum mit Teilpivotisierung zu überprüfen. Wir verwenden verschiedene Elementverteilungen und was waren dann Matrizen bescheidener Ordnung, nämlich Werte von $ n $ zwischen 10 und 50. Der Faktor größte Wachstums, das ich war für eine Matrix von 0 und 1 ist der Ordnung 40.er Der Wert betrug $ \ rho gefunden $ = 23. Wir sahen nie das Wachstum so groß wie linear, $ \ rho = n $, geschweige denn exponentiell, $ \ rho = 2 ^ $.

Durchschnittlicher Fall Growth

Ist Gaußsche Eliminations mit Teilpivotisierung stabil im Durchschnitt? Alles, was wir über das Thema wissen, zeigt an, dass die Antwort mit Nachdruck ja ist, und dass man braucht keine Hypothesen über statistische Eigenschaften für den Erfolg dieses Algorithmus zu berücksichtigen, während fast einem halben Jahrhundert der digitalen Berechnung.

Worst-Case-Wachstum

Die Higham Brüder Nick und Der Higham, veröffentlichten ein Papier in 1989 über Wachstumsfaktoren in der Gauß-Elimination. Die meisten ihrer Papier gilt für jede Art von Schwenk- und beinhaltet Wachstum, das $ O (n) $ ist. Aber sie haben einen Satz haben, die nur teilweise Verschwenkung gilt und dass charakterisiert alle Matrizen, die $ \ rho = 2 ^ $ haben. Im Wesentlichen haben diese Matrizen das Verhalten haben wir in GFPP gesehen haben. nämlich keine tatsächliche Verschwenkung und jeder Schritt fügt eine Zeile in alle späteren Zeilen, die Werte in der letzten Spalte in dem Prozess zu verdoppeln.

Exponentielles Wachstum in der Praxis

komplette Drehbare

Vollständige Verschwenkung erfordert $ O (n ^ 3) $ Vergleiche statt die $ O (n ^ 2) durch teilweises Verschwenken erforderlich $. Noch wichtiger ist, ändert sich die wiederholten Zugriff auf die gesamte Matrix vollständig die Speicherzugriffsmuster. Mit modernen Computerspeicherhierarchie, einschließlich Cache und virtuellen Speicher, ist dies eine überaus wichtige Überlegung.

Der Wachstumsfaktor $ \ rho $ mit vollständiger Verschwenkung ist interessant, und ich plane es in meinem nächsten Blog zu untersuchen.

Lugui ist eine der Demonstrationsprogramme mit Numerical Computing mit MATLAB enthalten. Ich werde es auch in meinem nächsten Blog beschreiben. Vorerst werde ich es einfach verwenden, eine Grafik für diesen Blog zu generieren. Hier ist das Ergebnis einer Faktorisierung, der unteren Dreieck Faktor L in grün und dem oberen Dreiecksfaktor U in blau.

Gauß-Elimination mit Teilpivotisierung - Cleves Corner Cleve Moler auf Mathematik und Informatik

Referenzen

higham / papers / hihi89.pdf>, SIAM J. Matrix Anal. Appl. 10, 155-164, 1989.

In Verbindung stehende Artikel