Tutorial 6: WolframAlpha – Matrizen

Natürlich stellt WolframAlpha auch Funktionen für Probleme aus dem Bereich der linearen Algebra bereit – und das nicht zu knapp. Daher wollen wir in den nächsten Tutorien mal durchforsten, was im Umgang mit Matrizen und Vektoren alles so möglich ist.

Matrizen und Vektoren werden in WolframAlpha mit geschweiften Klammern {…} geschrieben. Jede Umklammerung {…} steht dabei für eine Zeile. Deren Elemente wiederum werden per Komma getrennt:

Beispiel 1: {{1,2,3},{4,5,6},{7,8,9}}
Beispiel 2: Ein Vektor horizontal: {x,y,z} und vertikal geschrieben {{x},{y},{z}}

Wie auch bei Funktionen, werden bei der Ergebnisanzeige gleich wieder eine Menge an Zusatzinformationen mitgeliefert: Von der Anzahl der Zeilen (rows) bzw. Spalten (columns) über Rang und Determinante bis zur den Eigenwerten und der Diagonalisierung bekommst du eigentlich schon so ziemlich alles, was man an Informationen zu einer Matrix braucht.

Damit du gezielt selbst die nötigen Funktionen aufrufen kannst, hier erstmal eine Übersicht der grundlegenden Befehle:

  • Addition/Multiplikation
    Mit Plus und Mal funktioniert alles wie gewohnt, solange man sich an die Regeln für Matrizenaddition/-Multiplikation hält:

    • A+B bzw. A-B geht nur, wenn beide Matrizen dieselbe Zeilen- und Spaltenzahl haben
    • Das Produkt A*B kann man nur bilden, wenn die Spaltenzahl von A gleich der Zeilenzahl von B ist
    Beispiel 1: {{1,2,3},{4,5,6},{7,8,9}}+{{0,1,0},{2,0,0},{0,0,3}}
    Beispiel 2: {{1,2,3},{4,5,6},{7,8,9}}.{{0,1,0},{2,0,0},{0,0,3}}

    Achtung!

    Bei der Multiplikation von Matrizen sollte ein Punkt als Zeichen stehen! Benutzt du das Sternchen (*) so gibt dir WolframAlpha etwa bei Vektoren das Kreuzprodukt:

    Beispiel 3: {1,2,3}*{1,2,0} 

    Das Sternchen als Malzeichen wird nur benutzt, wenn wir Vielfache von Matrizen bilden, so wie hier das Vierfache einer Matrix:

    Beispiel 4: 4*{{1,2,3},{4,5,6},{7,8,9}} bzw. 4{{1,2,3},{4,5,6},{7,8,9}}

    Wie du am zweiten Link siehst, kann man das Malzeichen auch weglassen. Benutzt du aus Versehen doch mal das Sternchen bei der Multiplikation von Matrizen, oder addierst bzw. multiplizierst Matrizen, die man aufgrund ihrer Zeilen-/Spaltenzahl gar nicht addieren bzw. multiplizieren darf, so zeigt dir WolframAlpha auch meist, dass es nicht versteht, was du da berechnen willst. In manchen Fällen versucht es jedoch deinen vermeintlichen Fehler zu korrigieren, wie diese Beispiele zeigen:

    Beispiel 5: {{1,0,2},{0,1,1}}*{1,2,1} ist dasselbe wie {{1,0,2},{0,1,1}}.{{1},{2},{1}} 
    Beispiel 6: {x,y,z}-{{x,x,x,x},{y,y,y,y},{z,z,z,z}}
  • Potenzen/Inverse
    Statt stundenlang den Gauß-Jordan Algorithmus hoch und runterzurechnen, lässt sich die Inverse einer quadratischen Matrix gleich mit mehreren Befehlen recht einfach bestimmen. Es gibt die Befehle inv und inverse:

    Beispiel 1: inv{{2,0,1},{0,1,2},{0,0,3}} bzw. inverse{{2,0,1},{0,1,2},{0,0,3}}

    Sollte die Matrix mal nicht invertierbar sein, so wird das im Ergebnis als matrix is singular angezeigt:

    Beispiel 2: inv{{1,2,3},{4,5,6},{7,8,9}}

    Statt inv oder inverse kann man aber auch die Potenz ^(-1) benutzen, um die Inverse berechnen zu lassen:

    Beispiel 3: {{2,0,1},{0,1,2},{0,0,3}}^(-1)

    Die Potenzschreibweise ist aber nicht nur für Inverse Matrizen da – man kann eben so gut auch gewöhnliche Potenzen der Matrizen bestimmen:

    Beispiel 4: {{2,0,1},{0,1,2},{0,0,3}}^(3)

    Dabei muss man natürlich beachten, dass die Potenzen bei Matrizen nicht immer 1 zu 1 dasselbe sind, wie bei Zahlen:

    • A^n = A*A*…*A (n-faches Produkt der Matrix für natürliche Zahlen n)
    • A^(-n) = A^(-1)*A^(-1)*…*A^(-1) (n-faches Produkt der Inversen, sofern diese existiert, für natürliche Zahlen n)
    • A^(1/2) ist die Matrix B, für die gilt: B*B=A. Wie bei der Inversen, muss diese Matrix nicht unbedingt existieren
    • A^(n/m) ist das n-fache Produkt der Matrizen B, für die gilt, dass A=B*B*…*B (m-faches Produkt). Diese Matrix muss ebenfalls nicht immer existieren

    Hier nun ein paar Beispiele zu den Potenzen:

    Beispiel 5: {{2,0,1},{0,1,2},{0,0,3}}^(-4)
    Beispiel 6: {{2,0,1},{0,1,2},{0,0,3}}^(1/2)
    Beispiel 7: {{2,0,1},{0,1,2},{0,0,3}}^(7/3)

    Ordentlich aufgeschrieben lautet die Funktion fur die Potenz einer Matrix übrigens MatrixPower[Matrix, Potenz]:

    Beispiel 8: MatrixPower[{{2,0,1},{0,1,2},{0,0,3}},(7/3)]
  • Eigenschaften und Transponieren
    Wer schnell überprüfen möchte, ob er sich bei den Vertauschungen beim Transponieren nicht vermacht hat, kann dies ebenfalls mit WolframAlpha tun – genauer gesagt mit transpose:

    Beispiel 1: transpose{{2,0,1,2},{0,1,2,3},{0,0,3,1}}

    Neben den Rechenoperationen gibt es aber noch Eigenschaften, wie Symmetrie, Definitheit oder Invertierbarkeit. Um diese Eigenschaften herauszufinden kann man WolframAlpha einfach fragen. Mit Is Matrix symmetric kann man zum Beispiel testen, ob die Matrix symmetrisch ist:

    Beispiel 2: Is {{2,0,1,2},{0,1,2,3},{0,0,3,1}} symmetric?

    Zur Definitheit gibt es ja die verschiedenstenen Fälle. Hier fragt man jeweils:

    • Is Matrix positive definite? um zu bestimmen, ob die Matrix positiv definit ist
    • Is Matrix positive semidefinite? um zu bestimmen, ob die Matrix positiv semidefinit ist
    • Is Matrix negative definite? für negative Definitheit
    • Is Matrix negative semidefinite? um zu bestimmen, ob die Matrix negativ semidefinit ist
    • Is Matrix indefinite? falls man vermutet, dass die Matrix indefinit ist

    Lustigerweise gibt es keinen Befehl, der einem die Definitheit einfach angibt (bzw. haben wir keinen gefunden).

    Beispiel 3: Is {{2,0,1},{0,1,2},{1,2,3}} indefinite?

    Wer schreibfaul ist, kann seine Anfrage auch auf die wesentlichen Worte beschränken – also etwa nur positive definite abfragen:

    Beispiel 4: positive definite {{2,0,1},{0,1,2},{1,2,3}}

    Invertierbarkeit lässt sich, wie im zweiten Punkt beschrieben, am einfachsten mit dem Befehl inv bzw. der Potenzschreibweise abfragen. Natürlich gibt es noch mehr Eigenschaften, die man abfragen kann, aber Fragen wie Is matrix hermitian (zum Testen ob die Matrix hermitesch bzw. selbstadjungiert ist) wird man wohl nicht so häufig brauchen.

  • Dreiecksgestalt, Rang und Spur
    Häufiger braucht man wohl die Berechnung der Dreiecksgestalt einer Matrix. Hier hat WolframAlpha ein ganz besonderes Schmankerl. Der Befehl row reduce gibt nicht nur eben jene Dreiecksgestalt, die man am Ende des Gauß-Algorithmus erhält. Wenn man auf der rechten Seite den Button show steps klickt, werden auch die einzelnen Schritte angezeigt:

    Beispiel 1: row reduce {{1,2,3},{4,5,6},{7,8,9}}

    Mit ein wenig Englischkenntnissen bekommt man eigentlich auch ganz gut raus, was bei der jeweiligen Umformung gemacht wurde: Swap row 1 and row 3 beispielsweise steht für den Zeilentausch von erster und dritter Zeile.

    Den Rang könnte man nun also mit row reduce dann einfach ablesen, doch es gibt natürlich auch dafür einen eigenen Befehl: rank

    Beispiel 2: rank {{1,2,3},{4,5,6},{7,8,9}}

    Zuletzt noch der Befehl zur Bestimmung der Spur der Matrix. Das geht mit trace:

    Beispiel 5: trace {{1,2,0},{1,1,0},{0,0,4}}
  • Determinanten, adjunkte Matrix und Eigenwerte/-Vektoren
    Ebenfalls eine Berechnung, bei der es sich häufig lohnt das Ergebnis nochmal gegenzuchecken ist die Determinante einer Matrix – hier hilft WolframAlpha mit determinant bzw. det:

    Beispiel 1: determinant {{1,2,3},{4,5,6},{7,8,9}}
    Beispiel 2: det{{1,0,2},{0,1,1},{0,0,1}}

    Falls man nun die Adjunkte benötigt, braucht man nicht alle Unterdeterminanten einzeln bestimmen, sondern kann sich der Funktion adjugate bedienen:

    Beispiel 3: adjugate {{1,2,3},{4,5,6},{7,8,9}}

    Zum Schluss schließlich noch das Anwendungsfeld für Determinanten schlechthin: die Eigenwerte einer Matrix – analog zum englischen Begriff lautet der Befehl hier eigenvalues:

    Beispiel 4: eigenvalues {{1,2,3},{4,5,6},{7,8,9}}

    Sind auch noch die zugehörigen Eigenvektoren gefragt, bekommt man die über eigenvectors:

    Beispiel 5: eigenvectors {{1,2,3},{4,5,6},{7,8,9}}

    Alles was man hier beachten muss, ist die Zuordnung von Eigenvektoren (mit v gekennzeichnet) zu den jeweiligen Eigenwerten (corresponding eigenvalues) und natürlich, dass dieser Vektor nur einen Repräsentant aller möglichen Eigenvektoren darstellt – ist dein Eigenvektor ein vielfaches der Lösung von WolframAlpha ist dieser genauso richtig.

    Für den Eigenraum hat WolframAlpha unseres Erachtens noch keine eigene Funktion, doch wenn du den/die Eigenvektor(en) v zu einem Eigenwert gegeben hast (über eigenvectors), so ist der Eigenraum ja einfach nur die Menge aller Linearkombinationen dieser Vektoren (inklusive Nullvektor).

    Wenn du deine Eigenwertberechnungen lieber Schritt für Schritt überprüfen möchtest, kannst du dir dazu auch das charakteristische Polynom (engl.: characteristic polynomial) angeben lassen:

    Beispiel 6: characteristic polynomial {{1,2,3},{4,5,6},{7,8,9}}
  • Aufgaben mit Parametern/Variablen
    Wie die folgenden Beispiele zeigen, funktionieren alle bisher vorgestellten Befehle auch mit Variablen bzw. Parametern:

    Beispiel 1: {{1,0,2},{0,1,1}}.{{x},{y},{z}}
    Beispiel 2: trace {{t,2,0},{1,t^2,0},{0,0,t}}
    Beispiel 3: det {{t,2,0},{1,t^2,0},{0,0,t}}
    Beispiel 4: row reduce {{1,x,x^2,x^3},{1,y,y^2,y^3},{1,z,z^2,z^3}}
    Beispiel 5: inv {{1,2,0,1},{1,1,1,0},{0,0,1,1},{0,0,0,x}}
    Beispiel 6: rank {{1,2,0,x^3},{1,1,0,x^2},{0,0,0,x}}

    Einziger Wehrmutstropfen ist, dass WolframAlpha hier leider keine Fallunterscheidungen macht. In unserem Beispiel 6 etwa ist der Rang für x=0 eben nur 2 und nicht 3, wie angegeben. Ebenso ist die Inverse vorher für x=0 gar nicht invertierbar. Deshalb bleibt ein wenig Denkarbeit bei der Auswertung der Ergebnisse noch bei dir! (Was auch gut so ist)

Natürlich gibt es noch jede Menge weiterer Funktionen – gerade im Zusammenhang mit Zerlegungen, Diagonalisierungsverfahren und linearen Gleichungssystemen. Doch dazu dann in den nächsten Beiträgen mehr ;)

Andere Beiträge

Schreib was dazu!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Dir hat dieser Artikel geholfen?

Dann sag doch Danke auf facebook oder g+. :)