Musterlösung der zweiten Klausur zur Linearen Algebra I, 4.02.200 > restart; with(linalg): Warning, the protected names norm and trace have been redefined and unprotected Lösung des Ankreuzteils: T: NJNJN (bzw. auch NJNNN) T2: NJJNNNJ T: NJJJJN T4: JNNNJ Aufgabe : Stelle zunächst die Ausgangsmatrix für den Zassenhausalgorithmus auf: > A := matrix([[,,,,,,,,,],[0,0,,,0,0,0,,,0],[,,0,0,0,0,0,0,0,0],[0,,,0,0,0,0,0,0,0],[,0,0,,,0,0,0,0,0]]); 0 0 0 0 0 0 A := 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Führe nun die Gaußelimination durch: > Gausselim(A,) mod ; 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 2 2 2 2 2 > Gaussjord(A,) mod ; 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 Hieraus läßt sich nun folgendes Ergebnis direkt ablesen (Beachte: Das Ergebnis muss in der Ausgangsbasis dargestellt werden, eine Koordinatenspalte bzw. -zeile wäre hier nicht eindeutig): <U, U 2 > = < B + B 4, B 2 + 2 B 4, B + B 4, B >, Schnitt( U, U 2 ) = < B + B 2 + B + B 4 + B > Aufgabe 2: Gegeben ist die Matrix der Abbildung φ: > B := matrix(4,,[,0,,0,,,0,,,,0,]); Page
0 0 B := 0 0 Führe einen Gaußalgorithmus auf den Spalten von B durch, um das Bild von φ zu bestimmen: > transpose(gausselim(transpose(b))); 0 0 0 0 0 0 0 0 Dieses liefert nun eine Basis des Bildes von φ mit Bild φ = < C + C 4, C 2 + C >, und durch Ergänzen zu einer Basis von V erhält man eine Basis zu Kokern φ = < C + Bild φ, C 4 + Bild φ >. Aufgabe : Ausgehend von der Matrix des Skalarproduktes Φ > A := matrix(,,[,,,,2,,,,2]); A := 2 2 berechne zunächst das orthogonale Komplement von U, d.h. einen Erzeuger davon. Hierzu geben wir die beiden Erzeuger von U als Koordinatenvektoren bezüglich der Basis B an: > u := matrix(,,[,,0]); > u2 := matrix(,,[0,,]); u := 0 u2 := Such nun solche Vektoren, die auf u und u2 senkrecht stehen (Bedingung für den Orthogonalraum). Dazu lösen wir das folgende lineare Gleichungssystem: > z := evalm(transpose(u)&*a) ; z2 := evalm(transpose(u2)&*a); 0 z := [ 2 2] z2 := [ 2 ] > G := matrix(2,,[convert(transpose(z),vector),convert(transpose(z2), vector)]); G := 2 2 2 Mit der Lösung des linearen Gleichungssystems erhalten wir die folgende Bedingung für das Orthogonalkomplement von U: Page 2
> linsolve(g,vector(2,[0,0]));,, 2 _t _t 0 Also ist B + 2 B 2 ein Erzeuger für das Orthogonalkomplement von U, und, wie zu erwarten war, ist der Orthogonalraum eindimensional. > u := matrix(,,[-,2,0]); - u := 2 0 und dieser Vektor hat die Länge > evalm(transpose(u)&*a&*u)[,]; Die besten Approximationen zu den Vektoren V bzw. V 2 ergeben sich damit folgendermaßen: > v := matrix(,,[,-,]); v := - Bestimme das Skalarprodukt der beiden an der Projektion beteiligten Vektoren > d := evalm(transpose(v) &* A &* u)[,]; d := - und bestimme die Projektion des gegebenen Vektors in die durch den Teilraum U beschriebene Ebene (Formel analog zum Gram-Schmidt-Verfahren): > vn := evalm(v - d/ * u); -4 vn := und nun verfahren wir analog für den zweiten Vektor: > v2 := matrix(,,[0,0,]); 0 v2 := 0 > d2 := evalm(transpose(v2) &* A &* u)[,]; d2 := - mit dem Ergebnis, das wiederum in U liegt. > v2n := evalm(v2 - d2/ * u); Page
v2n := - 2 Aufgabe 4: > B := matrix(,,[0,-,-,-,0,-,-,-,0]); 0 - - B := - 0 - - - 0 Berechne eine Polarzerlegung der gegebenen Matrix, d.h. stelle die Matrix als Produkt einer positiv definiten, se;bstadjungierten und einer orthogonalen Matrix dar: Hierzu bestimmen wir zunächst Minimalpolynom, Eigenwerte und Eigenräume der Ausgangsmatrix: > minpoly(b,x); > eigenvalues(b); > EV := eigenvectors(b); 2 + x + x 2,, EV := [, 2, {[-,, 0 ], [-, 0, ]}], [,, {[,, ] }] Damit können wir Orthonormalbasen zu den jeweiligen Eigenräumen bestimmen, indem wir die Eigenvektoren zu den einzelnen Eigenwerten orthonormalisieren: > N := convert(map( simplify,gramschmidt(ev[][],normalized)),list); N := 2, 2, 2, 2, 2, 0 6 6 2 2 > N2 := convert(map( simplify,gramschmidt(ev[2][],normalized)),list); N2 :=,, Daraus ergibt sich aus den Spalten der Eigenvektor-Orthonormalbasis die folgende orthogonale Matrix: > o := transpose(matrix([op(n),op(n2)])); 2 2 6 2 o := 2 2 6 2 2 0 Test, ob o wirklich eine orthogonale Matrix ist: > evalm(transpose(o) &* o); Page 4
0 0 0 0 0 0 Die Ausgangsmatrix lässt sich also nun diagonalisieren: > d := evalm(transpose(o) &* B &* o); 0 0 d := 0 0 0 0 Nun manipulieren wir die Diagonalmatrix so, dass wir positive Einträge erhalten (um daraus eine positiv definite Matrix zu erzeugen) > da := map( abs,d); 0 0 da := 0 0 0 0 2 > ds := evalm(d &* da^(-)); 0 0 ds := 0 0 0 0 - Damit erhalten wir nun die gesuchte symmetrische, und damit auch selbstadjungierte Komponente: > A := evalm(o &* da &* transpose(o)); 4 4 A := 4 und die zugehörige orthogonale Komponente (s.o. und Anpassung der Diagonalmatrix): > g := evalm(o &* ds &* transpose(o)); g := > evalm(transpose(g) &* g); 0 0 0 0 0 0 Damit erhalten wir nun also die (eindeutige) Polarzerlegung mit der geforderten Eigenschaft: > evalm(a &* g); Page
Aufgabe 0 - - - 0 - - - 0 Gegeben ist die folgende Matrix, die wir als Grammatrix eines Skalarproduktes Φ auffassen können: > A := matrix(,,[,,-,,,,-,,]); - A := -. Methode: man sieht, dass der folgende Vektor die Länge 0 hat, d.h. finde einen Vektor v 0 mit der Eigenschaft Φ ( v, v) = 0, so dass die Bilinearform (bzw. ihre Matrix) also nicht positicv definit sein kann. > v := matrix(,,[,0,]); v := 0 > evalm(transpose(v) &* A &* v)[,]; 0 2. Methode: Berechne die Eigenwerte der Matrix A > minpoly(a,x); > eigenvalues(a); > evalf(%); 2 + 6 x 9 x 2 + x 6, + 7, 2 2 2 2 7 6.,.628, -.628 7 Der Eigenwert ist nun offensichtlich negativ, also ist die Matrix nicht positiv definit. 2 2. Methode: Gram-Schmidt-Verfahren 4. Methode: Cholesky-Zerlegung Aufgabe 6: Gegeben ist die Matrix > C:=matrix([[0,0,],[,0,],[0,,4]]); 0 0 C := 0 0 4 C ist aber die Begleitmatrix des Polynoms x 4 x 2 x > p:=charpoly(c,x); mit der Eigenschaft p := x 4 x 2 x Page 6
> Factor(p) mod ; Außerdem ist > minpoly(c,x); ( x + ) 2 ( x + 4 ) x 4 x 2 x woraus wir schon ablesen können, dass die Matrix nicht diagonalisierbar ist. Berechen also stattdessen die Jordanform von C (Darstellung in einer Basis aus Eigen- und Hauptvektoren) > CC := matrix(,,[-,0,0,,-,0,0,0,]); - 0 0 CC := - 0 0 0 Die -te Potenz ist somit (ohne Potenzieren der ganzen Matrix, da uns nur die Diagonaleinträge interessieren): > CC := matrix(,,[-^,0,0,a,-^,0,0,0,^]); > trace(cc); - 0 0 CC := a - 0 0 0 Wobei a unbekannt ist (und nicht wichtig). Somit Spur(C ) = - = 4. andere Möglichkeit: Berechne explizit (und mühsamer): > map( mod,evalm(c^),); und wir können die Spur direkt ablesen: > trace(%); Aufgabe 7: - 4 2 0 4 2 4 Ausgehend von der gegebenen Matrix > A := matrix(,,[0,2,2,2,0,,,2,0,,2,2,2,,,0,0,2,2,0,2,,,,0]); mit dem Minimalpolynom > mu:=(x+2)*(x^2+x+2); 0 2 2 2 0 2 0 A := 2 2 2 0 0 2 2 0 2 0 µ := ( x + 2 ) ( x 2 + x + 2) berechne zunächst den Eigenraum zum Eigenwert : Page 7
> V_ := convert(nullspace(evalm(a+2)) mod,list)[]; V_ := [,, 2, 2, ] > map( mod,evalm(a&*v_),); [,, 2, 2, ] und nun den Hauptraum zu dem Faktor x 2 + x + 2 des Minimalpolynoms. Dazu gehen wir nach dem Verfahren aus der Übung vor: > H := transpose(gausselim(transpose(a+2)) mod ); 2 0 0 0 0 2 0 0 0 H := 2 0 2 0 0 0 0 2 2 0 2 2 2 0 Die Dimension des Hauptraums ist 4, also gibt es zwei Blöcke der Größe 2 auf der Diagonalen und es gilt: r =, r 2 = 2. Wähle als ersten Hauptvektor die erste Matrixspalte: > V_2 := col(h,); V_2 := [ 2,, 2, 0, 2] Nun bestimmen wir durch Anwenden der Matrix weitere, linear unabhängiger Vektoren: > V_ := map( mod,evalm(a &* V_2),); V_ := [ 0, 0, 0,, ] Der nächste Schritt wäre schon von den beiden ersten linear abhängig, > map( mod,evalm(a &* V_),); [ 2,, 2, 2, ] also wählen wir nun einen neuen Vektor aus der Matrix: > V_4 := col(h,); V_4 := [ 0, 0, 2, 2, ] und fahren fort wie oben, bis wir (zusammen mit dem Eigenvektor zum Eigenwert von oben) auf diese Weise eine Basis des Raumes aufgestellt haben: > V_ := map( mod,evalm(a &* V_4),); V_ := [ 2, 2,, 2, ] Damit erhalten wir nun die Basiswechselmatrix: > B := transpose(matrix([v_,v_2,v_,v_4,v_])); 2 0 0 2 0 0 2 B := 2 2 0 2 2 0 2 2 2 mit der Darstellung der Matrix in der neuen Basis: > map( mod,evalm(b^(-) &* A &* B),); Page 8
0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 und erkennen hier die gesuchte Blockdiagonalmatrix mit den Werten r = und r 2 = 2. Page 9