Gauss Triag-Diag-Subst CAS Funktionen

[size=150]Gauss-Schritte über CAS Funktionen[/size][br][br][table][tr][td][b][color=#1C4587]GaussTriag(A,s)[/color] [/b][br]- Spalte s, Elemente [b]unterhalb [/b]der Diagonalen von A auf 0 setzen (s=1..n-1)[br]- Obere Dreiecksmatrix durch Zeilenumformungen erzeugen[br]- Führen sie GausTriag-Schritte durch bis alle Elemente (Spalte 1..n-1) unter der Diagonalen 0 sind[br] [br][code]GaussTriag(MM,zz):=Sequence(If(kk>zz,Element(MM,kk) - Element(MM,kk,zz)/Element(MM,zz,zz)*Element(MM,zz),Element(MM,kk)) ,kk,1,Length(MM))[br][/code][br][/td][td][size=50][table][tr][td]x[/td][td]x[/td][td]x[/td][/tr][tr][td][color=#ff0000]0[/color][/td][td]x[/td][td]x[/td][/tr][tr][td][color=#ff0000]0[/color][/td][td][color=#ff0000]0[/color][/td][td]x[/td][/tr][/table][b][color=#1C4587]A2=GausTriag(A1,1) A3=GausTriag(A2,2)[/color][/b][/size][/td][br][/tr][tr][td][b][color=#1C4587]GaussDiag(A)[/color] [/b][br]- Diagonal-Elemente von A auf 1 setzen[br]- GaussSubst benötigt eine Diagonale aus 1en[br][code][br]GaussDiag(MM):=Sequence(If(Element(MM,kk,kk)<>0, Element(MM,kk)/Element(MM,kk,kk),Element(MM,kk)),kk,1,Length(MM))[br][br][/code][br][/td][td][size=50][table][tr][td][color=#ff0000]1[/color][/td][td]x[/td][td]x[/td][/tr][tr][td]0[/td][td][color=#ff0000]1[/color][/td][td]x[/td][/tr][tr][td]0[/td][td]0[/td][td][color=#ff0000]1[/color][/td][/tr][/table][b][color=#1C4587] A4=GausDiag(A3)[/color][/b][br][/size][/td][/tr][tr][td][color=#1C4587][b]GaussSubst(A,s) [/b][br]- [/color]Spalte s, Elemente [b]überhalb [/b]der Diagonalen von A auf 0 setzen (s=n..2)[br]- Obere Dreiecksmatrix durch Zeilenoperationen zur Einheitsmatrix umformen[br]- Wenden sie GaussSubst von Spalte n...2 an bis sie die Einheitsmatrix, Identity(n), erhalten[br][code][br]GaussSubst(MM,zz):=Sequence(If(kk<zz,Element(MM,kk)-Element(MM,kk,zz)Element(MM,zz),Element(MM,kk)),kk,1,Length(MM));[br][/code][/td][td][size=50][table][tr][td]1[/td][td][color=#ff0000]0[/color][/td][td][color=#ff0000]0[/color][/td][/tr][tr][td]0[/td][td]1[/td][td][color=#ff0000]0[/color][/td][/tr][tr][td]0[/td][td]0[/td][td]1[br][/td][/tr][/table][b][color=#1C4587]A5=GausSubst(A4,3) A6=GausSubst(A5,2)[/color][/b][br][/size][/td][/tr][/table][br]Die Ausgangsmatrix und die Zwischenschrittmatrizen so ausrichten, dass die Diagonalelemente besetzt sind - ggf. Zeilentausch durchführen. Tzs-Tauschfunktion in Werkzeugkiste (Buch CAS 4 lineare Gleichungen). Wenn sich 0-Zeilen ergeben tauschen sie diesen nach "unten". [br][br][code]Tzs(zz,ss,nn):=Sequence(Sequence( If((zz==kk ∧ ss==jj) ∨ (ss==kk ∧ zz==jj) ∨ (kk==jj ∧ kk≠zz ∧ jj≠ss) ,1,0),kk,1,nn),jj,1,nn);[/code][br][br]Die Argumente der Funktionen sind MM (Matrix) und zz (Zeile) - immer verdoppelt um Überschneidungen mit anderen Namen im CAS- oder Algebra-Fenster zu vermeiden. Auch die Laufvariable kk nicht nochmal verwenden! Wenn sie die Funktionen [code]GaussTriag[/code], [code]GaussDiag[/code], [code]GaussSubst[/code] in ein eigenes Applet übernehmen die Definitionen mit [color=#ff0000]"Behalte Eingabe [icon]/images/ggb/toolbar/mode_keepinput.png[/icon] Keep Input"[/color] abschließen!
Spaltentausch: Diagonalelemente besetzt halten
Im Applet ist auch im Lösungsvektor x3 <==> x5 getauscht - verwende Tauschmatrix Tzs um die Standard-Reihenfolge herzustellen:[br][code]Tzs(3,5,nx)Transpose(X) = Tzs(3,5,nx)Transpose(Substitute(X_{L},$20))[br][/code][br][math]\small \left(\begin{array}{r}x1\\x2\\x3\\x4\\x5\\\end{array}\right) = \left(\begin{array}{r}s - \frac{2}{5} \; t\\-\frac{1}{5} \; t + 10\\s\\t\\\frac{1}{5} \; t\\\end{array}\right)[/math][br][br]Beispiel:[br]LGS mit Parameter a [br]GLS:={(a-1)x1-2x2+ (a-4)x3=2,2x1+x2+4x3=0,(a-1)x1-2x2-a*x3=a}[br]oder mit Spaltentausch 1<->2 [br]GLS:={(a-1)x1-2x2+ (a-4)x3=2,2x1+x2+4x3=0,(a-1)x1-2x2-a*x3=a} {{0, 1, 0}, {1, 0, 0}, {0, 0, 1}}
Beispiel 3x3 mit Parameter a

Information: Gauss Triag-Diag-Subst CAS Funktionen