/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 0.8.5 ] */ /* [wxMaxima: title start ] Matrizenrechnung [wxMaxima: title end ] */ /* [wxMaxima: comment start ] (A. Filler, Elementare Lineare Algebra, Kapitel 6) [wxMaxima: comment end ] */ /* [wxMaxima: section start ] Eingabe von Matrizen; Addition von Matrizen und Multiplikation von Matrizen mit reellen Zahlen [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Matrizen werden in der Weise matrix([Zeile 1], [Zeile 2], ..., [Zeile m]); eingegeben, wobei [Zeile 1],... Zeilenvektoren sind, z.B. [1,3,5,2,-4]. [wxMaxima: comment end ] */ /* [wxMaxima: section start ] Rang einer Matrix [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Um den Rang einer Matrix zu bestimmern, ist (nach Eingabe der Matrix) rank(A) einzugeben. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([1,3,5,2,-4], [0,2,3,1,-3], [1,-3,-4,-1,5], [4,6,11,5,2] ); rank(A); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Es wird nun der Rang der Matrix des homogenen linearen Gleichungssystems berechnet, das man erhält, wenn die Bedingung, dass eine 3x3-Matrix ein magisches Quadrat ist, als Gleichungen ausdrückt (siehe Beispiel 5.12 in dem Abschnitt 5.2.1 des Buches). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([a11,a12,a13,0,0,0,0,0,0,-s], [0,0,0,a21,a22,a23,0,0,0,-s], [0,0,0,0,0,0,a31,a32,a33,-s], [a11,0,0,a21,0,0,a31,0,0,-s], [0,a12,0,0,a22,0,0,a32,0,-s], [0,0,a13,0,0,a23,0,0,a33,-s], [a11,0,0,0,a22,0,0,0,a33,-s], [0,0,a13,0,a22,0,a31,0,0,-s] ); rank(A); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Überprüfung von Spaltenvektoren einer Matrix auf lineare Unabhängigkeit (siehe Beispiel 6.1 des Buches) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([1,3,5,2,-4], [0,2,3,1,-3], [1,-3,-4,-1,5], [4,6,11,5,2] )$ solve([lambda1*A[1,1] + lambda2*A[1,2] + lambda3*A[1,3] + lambda4*A[1,4] = 0, lambda1*A[2,1] + lambda2*A[2,2] + lambda3*A[2,3] + lambda4*A[2,4] = 0, lambda1*A[3,1] + lambda2*A[3,2] + lambda3*A[3,3] + lambda4*A[3,4] = 0, lambda1*A[4,1] + lambda2*A[4,2] + lambda3*A[4,3] + lambda4*A[4,4] = 0], [lambda1, lambda2, lambda3, lambda4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ A:matrix([1,3,5,2,-4], [0,2,3,1,-3], [1,-3,-4,-1,5], [4,6,11,5,2] )$ solve([lambda1*A[1,1] + lambda2*A[1,2] + lambda3*A[1,5] = 0, lambda1*A[2,1] + lambda2*A[2,2] + lambda3*A[2,5] = 0, lambda1*A[3,1] + lambda2*A[3,2] + lambda3*A[3,5] = 0, lambda1*A[4,1] + lambda2*A[4,2] + lambda3*A[4,5] = 0], [lambda1, lambda2, lambda3]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] (siehe Beispiel 6.1 des Buches) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([1,3,5,2,-4], [0,2,3,1,-3], [1,-3,-4,-1,5], [4,6,11,5,2] )$ solve([lambda1*A[1,1] + lambda2*A[2,1] + lambda3*A[3,1] + lambda4*A[4,1] = 0, lambda1*A[1,2] + lambda2*A[2,2] + lambda3*A[3,2] + lambda4*A[4,2] = 0, lambda1*A[1,3] + lambda2*A[2,3] + lambda3*A[3,3] + lambda4*A[4,3] = 0, lambda1*A[1,4] + lambda2*A[2,4] + lambda3*A[3,4] + lambda4*A[4,4] = 0, lambda1*A[1,5] + lambda2*A[2,5] + lambda3*A[3,5] + lambda4*A[4,5] = 0], [lambda1, lambda2, lambda3, lambda4]); solve([lambda1*A[1,1] + lambda2*A[2,1] + lambda4*A[4,1] = 0, lambda1*A[1,2] + lambda2*A[2,2] + lambda4*A[4,2] = 0, lambda1*A[1,3] + lambda2*A[2,3] + lambda4*A[4,3] = 0, lambda1*A[1,4] + lambda2*A[2,4] + lambda4*A[4,4] = 0, lambda1*A[1,5] + lambda2*A[2,5] + lambda4*A[4,5] = 0], [lambda1, lambda2, lambda4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ A:matrix( [11 , 5 , 1, 5], [0 , 6 ,0 , 4], [-1 ,-3 ,12 , 3], [-5 ,-4 ,-5 , 2]); rank(A); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Matrizenmultiplikation [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Für das Produkt zweier Matrizen (einschließlich des Produkts einer Matrix und eines Spaltenvektors) wird (wie für das Skalarprodukt zweier Vektoren) ein Punkt gesetzt. Es wir im Folgenden das Beispiel 6.2 (Materialverflechtung) sowohl mit allgemeinen Koeffizienten als auch mit den dort angegebenen konkreten Zahlen nachvollzogen. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([a11,a12,a13,a14], [a21,a22,a23,a24]); B:matrix([b11,b12], [b21,b22], [b31,b32]); B.A; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ A:matrix([9,3,8,2], [5,1,8,1]); B:matrix([4,2], [5,7], [3,3]); C:B.A; e:matrix([[60],[150],[40],[200]]); C.e; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ein weiteres Beispiel (siehe Beispiel 6.3 des Buches zur Assoziativität der Matrizenmultiplikation): [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([0,3,-2],[2,4,7],[1,-8,0],[6,5,8]); B:matrix([9,4,3],[12,4,2],[0,5,1]); C:matrix([-1,-9],[0,5],[3,-2]); AB:A.B; BC:B.C; AB.C; A.BC; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Zu Beispiel 6.7 des Buches (Populationsmatrizen): [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ P:matrix([0,0,8],[1/4,0,0],[0,1/2,0])$ p0:matrix([1000],[1000],[1000])$ p1:P.p0; p2:P.p1; p3:P.p2; P2:P.P.P; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Zu Beispiel 6.8 des Buches (Populationsmatrizen): [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ P:matrix([0,0,8,4],[1/4,0,0,0],[0,1/2,0,0],[0,0,1/4,0]); p0:matrix([1000],[1000],[1000],[1000])$ P10:P.P.P.P.P.P.P.P.P.P$ P100:P10.P10.P10.P10.P10.P10.P10.P10.P10.P10$ P1000:P100.P100.P100.P100.P100.P100.P100.P100.P100.P100$ p1000:P1000.p0; p1001:P.p1000; p1002:P.p1001; q:matrix([qE],[qL],[qK],[qaK]); P.q; /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Bildung transponierter Matrizen [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Die Transponierte einer Matrix A wird durch transpose(A) berechnet. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ B:matrix([2,-7,3],[-1,2,2],[3,0,-1])$ C:matrix([-1,-9,0,-3],[0,5,-5,11],[3,-2,0,6])$ transpose (B); transpose (C); transpose(C).transpose(B); B.C; transpose(B.C); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Berechnung inverser Matrizen [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Die inverse Matrix einer Matrix A wird durch invert(A) berechnet. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([2,-5,3],[-1,2,-2],[3,0,-1]); invert(A); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve([2*a11-5*a21+3*a31=1, 2*a12-5*a22+3*a32=0, 2*a13-5*a23+3*a33=0, -a11+2*a21-2*a31=0, -a12+2*a22-2*a32=1, -a13+2*a23-2*a33=0, 3*a11-a31=0, 3*a12-a32=0, 3*a13-a33=1],[a11,a12,a13,a21,a22,a23,a31,a32,a33]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Beispiel einer nicht invertierbaren Matrix [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([5,-4,3],[-1,2,-2],[3,0,-1]); invert(A); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Lösen linearer Gleichungssysteme durch Invertierung von Matrizen [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Gegeben ist ein LGS durch die einfache Koeffizientenmatrix A und den Spaltenvektor b der absoluten Glieder Die Lösung des LGS lässt sich durch A^(-1).b berechnen [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ A:matrix([2,-5,3],[-1,2,-2],[3,0,-1])$ b:matrix([3],[4],[-7])$ invert(A).b; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Zum Vergleich: Lösen desselben LGS mithilfe des solve-Befehls [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ solve([2*x-5*y+3*z=3, -x+2*y-2*z=4, 3*x-z=-7], [x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Berechnung von Determinanten [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ A:matrix([2,-5,3],[-1,2,-2],[3,0,-1])$ B:matrix([5,-4,3],[-1,2,-2],[3,0,-1])$ C:matrix([2,1,-2,0],[2,0,-1,4],[4,2,0,-3],[0,1,-3,2])$ determinant(A); determinant(B); determinant(C); /* [wxMaxima: input end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$