Elementarmatrizen für Gaußalgorithmus
Ausgehend von Ao X = b wird in die App die erweitere Matrix A, enthält die Koeffizoenten des LGS und den Ergebnisvektor b, übernommen.
Die Funktion LE(A, j) erzeugt eine Liste von Elementarmatrizen um Spalte j von A zu Nullen
- addiere Zeile j zu Zeile j+1...n.
Nach j=1...n-1 Schritten erhalte ich eine obere Dreieckmatrix
(11) A4 deren Diagonalelemente auf 1 gesetzt werden ==>
(12) LE4:=DE(A4)
(14) A5
Die Rücksubstitution mit Funktion RE(A, j) läuft von j=n..2 und addiert Zeile j zu j-1: Nullen von Spalte j. Nach j=n...2 (n-1) Schritten erhalte ich die Einheitsmatrix und den Lösungsvektor.
Zur Dokumentatoin erstelle ich in (23), (25) die Parameter der Einheitsmatrizen:
Zeilenadditionen von rechts nach links: (z,s,a): Zeile z + a Zeile s
Das Produkt aller LEi und REi Matrizen ergibt die Inverse.
Wenn man die Elementarmatrizen LEi nicht braucht (nicht sehen will), kann man die Schritte auslassen und direkt Ai+1 berechnen Ai+1:= Product(LE(Ai,i)) Ai
Falls A Parameter enthält (unbestimmte Varaiblen) muss im Algebra Fenster n von Hand gesetzt werden - bevor die Matrix A im CAS geändert wird!
ElementarMatrizenDarstellung2
Funktionsbibliothek (User-Def-Function)
Elementarmatrix mit nn Zeilen/Spalten [Operation: Zeile(zle)+Zeile(spl)*ff, zle=spl: Zeile(zle)*ff]
Ex(zle,spl,ff,nn):=Sequence(Sequence(Element(Identity(nn),zz,ss)-(zle==spl && zle==zz && spl==ss)*1+If(zz==zle && ss==spl,ff,0),ss,1,nn),zz,1,nn);
Elementarmatrix zum Zeilen/Spaltentausch zz<->ss mit nn Zeilen/Spalten
T(zz,ss,nn):=Sequence(Element(Identity(nn),If(kk<>zz &&kk<>ss,kk, If(kk==zz,Max(zz,ss),Min(zz,ss)))),kk,1,nn);
LE(AA,jj):=Sequence(E(k,jj,-Element(AA,k,jj)/Element(AA,jj,jj)),k,n,jj+1)
DE(AA):=Sequence(If(Element(AA,k,k)==0,E(k,k,1),E(k,k,1/Element(AA,k,k))),k,1,n)
-Down since version ~V6.0.740
RE(AA, jj):=Sequence(E(k,jj,-Element(AA,k,jj)),k,1,jj-1)