4 wxMaxima | |
→ | 4.5 Eingabe-Syntax |
Vektoren eingeben | |
Matrizen eingeben | |
Null-Matrix | |
Zugriff auf Elemente | |
Operationen mit Matrizen und Vektoren | |
Skalar und Matrix | |
Elementweise Operationen | |
Matrizenmultiplikation | |
Inverse Matrix | |
Eigenwerte |
Vektoren sind Sonderfälle von Matrizen.
Ein Zeilenvektor wird mit Hilfe eines Matrix-Befehles eingegebn. dabei wird nur eine Liste (eine Matrixzeile) als Argument benutzt.
v: matrix([a, b]);
Ein Spaltenvektor kann mit Hilfe des transpose()-Befehles (Transponieren einer Matrix oder eine Vektors) eingegeben werden:
w: transpose([c, d]);
Für einige Operationen akzeptiert Maxima auch eine Liste
(Eingabe ohne matrix()-Befehle) und behandelt diese wie
einen Zeilenvektor. Dies ist jedoch nicht bei allen Operationen der
Falls. Es ist beispielsweise nicht möglich, zwei Zeilenvektoren
voneinander zu subtrahieren, von denen einer als Liste eingegeben
wurde und der andere das Ergebnis einer
Vektor/Matrix-Multiplikation ist. Bei der Eingabe von
Zeilenvektoren sollte immer der matrix()-Befehl benutzt
werden.
Der transpose()-Befehl ist einer der Befehle, die eine Liste
als Zeilenvektor interpretieren, daher kann hier auf den
matrix()-Befehl verzichtet werden.
Eine Matrix wird mit dem matrix()-Befehl eingegeben. Die Argumente bilden eine Folge von Listen, jede Liste enthält eine Matrix-Zeile.
M: matrix([a, b], [c, d]);
Mit
zeromatrix(Zeilen, Spalten)
wird eine mit lauter Nullen gefüllte Matrix angelegt.
Um größere, schwach besetzte Matrizen zu erzeugen, kann zunächst eine Nullmatrix erstellt werden. Anschließend werden nur die besetzten Stellen angegeben.
Mit
Vektor[Index] part(Vektor, Index) Matrix[Zeile][Spalte] Matrix[Zeile, Spalte] part(Matrix, Zeile, Spalte)
kann auf Elemente von Vektoren und Matrizen zugegriffen werden. Indizes beginnen mit 1.
Werden die Operationen +, -, *, / und ^ auf einen Skalar und eine Matrix angewandt, so ist das Ergebnis eine Matrix. Die Operation wird auf jedes Matrizenelement und den Skalar angewandt.
Werden zwei Matrizen gleicher Größe durch die Operatoren +, -, *
oder / vernüpft, so wird der Operator elementweise angewandt.
Hinweis: Der Operator * steht nicht für die
Matrizenmultiplikation.
Der Operator . führt eine Matrizenmultiplikation durch.
Mit
invert(Matrix) Matrix^-1
wird die inverse Matrix gebildet.
Im Beispiel wird das Gleichungssystem
mittels
gelöst.
M: matrix([a11, a12], [a21, a22]); y: transpose([y1, y2]); x: invert(M) . y;
Gleichungssysteme können - müssen aber nicht - in Matrixschreibweise angegeben werden, um sie mit Maxima zu lösen.
Eigenwerte λ und Eigenvektoren x sind Paare, die für eine quadratische Matrix M die Eigenwertgleichung
erfüllen, wobei die triviale Lösung, dass x ein Null-Vektor ist, nicht mit berücksichtigt wird.
Das Vorgehen wird hier am Beispiel der Matrix
gezeigt.
Für den Vergleich von manueller Lösung und Lösung mit Maxima ermitteln wir zunächst manuell die Lösung für die Eigenwerte mit:
Für den zweifachen Eigenwert λ12=7 ergibt sich der Eigenvektor zu:
Für λ3=-1 erhalten wir den Eigenvektor
In Maxima kann dieses Problem eingegeben werden als:
M: matrix([3, 4, 0], [4, 3, 0], [0, 0, 7]); eigenvectors(M);
Dies führt zu folgender Ausgabe:
Der Befehl eigenvectors liefert eine strukturierte Ausgabe, eine Liste mit 2 Elementen: