LR-Zerlegung mit Pivotsuche (vollständig/teilweise) R4

Autor:
hawe
Hinweise
Generiere Zeilenumformungen (Gauß-Algorithmus) um A in eine rechte obere Dreiecksmatrix R zu überführen. Li Matrix für Zeilenadditionen die in A Spalte i 0en erzeugt.
==> LE(A,i): generiert Elementar-Matrizen für Spalte i ==> aki=0, k>i (0en Spalte i unterhalb aii) - setzt einen Gauß-Eliminationsschritt für eine Spalte i der Matrix A um - Zeilenoperation in Matrix Li = Product( LE(A,i) ) zusammengefasst! Pivotsuche(Zeilen- und Spaltentausch damit) aii = betragsgrößtes Element SPvt(A,i) suche Spalten-Pivot pi:=PivotZ(A,i), qi:=PivotS(A,i) vollständige Pivotsuche über Zeilen UND Spalten ab Zeile/Spalte i Pi=T(i ,pi ) - Zeilentausch-Matrizen für Zeile i <> Zeile pi (Pivot) (Multiplikation von Links) Qi=T(i ,qi ) - Spaltentausch-Matrizen Spalte i <> Spalte qi (Pivot) (Multiplikation von Rechts) Schalter für Pivot-Wahl Pivot:= (2 Zeilen/Spalten-Pivot), (1 Spalten-Pivot), ( 0 ohne Pivot-Suche - T(i,ki)=Einheitsmatrix ) Wenn ein Pivot abgewählt wird werden die entsprechenden Tauschmatrizen T(i,ki) zur Einheitsmatrix. (3)...(9) User-Funktionen für Elementarmatrizen und Pivotsuche Die Zeilentausch-Matrizen Pi=T(i,pi) und Spaltentausch-Matrizen Qi=T(i,qi) sind Selbstinvers T(i, j) T(i, j) = En! Wenn R berechnet ist, (25) R:=(L3 P3 L2 P2 L1) P1 A (Q1 Q2 Q3) muss ein Abgleich der Zeilen/Spalten-Austausche eingefügt werden, R = L' P A Q L'-1R = P A Q , L = L'-1 damit die Zeilen/Spaltenabfolge in L R zu P A Q → P3 P2 P1 A Q1 Q2 Q 3 passt, die Tauschmatrizen Pi zu P zusammengefasst werden können: R= L3 || P3 L2 P3 || P3 P2 L1 P2 P3 || P3 P2 P1 || A || Q1 Q2 Q3 = R= L3 || L2 || L1 || P || A || Q In Fettschrift ausgezeichnet die selbstinversen Einsätze der Tauschmatrizen um die Zeilenoperationen an den Zwischenschritten Ai in Zeilen/Spalten-Korrekt zusammen zu fassen in Li. Insbesondere sind die Tauschmatrizen und P,Q orthogonale Matrizen, d.h. die Inverse=Transponiert: P-1= PT bzw. Q-1= QT ! (26) Einschub(ROT=id ) → Permutationsmatrizen P in der richtigen Reihenfolge vor A angeordnet! Unter Verwendung der Permutationsmatrix P → L:=Transpose(L3 P3 L2 P2 L1 P1 Transpose(P))

ElementarMatrizen LR-AllPivotMx

A:={{1, 3, -1 },{2, 5, -1 }, {-1, -6, 3 }} ggf. wollen Sie auf die Pivotsuchfunktionen verzichten und die Pivotauswahl pi,qi von Hand setzen z.B. P1:=T(1,2),Q1:=T(1,4). A x = b ===> L R = P A ===> P A x = P b ===> L R x = P b
LR Zerlegung mit Spaltenpivot R3LR Zerlegung mit Totalpivot R3
p1:=SPvt(A,1) P1:=T(1,p1) A1:=P1 A L1:=Product(LE(A1,1)) A2:=L1 P1 A p2:=SPvt(A2,2) P2:=T(2, p2) L2:=Product(LE(P2 A2 ,2)) R:=(L2 P2 L1) (P1 A) "L2 || P2 L1 P2 || P2 P1 A" L:= L2 P2 L1 P2)^-1 P:= P2 P1 p1:=PivotZ(A, 1) || q1:=PivotS(A,1) P1:=T(1,p1) || Q1:=[code]T(1,q1) A1:=P1 A Q1 L1:=Product(LE(A1,1)) A2:=L1 P1 A Q1 p2:=PivotZ(A2, 2) || q2:=PivotS(A2,2) P2:=T(2,p2) || Q2:=T(2,q2) L2:=Product(LE(P2 A2 Q2,2 )) R:= L2 P2 L1 P1 A Q1 Q2 L:=(L2 P2 L1 (P2))^-1 P:=(P2) P1 Q:=Q1 Q2 
L R x = P b L R Q^T x = P b 
L y = P b R x = y L y =P b  R QT x = y 
--- a(i,k):=Sum(Element(L, i, j) Element(R, j,k) , j,1,k) ---

Rechnen auf einem Matrixfeld

Aus einer Matrix generiere ich die Gaußelimationsfaktoren für L1 aus der 1. Spalte dividiere durch a11, alle Faktoren mal (-1) (alles unter a11) und fülle zur Einheitsmatix auf. In der 1. Spalte stehen die Faktoren mit denen die 1.Zeile multipliziert wird. Um dann per Matrixprodukt zur Faktorzeile addiert zu werden. Alle Zeilen 2,3,4..n werden geändert mit Nullen in der ersten Spalte. Da ist jetzt Platz um die Eliminationsfaktoren zu parken. Da quasi die Inverse für L benötigt wird, machen wir den Faktor (-1) rückgängig beim Eintrag in das Matrixfeld LR: Wiederhole Algorithmus auf der Matrix (cij) Wiederhole Algorithmus auf Matric (uij) Die Koeffizienen bilden die obere Dreiecksmatrix R und untere Dreiecksmatrix L ergänzt um die Diagonale {1,1,1,1}. Zeilen-Tauschmatrizen Pi zur Pivotsuche in den Einzelschritten müssen natürlich auch auf LR angewendet werden (Li Pi => Pi LR). In dieser Form wird die Verwaltung der Zeilen/Spaltentausche wesentlich einfacher, oder?