Mathematik von T. Arens, F. Hettlich, Ch. Karpfinger, U. Kockelkorn, K. Lichtenegger, H. Stachel (zu Kapitel 16: Matrizen und Determinanten)restart; MatrizenAddition und Multiplikation von Matrizen und Vektoren wurden im letzten Abschnitt vorgestellt. Nun fehlt uns noch das Matrixprodukt bei passenden Dimensionen. Dafuer ist das Verknuepfungssymbol &* vorgesehen. Wir erhalten z.B.A:=matrix(2,3,[[3,2,1],[0,1,1]]);
b:=matrix(3,1,[1,1,3]);
c:=matrix(1,3,[1,0,2]);
B:=matrix(3,2,[[1,2], [1,1], [1,0]]);
BA=evalm(B&*A);
Ab=evalm(A&*b);
cB=evalm(c&*B);Auf diesem Weg ergeben sich auch das Skalarprodukt und das dyadische Produkt zweier Spaltenvektorencb = evalm(c&*b);
bc = evalm(b&*c);Weitere Befehle zum Umgang mit Matrizen finden sich indem Paket linalg. Wie wir im Programm des letzten Abschnitt schon gesehen haben, koennen wir mit coldim oder rowdim die Spalten- bzw. Zeilendimension einer Matrix erfragen. Mit transpose laesst sich die transponierte Matrix angeben.with(linalg):
transpose(A);oder komplexwertigA:=array([[1+I, 1+I], [1,1-I] ]);
transpose(A);
htranspose(A); Mit dem Befehl htranspose erhalten Sie die transponierte konjugiert komplexe Matrix, die man als hermitsch transponierte Matrix bezeichnet.Mit einigen Befehlen lassen sich Matrizen mit einer speziellen Gestalt leichter eingeben. So erhalten wir etwa eine Diagonalmatrix durch diag(2,3,4,5);Eine Einheitsmatrix bekommen wir somit durchdiag(1,1,1);Eine Matrix, die auf den Diagonalen gleiche Eintraege hat, heisst Toeplitzmatrix . Eine symmetrische Toeplitzmatrix ergibt sich zum Beispiel durch toeplitz([1,2,3,4]);Die Vielzahl von Befehle etwa zu symmetrische Matrizen oder Bandmatrizen. Die Vielzahl von Befehlen zum Umgang mit Matrizen/Feldern wollen wir hier nicht alle aufzaehlen, aber es lohnt sich die Befehlsliste zum Paket linalg genauer durchzusehen. Die inverse MatrixWenn eine inverse Matrix existiert, berechnet der Befehl inverse diese Inverse.A:= matrix(4,4,[[1,2,3,4],[1,1,0,0],[0,2,1,0],[2,5,1,4]]);
inverse(A);
Leicht laesst sich pruefen, ob eine Matrix orthogonal ist. Betrachten wir etwa eine der Matrizen aus der Selbstfrage auf Seite 534 B:=matrix(3,3,[[0,-1,0],[0,0,-1],[-1,0,0]]);
evalm(transpose(B)&*B);
Also ist die Matrix orthogonal, die transponierte Matrix ist gerade die Inverse zu A.inverse(B);
transpose(B);Die LR-Zerlegung einer Matrix ist durch den Befehl, LUdecomp, im Paket linalg vertreten. Der Befehl liefert als Ergebnis die Matrix U, die obere Dreiecksmatrix. (Im Englischen werden die beiden Matrizen mit U fuer upper und L fuer lower bezeichnet anstelle von L fuer linke unterer Dreiecksmatrix und R fuer rechte obere Dreiecksmatrix bezeichnet) LUdecomp(A,L='l',U='u',P='p');Mit den zusaetzlichen Argumenten hat der Befehl die Variablen l,u,p mit den entsprechenden Matrizen belegt, sodass die Identitaet NiMvSSJBRzYiLUkjJipHRiU2JC1GJzYkSSJwR0YlSSJsR0YlSSJ1R0Yl gilt, wie wir schnell nachpruefen.evalm(l);
evalm(u);
evalm(p);
evalm(A) = evalm(p&*l&*u);Beachten Sie, dass die von Maple gelieferte Vertauschungsmatrix p gerade die Inverse der im Buch angegebenen Matrix P (s. Seite 537) ist.Ob eine Matrix ueberhaupt invertierbar ist, koennen wir leicht anhand der Determinate pruefen, die mit dem Befehl det berechnet wird. det(A);Die Adjunkte einer Matrix A bekommt man direkt durchadjoint(A);Wir koennen diese Matrix natuerlich auch durch multiplizieren der Inverse von A mit det(A) berechnen. evalm(det(A)*inverse(A));
Aufgaben1. Fuer welche reellen Werte a ist die Matrix [ 2 1 0 0 ]
[ a 0 2 1 ] [ 1 a 1 1 ] [ 1 2 a a ]invertierbar ?LoesungWir gegeben die Matrix einA:=matrix(4,4,[[2,1,0,0],[a,0,2,1],[1,a,1,1],[1,2,a,a]]);und berechnen Ihre Determinanted:=det(A);Die Matrix ist invertierbar, wenn die Determinante nicht Null ist solve(d=0,a);2. Verifizieren sie fuer u=(1,2,3)^T und v=(1,0,1)^T die Identitaeten:NiMqJiwmJSJJRyIiIiomJSJ1R0YmKSUidkclIlRHRiZGJkYmJSJCR0Ym =NiMlIklH= NiMqJiUiQkciIiIsJiUiSUdGJSomJSJ1R0YlKSUidkclIlRHRiVGJUYl mit NiMvJSJCRywmJSJJRyIiIiomKSUjdXZHJSJUR0YnLCZGJ0YnKiYpJSJ2R0YrRiclInVHRidGJyEiIkYx .LoesungWir definierenu:=matrix(3,1,[1,2,3]); v:=matrix(3,1,[1,0,1]);
ut := transpose(u); vt:=transpose(v);und berechnentmp:=evalm(vt &* u)[1,1];Beachten Sie, dass wir die Zahl nicht die (1x1)-Matrix im Nenner des folgenden Ausdrucks benoetigenId:= diag(1,1,1);
B := evalm(Id - u &* vt / (1 + tmp));evalm((Id+u&*vt)&*B);
evalm(B&*(Id + u&*vt));3. Losen Sie Aufgabe 6.14 im Buch mit Hilfe von MapleLoesungZunaechst geben wir die Matrix ein, wobei wir die noch unbekannten Elemente mit a,b,c,d benennena:='a': b:='b': c:='c': d:='d':
A:= matrix(3,3,[[1/2,a,1/sqrt(2)],[1/2,-1/2,b],[c,1/sqrt(2),d]]);Die Matrix ist orthogonal, wenn die transponierte Matrix die Inverse zu A ist. Es giltC:=evalm(A&*transpose(A));Bedingungen an a,b,c,d lassen sich nun ablesen. Wir beginnen mit den ersten beiden Diagonalelementenlsga:=solve(C[1,1]=1,a);
lsgb:=solve(C[2,2]=1,b);
a1:=lsga[1];
a2:=lsga[2];
b1:=lsgb[1];
b2:=lsgb[2];Einsetzen in NiMmSSJjRzYiNiQiIiMiIiI= liefertsubs(a=a1,b=b1,C[2,1]);
subs(a=a1,b=b2,C[2,1]);
subs(a=a2,b=b1,C[2,1]);
subs(a=a2,b=b2,C[2,1]);Also kommen nur a2 und b2 als Loesung in Frage. Diese setzen wir ein und bekommenC:=subs(a=a2,b=b2,evalm(C));Ein weiterer Vergleich zur Einheitsmatrix ergibt Bedingungen fuer c und dlsgc:=solve(C[3,1]=0,c);lsgd:=solve(subs(c=lsgc,C[3,3]=1),d);Wir erhalten zwei Loesungen mitd1:=lsgd[1];
c1:=subs(d=d1,lsgc);undd2:=lsgd[2];
c2:=subs(d=d2,lsgc);