LR Zerlegung auf einem Matrixfeld

Author:
hawe
Dieses Beispiel ist dem Algorithmus die LR Zerlegung auf einem Matrixfeld durchzuführen nach empfunden. Die Faktoren für die Gaußelimination werden gebildet aus der 1.Spalte dividiert durch Diagonalelement der jeweiligen (Rest)Matrix: Im 1.Schritt {{a11,a21,a31,a41}}/a11, dieser Vektor bildet die 1.Spalte der L-Matrix und mit geänderten Vorzeichen unter dem Diagonalelement die 1. Spalte der Gaußeliminationsmatrix Li . (etwa Sequence(Sequence({c(i,j) , a(i,j) - a(k,j) a(i,k) / a(k,k) }, i,k+1,n), j,k+1,n); spaltenweise berechnung - LRdecomp() zeilenweise wg. matrixaufbau im cas; In die 0 Elemente der 1.Spalte L1 A werden die entsprechenden Elemente des Faktorvektors geschrieben. Mit der Untermatrix ( cij )von L1 A wird entsprechend dem 1.Schritt weiter gearbeitet (aij) ==> (cij) ==> (uij) ==> u'44 In der App speichere ich den Status nach jedem Schritt in den Matrizen Ai . Zum Schluß zerlege ich das Matrixfeld LR in die Matrizen L R . ggb-CAS bedingt muß für jeden Schritt eine Matrix angelegt werden! Die user-function LRdecomp() setzt den obenbeschrieben Algorithmus um. Die Pivottauschmatrizen können einfach auf die Matrixfelder Ai angewendet werden - Pi Matrizen für die Zeilenpivotsuche (user-function SPivot() sind vorhanden. Für Spaltenpivotsuche können sie einfach Pi, Qi Matrizen dazuschreiben. Zeile (29) {L R ,P3 P2 P1 A Q1 Q2 Q3} anpassen . Besser zu "sehen" ist der Algorithmus - Prozedurale Programmschritte - in der folgenden App - Pseudoprogramm und Script - allerdings nicht im CAS - achten Sie auf Rundungfehler.... LRdecomp(AA,kk):=Join(Take(AA,1,kk),Sequence(Flatten({If(kk>1,Take(Element(AA,i),1,kk-1),{}),Element(AA, i,kk)/Element(AA, kk,kk),Sequence(Element(AA,i,j) - Element(AA,kk,j) Element(AA,i,kk) / Element(AA,kk,kk) , j,kk+1,n)}), i,kk+1,n));

Lesen des Matrixfeldes nach einem Gauß-Schritt

Lesen des Matrixfeldes nach einem Gauß-Schritt
In jedem Schritt erhält man eine Zeile der R-Matrix und eine Spalte der L-Matrix und die jeweils verkleinerte Restmatrix auf der der Algorithmus wiederholt wird. Anzeige in Grafikfenster und mit CAS-Fenster mit Zeilennummern abgleichen

LRimMatrixfeldR4

Prozedurale Programmschritte

Prozedurale Programmschritte
Pseudoprogramm in Scriptprogramm umgesetzt. Im L-Schritt werden die Matrixpositionen A2,A3,A4||B3,B4||C4 überschrieben und damit wird im R-Schritt weitergerechnet! Zeilenpivotisierung durch Tauschen der Tabellenzeilen durchführen und Tauschmatrizen erstellen oder einfach auf die Originalmatrix übertragen!