Lineare Algebra: Maple 1 WS 2004/05

Aufruf von Maple. Auf den Unix-Rechnern der Fakultät durch:

    xmaple

Auf Windows-Rechnern (zum Beispiel im Rechenzentrum) entweder über das entsprechende Icon, oder über Start - Programme.

Für die Algorithmen der Linearen Algebra ist es erforderlich, zuerst einzugeben:

    > with(linalg);

Die Eingabe einer Matrix erfolgt am besten durch die Angabe der Zeilen, zum Beispiel kann die Matrix

[ \begin{matrix}1 & 2 & 3 & 4 \\ 1 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{matrix} ]

folgendermaßen eingegeben werden:

    > A:= matrix([[1,2,3,4],[1,0,1,0],[0,0,0,0]]);

Bestimmung einer Zeilenstufenform:

    > B:= gausselim(A);

Elementare Zeilenumformungen können auch einzeln durchgeführt werden:

    > B:= addrow(A,2,1,7);

addiert das 7-fache der zweiten Zeile der Matrix A zur ersten Zeile dieser Matrix (die neue Matrix heißt B).

    > C:=swaprow(B,2,3);

vertauscht die zweite und die dritte Zeile der Matrix B (die neue Matrix heißt C).

    > A3:=mulrow(B,2,9);

multipliziert die zweite Zeile der Matrix B mit 9 (die neue Matrix heißt A3). Die entsprechenden Befehle für Spaltenoperationen heißen:

    addcol(A,2,1,7);     swapcol(A,2,3);     mulcol(A,2,9);

dabei ist A die gegebene Matrix, mit der gearbeitet wird.

Zahlen-Eingabe: Immer ganze Zahlen (2, 17, -23) oder Brüche (2/3, 17/9, -3/10) eingeben, bitte keine Dezimalzahlen (wie 0.3 oder 17.0) verwenden. Eingabe von Dezimalzahlen führt dazu, daß Maple nicht genau rechnet, sondern rundet. Eingabe-Korrektur: Mit den Cursor-Tasten an die gewünschte Stelle gehen, dort korrigieren und dann diese Zeile (und alle folgenden Zeilen, die gebraucht werden) durch Verwendung der Enter-Taste aktualisieren. Wichtig. Jede Zeile in Maple ist durch ein Semikolon ; abzuschließen, danach ist die Enter-Taste zu betätigen.

Verwendung von Variablen. Bei der Eingabe von Koeffizienten einer Matrix können nicht nur rationale Zahlen eingegeben werden, sondern auch Namen von Variablen, zum Beispiel A:= matrix([[a,b],[c,d]]), oder auch kompliziertere Aus-

drücke wie B:= matrix([[2*a-1,0],[c^{∧}2+c,c*d]]). Man kann dann später diese

Variablen auswerten. Setzt man etwa c:=3; so erhält man für B das gleiche wie bei

matrix([[2*a-1,0],[12,3*d]]).

Eingabe eines Vektors: Durch

    > vector([1,0,1,2,3]);

wird der Vektor [ 1 0 1 2 3 ] eingegeben. (Warnung: Maple schreibt einen Zeilenvektor, betrachtet ihn aber gegebenenfalls als Spaltenvektor!)

Lösen linearer Gleichungssyteme:

    > linsolve (A,b);

Liefert die Lösungen des Gleichungssystems Ax = b, dabei ist A eine Matrix und b ein Vektor. Man kann natürlich auch mit vielen einzelnen Zeilenumformungen arbeiten (um im Auge zu behalten, wo numerische Rechnungen zu Schwierigkeiten führen können). Bei derartigen Überlegungen ist folgender Befehl hilfreich:

    > pivot(A,i,j);

Hier wird vorausgesetzt, daß der (i, j)-Koeffizient der Matrix A nicht Null ist. Es wird zu allen Zeilen mit Zeilenindex i′ ≠ i ein Vielfaches der i-ten Zeile addiert, um zu erreichen, daß der (i′, j)-Koeffizient verschwindet.

Zum Arbeiten mit Matrizen:

> diag(A,B); _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} A B 0 0

Gegeben ist eine (n × n)-Matrix A und eine (m × m)-Matrix B. Was man erhält, ist eine ((n+m) × (n+m))-Matrix mit A und B auf der Diagonalen.

> concat(A,B); _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.} A B

Die beiden Matrizen A und B (mit gleicher Zeilenzahl) werden horizontal nebeneinander gesetzt.

> stack(A,B); _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} A B

Die beiden Matrizen A und B (mit gleicher Spaltenzahl) werden vertikal untereinander gesetzt.

> delrows(A,r..s); _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.} rs _{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.}_{.}^{.} Die Zeilen r ≤ i ≤ s der Matrix A werden entfernt. (Auch wenn nur eine Zeile entfernt werden soll, etwa die zweite, darf man auf die Punkte nicht verzichten, man

schreibt also: delrows(A,2..2);).

> delcols(A,r..s); _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} r s_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.} Die Spalten r ≤ i ≤ s der Matrix A werden entfernt.

> minor(A,i,j); _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}j_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} i ^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} Liefert den (i, j)-Minor, also die Matrix A_{ij}, die aus A durch Entfernen der i-ten Zeile und der j-ten Spalte entsteht.

Die Transponierte ^{t}A von A erhält man durch:

    > transpose(A);

Zum Rechnen mit Matrizen (Das m in evalm steht für Matrix-Auswertung):

Addition der Matrizen A und B:

    > evalm(A+B);

Skalarmultiplikation, jeder Koeffizient von A wird mit c multipliziert:

    > evalm(A*c);

Multiplikation der Matrizen A und B (ein seltsames Multiplikationszeichen!)

    > evalm(A &* B);

Potenzieren. Um zum Beispiel die dritte Potenz A^{3} der Matrix A zu erhalten:

    > evalm(A^{∧}3);

Invertieren. Um A^{−1} zu erhalten (falls die Matrix A nicht invertierbar ist, erfolgt eine Fehlermeldung):

    > inverse(A);

Die Determinante der Matrix A erhält man durch:

    > det(A);

Die Spur von A durch:

    > trace(A);

Den Rang der Matrix A:

    > rank(A);

Die zu A komplementäre (oder “adjungierte”) Matrix A^{♯} (also die Matrix mit den Koeffizienten a′_{ij} = (−1)^{i+j} det A_{ji} ) erhält man durch den folgenden Befehl:

    > adjoint(A);