Gaußsches Eliminationsverfahren
aus Wikipedia, der freien Enzyklopädie
Dieser Artikel wurde auf den Seiten der Qualitätssicherung eingetragen. Hilf mit, ihn zu verbessern, und beteilige dich an der Diskussion! Folgendes muss noch verbessert werden: Manche Formeln in diesem Artikel sind als Bilder eingebunden worden und funktionieren nicht mehr, da die Lizenzen nicht existieren oder falsch sind. Die Bilder sollten durch neue oder durch explizite Formeln ersetzt werden. -- Florian Feldhaus 19:54, 27. Mär. 2007 (CEST)
|
Das Gaußsche Eliminationsverfahren ist ein Algorithmus aus den mathematischen Teilgebieten der linearen Algebra und der Numerik. Es ist ein wichtiges Verfahren zum Lösen von linearen Gleichungssystemen. Die Anzahl der benötigten Operationen zur Lösung des Gleichungssystems ist von der Größenordnung n3 bei einer -Matrix. In seiner Grundform ist der Algorithmus anfällig für Rundungs- und Rechenfehler, mit kleinen Modifikationen (Pivotisierung) stellt er für allgemeine lineare Gleichungssysteme das Standardlösungsverfahren dar.
Das Verfahren wurde um 1850 von Carl Friedrich Gauß bei Arbeiten auf dem Gebiet der linearen Gleichungssysteme entwickelt, allerdings hatte der chinesische Mathematiker Liu Hui bereits im Jahr 263 eine Beschreibung des Lösungsschemas veröffentlicht.
Inhaltsverzeichnis |
[Bearbeiten] Erklärung
Ein lineares Gleichungssystem mit drei Variablen bzw. Unbekannten (x,y,z) und den jeweiligen Koeffizienten a,b,c,e hat die Form:
- a1x + a2y + a3z = e1;
- b1x + b2y + b3z = e2;
- c1x + c2y + c3z = e3.
Der Algorithmus zur Berechnung der Variablen x, y und z lässt sich in zwei Etappen einteilen:
- Vorwärtselimination,
- Rückwärtseinsetzen (Rücksubstitution).
Im ersten Schritt wird das Gleichungssystem durch Äquivalenzumformungen, bei denen die Informationen des Gleichungssystems nicht geändert werden, in die Stufenform gebracht. Stufenform heißt, dass pro Zeile mindestens eine Variable weniger auftritt, also mindestens eine Variable eliminert wird, indem die Zeile so umgeformt wird, dass der Koeffizient der Variablen Null ist. Im obigen Beispiel würde man b1,c1 und c2 eliminieren, in der dritten Zeile ist dann nur noch die Variable z. Zum Erreichen der Stufenform sind drei Umformungen zulässig: Es können (komplette) Zeilen vertauscht werden, eine Zeile kann mit einer von Null verschiedenen Zahl multipliziert werden oder es darf, wie beim Additionsverfahren, eine Zeile oder das Vielfache einer Zeile zu einer anderen Zeile addiert werden. Im zweiten Schritt werden ausgehend von der letzten Zeile, in der sich nur noch eine Variable befindet, die Variablen ausgerechnet und in die darüberliegende Zeile eingesetzt.
Ein lineares Gleichungssystem kann eine, mehrere oder keine Lösung haben. Diese Unterscheidung kann schon nach der Vorwärtselimination getroffen werden, indem die letzte Zeile betrachtet wird (siehe weiter unten).
Beispiel:
- x + 2y + 3z = 2, hier: a1 = 1, a2 = 2, a3 = 3 und e1 = 2
- x + y + z = 2
- 3x + 3y + z = 0
Es werden schematisch nur die Koeffizienten (a, b, c, e) geschrieben:
Jetzt wird so umgeformt, dass b1 und c1 Null werden, indem man geeignete Vielfache der ersten Gleichung zur zweiten und dritten Gleichung addiert. Den Multiplikator, mit dem man die Zeile multiplizieren muss, erhält man, indem man die erste Zahl der Zeile, aus der das Element elimiert werden soll, durch die Zahl teilt, die sich in der Zeile darüber an der gleichen Position befindet (hier: 1/1=1, 3/1=3). Da das Element verschwinden soll, muss die Zahl noch mit (–1) multipliziert werden, so dass sie negativ wird.
Zu Zeile 2 wird das (–1)-fache und zu Zeile 3 das (–3)-fache von Zeile 1 addiert. Damit c2 Null wird, wird ein Vielfaches von Zeile 2 zu Zeile 3 addiert, in diesem Fall das (–3)-fache:
Falls die Zahl, durch die zur Berechnung des Multiplikators dividiert wird (hier für die ersten beiden Zeilen die Zahl 1, beim dritten Mal die Zahl (–1) ), Null ist, wird diese Zeile mit einer weiter unten liegenden vertauscht.
Am Ende kann durch Betrachten der letzten Zeile über die Lösbarkeit entschieden werden. Das Gleichungssystem ist:
- eindeutig lösbar, wenn kein Element der Diagonalen (hier: a1,b2,c3) Null ist,
- nicht eindeutig oder unlösbar, wenn ein Element der Diagonalen Null ist
Befindet sich die einzige Null auf der Diagonalen in der letzten Zeile, ist das System unlösbar, wenn auf der rechten Seite (ex) eine Zahl ungleich Null steht, da es sich dann um eine falsche (unerfüllbare) Aussage handelt (z. B. 0=1); hingegen hat das System unendlich viele Lösungen und ist nicht eindeutig lösbar, wenn dort eine Null steht, da es sich um eine wahre Aussage (0=0) handelt.
Weiter im Beispiel:
Die letzte Zeile bedeutet
- − 2z = − 6 .
Diese Gleichung ist einfach lösbar und z = 3.
Damit ergibt sich für die zweite Zeile
- − 1y − 2z = 0, also y = − 6
und weiter
- x = 5 .
Damit sind alle "Variablen" (x, y, z) berechnet:
- .
Wird im ersten Schritt die Matrix weiter umgeformt, bis die Lösung direkt abgelesen werden kann, nennt man das Verfahren Gauß-Jordan-Algorithmus.
[Bearbeiten] Kontrolle durch Zeilensumme
Die Umformungen können durch das Berechnen der Zeilensumme kontrolliert werden.
Hier wurde in der letzten Spalte die Summe aller Elemente der jeweiligen Zeile addiert. Für die erste Zeile ist die Zeilensumme 1+2+3+2 = 8. Da an der ersten Zeile keine Umformungen durchgeführt werden ändert sich ihre Zeilensumme nicht. Bei der ersten Umformung dieses Gleichungssystems wird zur zweiten Zeile das (–1)-fache der ersten addiert. Macht man das auch für die Zeilensumme dann gilt 5 + (–1)*8 = –3. Dieses Ergebnis ist die Zeilensumme der umgeformten zweiten Zeile –1 – 2 + 0 = –3. Zur Überprüfung der Rechnungen kann man also die Umformungen an der Zeilensumme durchführen, sind alle Rechnungen korrekt, muss sich die Zeilensumme der umgeformten Zeile ergeben.
[Bearbeiten] System mit unendlich vielen Lösungen
- (I) x + 4y = 8
- (II) 3x + 12y = 24
Da die Gleichung (II) ein vielfaches der Gleichung (I) ist, hat das Gleichungssystem unendlich viele Lösungen. Bei der Elimination von x in Gleichung (II) verschwindet diese vollständig, übrig bleibt die Gleichung (I). Löst man diese nach x auf kann man die Lösungsmenge in Abhängigkeit von y angeben:
x = 8 - 4y
L={8 - 4y|y}
[Bearbeiten] Pivotisierung
Der gaußsche Algorithmus ist im Allgemeinen nicht ohne Zeilenvertauschungen durchführbar. Es ist zumindest notwendig, dass an der entsprechenden Stelle keine Null steht. Dieses zum Erzeugen der Nullen in diesem Schritt genutzte Element der Matrix wird Pivot genannt. Um das zu illustrieren, wurden die Pivots des obigen Beispiels markiert. Zeilenvertauschungen waren hier nicht nötig.
Für die Rechnung per Hand ist es sicher sinnvoll, eine 1 oder minus 1 als Pivot zu wählen. Um einen möglichst stabilen Algorithmus zu erhalten, wählt man das betragsgrößte Element als Pivot. Wählt man das Pivot in der aktuellen Spalte, spricht man von Spaltenpivotisierung (analog Zeilenpivotisierung).
[Bearbeiten] LR-Zerlegung
Will man das Lösen des Gleichungssystems Ax=b als Computerprogramm umsetzen bietet es sich an, den Gaußalgorithmus als LR-Zerlegung (auch LU-Zerlegung oder Dreieckszerlegung genannt) zu interpretieren. Dies ist eine Zerlegung der regulären Matrix A in das Produkt einer linken unteren Dreiecksmatrix L (links, bzw. engl. "lower") und einer rechten oberen Dreiecksmatrix R (rechts, auch mit U bezeichnet, von engl. "upper"). Das folgende Beispiel zeigt dies:
Dabei hat R die oben erwähnte Stufenform und die Matrix L dient dem Speichern der benötigten Umformungsschritte. Um Eindeutigkeit zu Erreichen werden die Diagonalelemente der Matrix L als 1 festgelegt. Die Umformungsschritte zu speichern hat den Vorteil, dass für verschiedene "rechte Seiten" b das Gleichungssystem effizient durch Vorwärts- und Rückwärtseinsetzen gelöst werden kann.
Die im Allgemeinen aus Stabilitätsgründen benötigten Zeilenvertauschungen können durch eine Permutationsmatrix beschrieben werden:
- PA = LR.
[Bearbeiten] Vorwärtseinsetzen
Beim Vorwärtseinsetzen berechnet man eine Lösung y des linearen Gleichungssystem Ly = b. Diese steht über die Gleichung y = Rx mit der Lösung x des ursprünglichen Gleichungssystems in Beziehung.
Ausgeschrieben hat das Gleichungssystem Ly = b folgende Gestalt:
Für die Komponenten yi gilt dann die folgende Formel:
Beginnend mit können nacheinander ausgerechnet werden, indem jeweils die schon bekannten yi eingesetzt werden.
[Bearbeiten] Rückwärtseinsetzen
Beim Rückwärtseinsetzen berechnet man die Lösung x des ursprünglichen Gleichungssystem, indem man Rx = y ähnlich wie beim Vorwärtseinsetzen löst. Der Unterschied besteht darin, dass man bei beginnt und dann nacheinander die Werte von berechnet. Die entsprechende Formel lautet
[Bearbeiten] Algorithmus in Pseudocode
Der folgenden Algorithmus führt eine LR-Zerlegung ohne Pivotisierung aus.
Eingabe: Matrix A For i = 1 To n For j = i To n For k = 1 TO i-1 A(i,j)-=A(i,k)*A(k,j) end end For j=i+1 To n For k = 1 TO i-1 A(j,i)-=A(j,k)*A(k,i) end A(j,i)/=A(i,i) end end Ausgabe: Die mit den Dreiecksmatrizen L und R überschriebene Matrix A, wobei die Einsen auf der Diagonalen von L nicht gespeichert werden.
[Bearbeiten] Komplexität
Die Anzahl arithmetischer Operationen für die LR-Zerlegung ist bei einer -Matrix ca. . Der Aufwand für das Vorwärts- und Rückwärtseinsetzen ist quadratisch (O(n2)). Für Bandmatrizen mit fester Bandbreite(unabhängig von n) reduziert sich der Aufwand auf O(n).
Konkret benötigt man bei einem 3×3 System maximal 11 Multiplikationen (oder Divisionen) und 8 Additionen für die Elimination. Dazu kommen 6 Divisionen (oder Multiplikationen) sowie 3 Subtraktionen beim Rückwärtseinsetzen. Bei einem 4×4 System benötigt man insgesamt bis zu 42 Multiplikationen oder Divisionen und 32 Additionen oder Subtraktionen. Der Algorithmus sollte auf einem Rechner nur für Gleichungssysteme kleiner bis mittlerer Dimension verwendet werden (bis etwa n=1000). Für Matrizen höherer Dimension sollten iterative Verfahren verwendet werden.
[Bearbeiten] Stabilität
Ohne Pivotisierung ist das Verfahren im Allgemeinen instabil. Stabilität ergibt sich, falls Spaltenpivotisierung zur Lösung verwendet wird. Bei diagonaldominanten oder positiv definiten Matrizen (siehe auch Cholesky-Zerlegung) ist das Verfahren auch ohne Pivotisierung durchführbar und stabil. Die Stabilitätskonstante kann für das Verfahren allerdings vergleichsweise groß sein. Dies ist der Fall wenn die Matrizen L und R eine wesentlich schlechtere Kondition haben als die Matrix A selbst. Generell bessere Stabilität haben QR-Zerlegungen.
Ein praktischer Ansatz zum Ausgleich dieser Rechenungenauigkeiten besteht aus einer Nachiteration mittels Splitting-Verfahren, da über die LR-Zerlegung eine gute Näherung der Matrix A zur Verfügung steht, die leicht invertierbar ist. Da es meistens nur um kleine Korrekturen geht, reicht oft ein einziger solcher Iterationsschritt. Im Allgemeinen ist für diese Rechnung allerdings eine höhere Genauigkeit notwendig.
[Bearbeiten] Speicherplatzbedarf
Die Rechnung kann auf dem Speicher der Matrix A durchgeführt werden, so dass außer der Speicherung von A selbst kein zusätzlicher Speicherbedarf entsteht. Bei iterativen Verfahren, die mit Matrix-Vektor-Multiplikationen arbeiten, kann allerdings eine explizite Speicherung von A selbst nicht nötig sein, so dass diese Verfahren ggf. vorzuziehen sind. Die Besetztheitsstruktur der Matrix lässt sich zum Beispiel im Falle von Bandmatrizen ausnutzen.
[Bearbeiten] Siehe auch
[Bearbeiten] Literatur
- Andrzej Kielbasiński, Hubert Schwetlick: Numerische lineare Algebra. Eine computerorientierte Einführung. Deutscher Verlag der Wissenschaften, Berlin 1988, ISBN 3-326-00194-0.
- Andreas Meister: Numerik linearer Gleichungssysteme. Eine Einführung in moderne Verfahren. 2. Auflage, Vieweg, Wiesbaden 2005, ISBN 3-528-13135-7.