![]() |
JavaScript Square Matrix Library |
Konstruktor:Eigenschaften:Methoden:Ergänzungen:Anwendungsbeispiele:Download: | |
| E-Mail: | |
|---|---|
| Homepage-URL: |
Bei Fragen zu diesem Beitrag bitte den Autor des Beitrags kontaktieren!
JavaScript Square Matrix Library v0.3 ist eine JavaScript Bibliothek, mit deren Hilfe alle gängigen mathematischen Operationen für quadratische Matrizen durchgeführt werden können.
Quadratische Matrizen haben die gleiche Anzahl an Reihen und Spalten. Derartige Matrizen finden in einer Vielzahl von Bereichen ihre Anwendung.
Das Script läuft mit den Browsern Microsoft Internet Explorer 5.x, Netscape 7.x, Mozilla 1.x und Opera 7.x unter Windows ohne Einschränkungen. Andere Browser und Systeme wurden nicht getestet.
Um die nachfolgenden Erläuterungen nachvollziehen zu können, sind Grundkenntnisse in JavaScript und der Matrix-Algebra notwendig.
Der Einfachheit halber wird die englische Notation mit einem Punkt anstatt Komma zur Trennung von Ganzzahl und Nachkommastellen verwendet (z.B. π ≈ 3.1412 anstatt π ≈ 3,1412).
JavaScript Square Matrix Library ist urheberrechtlich geschützte Freeware (freie Software). Sie wird "so wie sie ist" zur Verfügung gestellt, ohne eine Garantie irgendeiner Art. Hinweise auf Programmfehler und Verbesserungsvorschläge für zukünftige Versionen sind herzlich willkommen.
Bevor die Bibliothek verwendet werden kann, muss die Datei "SquareMatrix.js" in das Verzeichnis der
HTML-Seite kopiert werden und durch die Notation <script type="text/javascript" src="SquareMatrix.js"></script>
in den Header der HTML-Seite eingefügt werden. Sollten sich die HTML-Seite und die Datei "SquareMatrix.js"
in unterschiedlichen Verzeichnissen befinden, so muss die relative Pfadangabe src entsprechend angepasst werden.
Anschließend kann in einem eigenen
<script type="text/javascript">...</script>
- Bereich mit dem new Operator eine neue Instanz des Matrix Objektes erstellt werden.
Hierfür gibt es zwei Varianten.
var A = new Matrix(1,2, 3,4);
var myArray = new Array(5,6, 7,8); var B = new Matrix(myArray);
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 1</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2, 3,4); var myArray = new Array(5,6, 7,8); var B = new Matrix(myArray); var C = A.plus(B); window.alert(A + "\n+\n\n" + B + "\n=\n\n" + C); </script> </body> </html>
Das Beispiel zeigt, wie ein neues Matrix-Objekt A der Form

nach Variante 1 erstellt wird. Die einzelnen Elemente der neuen Matrix werden als Zahlen
an den Matrix()-Konstruktor übergeben. Die Zahlen werden hierbei reihenweise in die Matrix geschrieben.
Die Matrix B

wurde nach Variante 2 erstellt, d.h. dem Matrix()-Konstruktor wurde ein
Array Objekt
als Parameter übergeben. Die einzelnen Elemente des Arrays bilden die neue Matrix.
Somit erzeugen die folgenden Aufrufe jeweils gleiche Matrizen.
var myArray = new Array(1,2, 3,4); var A = new Matrix(1,2, 3,4); var B = new Matrix(myArray); var C = new Matrix(myArray[0],myArray[1], myArray[2],myArray[3])
Matrix C ist die Summe der Matrizen A und B:

Das Ergebnis wird in einem Meldungsfenster ausgegeben.
Die Methode Matrix.plus() wird weiter unten erläutert.
Da nur quadratische Matrizen unterstütz werden, muss die Anzahl N an Zahlenwerten, welche dem
Matrix()-Konstruktor übergeben werden, immer der Form
N = n2 (n positiv und ganzzahlig) sein.
Gleiches gilt für die Länge des Zahlen-Arrays, wenn die Matrix nach Variante 2 erstellt wird.
Anders ausgedrückt, hat N folgende Werte:
Natürlich müssen sämtliche Parameter bzw. Elemente des Arrays für den
Matrix()-Konstruktor vom Typ number sein.
Andere Objekttypen (z.B. Strings) können durch die objektunabhängige Funktion
Number() zuvor in den passenden number Typ konvertiert werden.
Theoretisch ist die Größe einer Matrix bei der JavaScript Square Matrix Library nicht beschränkt. Je nach Rechenleistung, Browser und Rechenoperation kommt es jedoch bei Matrizen der Größe 7 x 7 und höher zu erheblichen Verzögerungen.
Matrix.status gibt Auskunft über die letzte Warnung oder den letzten Fehler, welcher
bei einer Operation aufgetreten ist.
Nach der Initialisierung enthält Matrix.status automatisch die Größe/Ordnung der Matrix.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 2</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2, 4,8); A.inverse(); window.alert(A.status); </script> </body> </html>
Im Beispiel wird versucht die Inverse von A zu berechnen.
Da die Matrix jedoch singulär ist, existiert keine Inverse und es wird eine Warnung
in Matrix.status geschrieben. Diese wird anschließend in einem Meldungsfenster ausgegeben.
Matrix.order liefert ein Zahlenwert, welcher die Größe der Matrix angibt.
Die Größe oder auch Ordnung einer quadratischen Matrix entspricht der Anzahl Spalten/Reihen.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 3</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16); window.alert( "Die Matrix\n\n" + A + "\n ist eine " + A.order + " x " + A.order + " Matrix" ); </script> </body> </html>
Im Beispiel wird dem Matrix()-Konstruktor N = 16 Zahlen (1-16) übergeben.
Die Größe/Ordnung der neuen Matrix A ist somit √N = 4.
Mit Matrix.eXY ist es möglich die Werte der einzelnen Elemente der Matrix auszulesen.
Matrix.eXY liefert den Zahlenwert der Xten - Reihe und Yten - Spalte der Matrix, d.h.
X und Y symbolisieren hier Zahlenwerte (1 ≤ X,Y ≤ Matrix.order).
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 4</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(0,0,0, 0,0,0, 0,8,0); window.alert( "Das Element a32 der Matrix\n\n" + A + "\nhat den Wert " + A.e32 + "." ); </script> </body> </html>
Im Beispiel wird die Matrix A

generiert und anschließend das Element exy = e32 = e 3. Reihe, 2. Spalte = 8 in einem Meldungsfenster ausgegeben.
Das direkte Auslesen der Elemente einer Matrix wird nur bis zu einer Matrixgröße/-ordnung von 9 unterstützt,
d.h. Matrix.e19 ist noch möglich, Matrix.e110 hingegen nicht mehr.
Mit Matrix.e[X][Y] ist es möglich die Werte der einzelnen Elemente der Matrix auszulesen
und zu ändern. Matrix.e[X][Y] erlaubt den Zugriff auf den
Zahlenwert der "X+1"ten - Reihe und "Y+1"ten - Spalte der Matrix, d.h.
X und Y symbolisieren hier Zahlenwerte (0 ≤ X,Y ≤ Matrix.order-1).
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 5</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(0,0,0, 0,0,0, 0,0,0); A.e[2][1] = 21; window.alert(A); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert, welche ausschließlich aus Nullen besteht.

und die veränderte Matrix in einem Meldungsfenster ausgegeben.
Im Gegensatz zu Matrix.eXY beginnt der Index für X und Y bei Matrix.e[X][Y] bei 0
und kann höchstens die Größe/Ordnung der Matrix minus 1 als Wert annehmen.
Wenn einzelne Elemente mit Matrix.e[X][Y] verändert werden, muss anschließend die Methode
Matrix.update() aufgerufen werden, damit Matrix.eXY die aktuellen Werte enthält.
Mit Matrix.modus wird die Art der Ausgabe von Warnungen oder Fehlern festgelegt.
Folgende Angaben sind für Matrix.modus möglich:
| Angabe | Bedeutung |
|---|---|
A.modus = "none" |
Warnungen und Fehler werden ignoriert. |
A.modus = "status" |
Warnungen und Fehler werden in der Statuszeile des Browsers angezeigt. |
A.modus = "alert" |
Warnungen und Fehler werden in einem Meldungsfenster angezeigt. |
A.modus = "auto" |
Warnungen werden in der Statuszeile des Browsers angezeigt. Fehler werden in einem Meldungsfenster angezeigt. |
A.modus = "matrixMessage" |
Bei Warnungen und Fehlern wird die JavaScript-Funktion mit dem betreffenden Funktionsnamen (hier: matrixMessage) aufgerufen. Diese Funktion muss extra definiert werden und bekommt als Parameter die Warn- oder Fehlernachricht übergeben. |
Der Default-Wert ist "auto"
Anzeigebeispiel: So sieht's aus
<html>
<head>
<title>Square Matrix Beispiel 6</title>
<script type="text/javascript" src="SquareMatrix.js"></script>
</head>
<body>
<script type="text/javascript">
function wasIstLos(message)
{
window.alert("Das ist los:\n\n" + message)
}
var A = new Matrix(1,2, 4,8);
A.modus = "wasIstLos";
A.inverse();
</script>
</body>
</html>
Im Beispiel wird zuerst die Funktion wasIstLos() deklariert.
Als nächstes wird eine neue Matrix A generiert.
Durch die Anweisung A.modus = "wasIstLos"
wird festgelegt, dass bei Warnungen und Fehlern die zuvor definierte Funktion wasIstLos()
mit der Warn- oder Fehlernachricht als Parameter aufgerufen wird.
Da die Matrix A singulär ist, löst die Anweisung A.inverse()
eine solche Warnmeldung aus und die Funktion gibt diese in einem Meldungsfenster aus.
Auch wenn Matrix.modus = "none" angegeben wurde, kann die letzte
Warn- oder Fehlernachricht mittels Matrix.status abgefragt werden.
Die Methode Matrix.info()gibt einen
String mit Informationen zur JavaScript Square Matrix Library zurück.
Wird der Methode true als Parameter übergeben, erscheint zusätzlich ein Meldungsfenster
mit den Informationen.
String Matrix.info(boolean popup)
Der Default-Wert für popup ist false.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 7</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3, 4,5,6, 7,8,9); window.status = A.info(true); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert. Da der Methode A.info() als
Parameter true übergeben wurde, erscheint beim Aufruf ein Meldungsfenster. Zusätzlich
wird der zurückgegebene String in die Statusleiste des Browsers geschrieben.
Die Methode Matrix.update() muss immer dann aufgerufen werden, wenn einzelne Elemente der Matrix
mittels Matrix.e[X][Y] verändert wurden. Andernfalls liefert Matrix.eXY falsche Ergebnisse.
Alle anderen Eigenschaften und Methoden funktionieren jedoch auch ohne ein update() Aufruf fehlerfrei.
void Matrix.update()
Anzeigebeispiel: So sieht's aus
<html>
<head>
<title>Square Matrix Beispiel 8</title>
<script type="text/javascript" src="SquareMatrix.js"></script>
</head>
<body>
<script type="text/javascript">
var A = new Matrix(66);
A.e[0][0] = 99;
var alt = A.e11;
A.update();
var neu = A.e11;
window.alert("Veraltet: " + alt + "\n" + "Aktuell: " + neu);
</script>
</body>
</html>
Das Beispiel generiert zuerst eine 1 x 1 Matrix, dessen einziges Element den Wert 66 erhält.
Nachfolgend wird der Wert des Elementes mit Matrix.e[0][0] auf 99 gesetzt.
Die nächste Zeile speichert den ursprünglichen Wert (66) Matrix.e11 in der Variable alt.
Anschließend wird Matrix.update() aufgerufen und erneut der Wert von
Matrix.e11 ausgelesen und in der Variable neu abgespeichert.
Die Ausgabe am Ende des Scripts verdeutlicht, dass erst nach dem Aufruf von Matrix.update()
Matrix.e11 denn tatsächlichen und aktuellen Wert des Elementes enthält.
Die Methode Matrix.round() führt bei allen Elementen einer Matrix eine kaufmännische Rundung durch.
Nach der wievielten Nachkommastelle hierbei gerundet wird, richtet sich nach der Zahl, welche der Methode als
Parameter übergeben wird.
Die Methode kann hilfreich sein, da es auf Grund der endlichen Rechnergenauigkeit bei bestimmten Rechenoperationen
(insbesondere Matrix.inverse()) zu Gleitkommafehlern kommen kann.
void Matrix.round(number decimalPlaces)
Der Default-Wert für decimalPlaces ist 4.
Anzeigebeispiel: So sieht's aus
<html>
<head>
<title>Square Matrix Beispiel 9</title>
<script type="text/javascript" src="SquareMatrix.js"></script>
</head>
<body>
<script type="text/javascript">
var A = new Matrix(0.123456789);
A.round(4);
window.alert("Matrix auf 4 Nachkommastellen gerundet:\n\n" + A);
</script>
</body>
</html>
Das Beispiel generiert zuerst eine 1 x 1 Matrix, dessen einziges Element den Wert 0.123456789 erhält.
Anschließend rundet Matrix.round(4) nach der 4. Nachkommastelle. Dies ist die Ziffer 5.
Diese erhöht die vorige Ziffer 4 bei kaufmännischer Rundung um +1 auf 5.
Das Element a11 lautet somit 0.1235.
Der Aufruf Matrix.round(0) rundet sämtliche Elemente einer Matrix auf die nächste Ganzzahl.
Die Methode Matrix.equals() vergleicht zwei Matrizen. Wenn alle Elemente
beider Matrizen jeweils gleiche Werte besitzen, liefert die Methode true als Rückgabewert,
ansonsten wird false zurückgegeben.
boolean Matrix.equals(Matrix myMatrix)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 10</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2, 3,4); var myArray = new Array(1,2, 3,4); var B = new Matrix(myArray); if(A.equals(B)) window.alert( "Matrix \n\n" + A + "\n und \n\n" + B + "\nsind identisch" ); </script> </body> </html>
Im Beispiel werden zuerst zwei Matrizen auf 2 Varianten generiert. Die Elemente beider Matrizen
enthalten gleiche Werte. Somit liefert A.equals(B) als Rückgabewert true
und ein Meldungsfenster erscheint.
Eventuell ist es sinnvoll vor dem Aufruf von Matrix.equals() beide Matrizen mittels
Matrix.round() kaufmännisch zu runden, da es auf Grund der endlichen Rechnergenauigkeit
bei bestimmten Rechenoperationen (insbesondere Matrix.inverse()) zu Gleitkommafehlern
kommen kann.
Die Methode Matrix.duplicate() dupliziert eine Matrix.
Matrix Matrix.duplicate()
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 11</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3, 4,5,6, 7,8,9); var B = A.duplicate(); window.alert(A + "\n=\n\n" + B); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert und ein Duplikat derselben auf
die Matrix B abgebildet.
Matrix B wird anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.duplicate() wird benötigt, da durch eine einfache Zuweisung
B = A; beide Matrizen A und B auf dasselbe Objekt
verweisen würden, d.h. Änderungen an A würden sich auch B
auswirken und vice versa.
Die Methode Matrix.plus() berechnet die Summe zweier Matrizen.
Matrix Matrix.plus(Matrix myMatrix)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 12</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3, 4,5,6, 7,8,9); var B = new Matrix(9,8,7, 6,5,4, 3,2,1); var C = A.plus(B); window.alert(A + "\n+\n\n" + B + "\n=\n\n" + C); </script> </body> </html>
Im Beispiel werden zuerst zwei Matrizen generiert und mittels A.plus(B) summiert.
Das Ergebnis wird einer dritten Matrix zugewiesen und in einem Meldungsfenster ausgegeben.
Um die Summe zweier Matrizen bilden zu können, müssen beide die gleiche Größe/Ordnung besitzen.
Die Methode Matrix.minus() berechnet die Differenz zweier Matrizen.
Matrix Matrix.minus(Matrix myMatrix)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 13</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(5,5, 5,5); var B = Matrix(4,3, 2,1); var C = A.minus(B); window.alert(A + "\n-\n\n" + B + "\n=\n\n" + C); </script> </body> </html>
Im Beispiel werden zuerst zwei Matrizen generiert und mittels A.minus(B) voneinander subtrahiert.
Das Ergebnis wird einer dritten Matrix zugewiesen und in einem Meldungsfenster ausgegeben.
Um die Differenz zweier Matrizen bilden zu können, müssen beide die gleiche Größe/Ordnung besitzen.
Die Methode Matrix.times() hat drei Varianten.
Der Methode Matrix.times() wird als Parameter eine Zahl übergeben.
Als Ergebnis liefert die Methode eine Matrix, deren Elemente mit der Zahl multipliziert wurden (skalare Multiplikation).
Matrix Matrix.times(number scalar)
var A = new Matrix(1,2, 3,4); var B = A.times(2)
Der Methode Matrix.times() wird als Parameter ein Vektor in Form eines Arrays übergeben.
Als Ergebnis liefert die Methode das Produkt aus der Matrix und dem Vektor.
Array Matrix.times(Array vector)
var vector = new Array(1,2,3); var A = new Matrix(1,2,3, 4,5,6, 7,8,9); var C = A.times(vector);
Der Methode Matrix.times() wird als Parameter eine Matrix übergeben.
Als Ergebnis liefert die Methode das Matrixprodukt der beiden Matrizen.
Matrix Matrix.times(Matrix myMatrix)
var A = new Matrix(1,2, 3,4); var B = new Matrix(5,6, 7,8); var C = A.times(B)
Anzeigebeispiel: So sieht's aus
<html>
<head>
<title>Square Matrix Beispiel 14</title>
<script type="text/javascript" src="SquareMatrix.js"></script>
</head>
<body>
<script type="text/javascript">
var scalar = 2;
var vector = new Array(1, 2);
var matrix = new Matrix(1,2, 2,1);
var A = new Matrix(2,1, 1,2);
var B = A.times(scalar);
var C = B.times(matrix);
var D = C.times(vector);
window.alert(
scalar + "\n\n*\n\n" +
matrix + "\n*\n\n" +
vector.join("\n") + "\n\n=\n\n" +
D.join("\n")
);
</script>
</body>
</html>
Im Beispiel werden zuerst ein Skalar, ein Vektor und eine Matrix definiert.
Matrix D berechnet sich durch Multiplikation von Matrix A
mit dem Skalar, dem Vektor und der Matrix.

Das Ergebnis wird dem Vektor D zugewiesen und in einem Meldungsfenster ausgegeben.
Mit Hilfe der Methoden Matrix.times() und Matrix.inverse()
kann die Lösung eines linearen Gleichungssystems der Form
![]()
berechnet werden, wenn die Matrix A und der Spaltenvektor y bekannt sind und eine Lösung existiert. Gelöst werden können nur Lineare Gleichungssysteme, welche die gleiche Anzahl an Unbekannten und Gleichungen besitzen und deren Gleichungen linear unabhängig sind.
Das folgende Beispiel löst ein solches lineares Gleichungssystem 3. Ordnung.
var A = new Matrix(-1,2,3, 4,-5,6, 7,8,-9); var y = new Array(12,12,-4); var x = A.inverse().times(y);
Um das Produkt aus einer Matrix und einem Vektor bilden zu können, muss die Anzahl Elemente/Reihen des Vektors mit der Größe/Ordnung der Matrix übereinstimmten. Das Ergebnis ist wiederum ein Vektor.
Um das Matrixprodukt zweier Matrizen bilden zu können, müssen beide die gleiche Größe/Ordnung besitzen. Das Ergebnis ist wiederum eine Matrix.
Die Methode Matrix.over() berechnet die Lösung der Gleichung
C B = A
wenn die Matrizen A und B bekannt sind.
Anders ausgedrückt berechnet A.over(B) die Matrix
C = A B -1
Matrix Matrix.over(Matrix myMatrix)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 15</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(2,4, 6,8); var B = Matrix(4,3, 2,1); var C = A.over(B); window.alert( "Die Matrix \n\n" + A + "\nmultipliziert mit der Inversen von \n\n" + B + "\nergibt die Matrix \n\n" + C ); </script> </body> </html>
Im Beispiel werden zuerst zwei Matrizen generiert und anschließend mittels A.over(B)
die Lösung folgender Gleichung berechnet:

Das Ergebnis wird einer dritten Matrix zugewiesen und in einem Meldungsfenster ausgegeben.
Um die Methode Matrix.over() anwenden zu können, müssen beide Matrizen die gleiche Größe/Ordnung besitzen.
Die Methode Matrix.under() berechnet die Lösung der Gleichung
A C = B
wenn die Matrizen A und B bekannt sind.
Anders ausgedrückt berechnet A.under(B) die Matrix
C = A -1 B
Matrix Matrix.under(Matrix myMatrix)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 16</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(4,3, 2,1); var B = Matrix(2,4, 6,8); var C = A.under(B); window.alert( "Die Inverse von \n\n" + A + "\nmultipliziert mit der Matrix \n\n" + B + "\nergibt die Matrix \n\n" + C ); </script> </body> </html>
Im Beispiel werden zuerst zwei Matrizen generiert und anschließend mittels A.under(B)
die Lösung folgender Gleichung berechnet:

Das Ergebnis wird einer dritten Matrix zugewiesen und in einem Meldungsfenster ausgegeben.
Um die Methode Matrix.under() anwenden zu können, müssen beide Matrizen die gleiche Größe/Ordnung besitzen.
Die Methode Matrix.transpose() berechnet die Transponierte der Matrix.
Matrix Matrix.transpose()
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 17</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(0,1,1,1, 9,0,1,1, 9,9,0,1, 9,9,9,0); window.alert( "Die Transponierte der Matrix \n\n" + A + "\nist \n\n" + A.transpose() ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert. Diese Matrix und ihre Transponierte werden anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.adjoint() berechnet die Adjunkte der Matrix.
Matrix Matrix.adjoint()
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 18</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3, 4,5,6, 7,8,9); window.alert( "Die Adjunkte der Matrix \n\n" + A + "\nist \n\n" + A.adjoint() ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert. Diese Matrix und ihre Adjunkte werden anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.inverse() berechnet die Inverse der Matrix.
Matrix Matrix.inverse()
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 19</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2, 3,4); var B = A.inverse(); var C = A.times(B); window.alert( "Eine Matrix mit ihrer Inversen multipliziert, " + "ergibt die Einheitsmatrix\n\n" + C ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix A generiert. Die Matrix B wird aus der Inversen von Matrix A gebildet. Matrix C ist das Produkt aus Matrix A und B.

Das Ergebnis wird in einem Meldungsfenster ausgegeben.
Die Methode Matrix.getDeterminant() berechnet die Determinante der Matrix.
number Matrix.getDeterminant()
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 20</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2, 3,4); window.alert( "Die Matrix \n\n" + A + "\nhat die Determinante " + A.getDeterminant() + "." ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert. Diese Matrix und ihre Determinante werden anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.getRow() extrahiert eine Reihe (Reihenvektor) aus der Matrix
und weißt das Ergebnis einem Array zu. Die Zahl (1 ≤ Zahl ≤ Matrix.order),
welche der Methode als Parameter übergeben wird, bestimmt welche Reihe extrahiert werden soll.
Array Matrix.getRow(number rowIndex)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 21</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(0,0,0, 1,2,3, 0,0,0); var myRow = A.getRow(2); window.alert( "Die zweite Reihe der Matrix \n\n" + A + "\nhat die Werte\n\n" + myRow ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert. Die zweite Reihe dieser Matrix
wird mittels A.getRow(2) extrahiert und anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.getColumn() extrahiert eine Spalte (Spaltenvektor) aus der Matrix
und weißt das Ergebnis einem Array zu. Die Zahl (1 ≤ Zahl ≤ Matrix.order),
welche der Methode als Parameter übergeben wird, bestimmt welche Spalte extrahiert werden soll.
Array Matrix.getColumn(number columnIndex)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 22</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(0,1,0, 0,2,0, 0,3,0); var myColumn = A.getColumn(2); window.alert( "Die zweite Spalte der Matrix \n\n" + A + "\nhat die Werte\n\n" + myColumn ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert. Die zweite Spalte dieser Matrix
wird mittels A.getColumn(2) extrahiert und anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.getDiagonal() extrahiert die Haupt- oder Nebendiagonale aus der Matrix
und weißt das Ergebnis einem Array zu. Wird der Methode true als Parameter übergeben,
wird die Hauptdiagonale zurückgegeben - bei false die Nebendiagonale.
Array Matrix.getDiagonal(boolean mainDiagonal)
Der Default-Wert für mainDiagonal ist true.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 23</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,0,0,0, 0,2,0,0, 0,0,3,0, 0,0,0,4); var myDiagonal = A.getDiagonal(); var sum = 0; for(var i=0; i<myDiagonal.length; i++) sum += myDiagonal[i]; window.alert( "Die Summe der Elemente der Hauptdiagonalen " + "der Matrix \n\n" + A + "\nist " + sum + "." ); </script> </body> </html>
Im Beispiel wird zuerst eine Matrix generiert und die Hauptdiagonale mittels
A.getDiagonal() extrahiert.
Anschließend werden in einer Schleife die Elemente der Hauptdiagonalen aufsummiert
und in einem Meldungsfenster ausgegeben.
Da der Methode Matrix.getDiagonal() im Beispiel kein Parameter übergeben wurde,
hat die Methode den Default-Wert true verwendet und entsprechend die Hauptdiagonale
als Ergebnis zurückgeliefert.
Die Reihenfolgen in der Elemente in das Array geschrieben werden, sind wie folgt festgelegt:
Matrix.order)
Matrix.order)
Die Methode Matrix.getSubmatrix() extrahiert eine Unter-Matrix aus der Matrix,
indem eine Zeile und eine Spalte gestrichen werden. Der erste Parameter bestimmt welche Reihe -
der zweite Parameter welche Spalte gestrichen wird (1 ≤ Parameter ≤ Matrix.order).
Die neue Matrix hat eine um 1 verringerte Größe/Ordnung.
Matrix Matrix.getSubmatrix(number rowIndex, number columnIndex)
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 24</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,1,1, 1,2,1,1, 3,0,3,3, 1,2,1,1); var B = A.getSubmatrix(3,2); window.alert( "Die Matrix \n\n" + B + "\nentsteht aus der Matrix \n\n" + A + "\ndurch streichen der 3. Reihe und 2. Spalte" ); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert.
Durch den Befehl B = A.getSubmatrix(3,2) entsteht Matrix B
aus A durch das Streichen der 3. Reihe und 2. Spalte.
Anschließend werden beide Matrizen in einem Meldungsfenster ausgegeben.
Wird auf eine 1 x 1 Matrix Matrix.subMatrix(1,1) angewendet, so liefert die Methode
ebenfalls eine 1 x 1 Matrix mit dem Wert 1.
Die Methode Matrix.toArray() konvertiert die Matrix in ein Array-Objekt.
Array Matrix.toArray()
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 25</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3, 4,5,6, 7,8,9); var myArray = A.toArray(); window.alert( "Die Matrix \n\n" + A + "\nhat die Array-Elemente \n\n" + myArray ); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert.
Durch den Befehl B = A.toArray() werden die Elemente von A
reihenweise in das Array myArray geschrieben und
anschließend in einem Meldungsfenster ausgegeben.
Die Methode Matrix.toString() konvertiert die Matrix in einen String.
Nach der wievielten Nachkommastelle hierbei die Zahl abgeschnitten und gerundet wird, richtet sich
nach der Zahl, welche der Methode als Parameter übergeben wird. Eine -1 als Parameter
bewirkt, das keinerlei Formatierung (Zeilenumbruch, Nachkommastellen) vorgenommen werden und die
einzelnen Elemente nur durch ein Leerzeichen getrennt zurückgegeben werden.
String Matrix.toString(number decimalPlaces)
Der Default-Wert für decimalPlaces ist 4.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 26</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(0.123456,0,0, 0,0,0, 0,0,0); window.alert(A.toString(5)); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert und mittels A.toString(5)
in einen String konvertiert und in einem Meldungsfenster ausgegeben.
Da der Methode die Zahl 5 als Parameter übergeben wurde, wird nach der
5. Nachkommastelle kaufmännisch gerundet.
Dies ist die Ziffer 6. Diese erhöht die vorige Ziffer 5 bei kaufmännischer Rundung um +1 auf 6.
Das Element A11 lautet somit 0.12346.
Wenn ein Matrix Objekt in einem Kontext verwendet wird, der ein String erwartet
(z.B. window.document.writeln(), window.alert()), so wird die
Methode automatisch mit ihrem Default-Wert von 4 aufgerufen, ohne das explizit die
Methode toString() verwendet werden muss.
Wenn bei allen Elementen einer Matrix weniger Nachkommastellen vorkommen, als der Parameter vorgibt, so werden bei allen Elementen die Nullen bis zu dem Element mit den meisten Nachkommastellen gestrichen.
Die Methode Matrix.toXmlString() konvertiert die Matrix nach MathML.
MathML
ist ein XML-Derivat des W3-Konsortiums zum exakten Auszeichnen mathematisch-wissenschaftlicher Formeln.
Die Methode wird mit 2 Parametern aufgerufen. Der erste Parameter bestimmt, ob der MathML Namensraum
mit angegeben werden soll. Der zweite Parameter legt fest, nach der wievielten Nachkommastelle die Zahl
abgeschnitten und gerundet wird.
String Matrix.toXmlString(boolean namespace, number decimalPlaces)
Der Default-Wert für namespace ist true.
Der Default-Wert für decimalPlaces ist 4.
Anzeigebeispiel: So sieht's aus
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?xml-stylesheet type="text/xsl" href="http://www.w3.org/Math/XSL/mathml.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Square Matrix Beispiel 27</title>
<script type="text/javascript" src="SquareMatrix.js"></script>
</head>
<body>
<script type="text/javascript">
<!-- <![CDATA[
var A = new Matrix(1,2,3, 4,5,6, 7,8,9);
window.document.writeln(A.toXmlString());
window.alert("MathML Code:\n\n" + A.toXmlString());
// ]]> -->
</script>
</body>
</html>
Im Beispiel wird zuerst die Matrix A generiert und mittels
window.document.writeln() als MathML Code dynamisch in das Dokument geschrieben.
Da der Methode im Beispiel keine Parameter übergeben wurden, verwendet die Methode die Default-Werte.
Zusätzlich wird der MathML Code noch in einem Meldungsfenster ausgegeben.
Spezielle Software (z.B. Mathematica, MathType) kann MathML Code importieren. Somit steht ein komfortabler Weg bereit, Ergebnisse der Square Matrix Library in Fremdsoftware weiter zu verarbeiten bzw. an Dritte weiter zu geben.
Ohne ein spezielles Plug-In, stellen die meisten Browser im Moment MathML gar nicht oder falsch dar.
Die Matrix wird nur in Form der sog. "Presentation Tags" nach MathML konvertiert.
Die Methode Matrix.toFormatedString() konvertiert die Matrix in einen
formatierten String nach Benutzerangaben. Ohne Parameter aufgerufen (oder mit den falschen),
liefert die Methode einen HTML formatierten String zurück.
String Matrix.toFormatedString(
string matrixOpen,
string rowOpen,
string elementOpen,
number decimalPlaces,
string elementClose, boolean skipLastElementClosing,
string rowClose, boolean skipLastRowClosing,
string matrixClose
)
matrixOpen<table>).
rowOpen<tr>).
elementOpen<td>).
decimalPlaces4).
elementClose</td>).
skipLastElementClosingelementClose geschrieben werden soll.
rowClose</tr>).
skipLastRowClosingrowClose geschrieben werden soll.
matrixClose</table>).
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 28</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2,3, 4,5,6, 7,8,9); window.document.writeln(A.toFormatedString()); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert und mittels
window.document.writeln() dynamisch in das Dokument geschrieben.
Da der Methode im Beispiel keine Parameter übergeben wurden, erstellt die Methode
als Default HTML-Code in Form einer Tabelle.
Durch geeignete Wahl der Parameter kann die Matrix praktisch beliebig formatiert ausgegeben werden. In einem zweiten Beispiel wurde dies für die folgenden Formate vorgenommen:
Auf genauere Erläuterungen hierzu soll an dieser Stelle verzichtet werden. Ein Blick auf den Quellcode lässt das Prinzip jedoch schnell nachvollziehen.
Das Matrix-Objekt kann nach Bedarf um eigene Methoden erweitert werden. Hierzu muss zuerst mit dem
Schlüsselwort prototype die neue Methode mit ihren Methodennamen deklariert werden.
Anschließend muss diese Methode definiert werden. Innerhalb der Methodendefinition kann mittels des
Schlüsselwortes this auf die Eigenschaften und Methoden des aktuellen Matrix-Objektes
zugegriffen werden.
returnType Matrix.prototype.methodName(parameterType_1 parameter_1, ..., parameterType_N parameter_N) = methodName;
Anzeigebeispiel: So sieht's aus
<html>
<head>
<title>Square Matrix Beispiel 29</title>
<script type="text/javascript" src="SquareMatrix.js"></script>
</head>
<body>
<script type="text/javascript">
Matrix.prototype.sum = sum;
function sum()
{
var sum = 0;
var myArray = this.toArray();
for(var i=0; i<myArray.length; i++)
sum += myArray[i];
return sum;
}
var A = new Matrix(1,2, 3,4);
window.alert(
"Die Summe der Elemente der Matrix \n\n" +
A + "\nist " + A.sum() + "."
);
</script>
</body>
</html>
Im Beispiel wird zuerst die neue Matrix-Methode Matrix.sum() mittels
Matrix.prototype.sum = sum; deklariert und mit der Angabe function sum()
definiert. Die neue Methode soll die Summe aller Elemente der Matrix berechnen.
Hierzu werden alle Elemente der Matrix durch den Aufruf this.toArray()
in das Array myArray geschrieben und anschließend in einer for-Schleife
in der Variablen sum aufsummiert. Die return sum Anweisung liefert
somit als Ergebnis die Summe aller Elemente zurück.
Das Ergebnis für die Matrix A wird durch den Aufruf A.sum()
in einem Meldungsfenster ausgegeben.
Sie können die neue Methode erst verwenden, nachdem diese deklariert und definiert wurde.
Auf das Matrix-Objekt können mehrere Methoden hintereinander direkt angewendet werden. Es ist somit nicht nötig, für jeden Rechenschritt eine eigene Matrix zu definieren. Die Abarbeitung der Methoden erfolgt von links nach rechts.
returnType Matrix.method_1().method_2() ... .method_N();
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Square Matrix Beispiel 30</title> <script type="text/javascript" src="SquareMatrix.js"></script> </head> <body> <script type="text/javascript"> var A = new Matrix(1,2, 3,4); var det = A.inverse().times(2).getDeterminant(); window.alert( "Die Inverse von \n\n" + A + "\n skalar multipliziert mit 2 " + "hat die Determinante " + det + "." ); </script> </body> </html>
Im Beispiel wird zuerst die Matrix A generiert. Anschließend wird die Determinante
der Inversen von A skalar multipliziert mit 2 berechnet. Dies erfolgt in einer einzigen Zeile, indem
hintereinander die Methoden inverse(), times(2) und .getDeterminant()
auf den jeweiligen Rückgabewert der vorigen Methode angewendet werden.

Das Ergebnis wird in einem Meldungsfenster ausgegeben.
Das erste Beispiel ist ein einfaches User Interface, mit dem Lineare Gleichungssysteme und Matrix-Operationen berechnet werden können.
JavaScript enabled
Anzeigebeispiel: So sieht's aus
Das zweite Beispiel ist ein einfaches User Interface, mit dem der transform - Knoten eines SVG Elementes manipuliert werden kann.
JavaScript, SVG enabled
Anzeigebeispiel: So sieht's aus
Das dritte Beispiel ist ein einfaches User Interface, mit dem ein 3D-Roboterarm Model manipuliert werden kann.
JavaScript, Java enabled
Anzeigebeispiel: So sieht's aus
Download:
SquareMatrixV03.zip
(enthält SquareMatrix.js, Dokumentation und Beispiele)