Mit dem folgenden JavaScript-Schnipsel kann eine 3x3-Matrix beliebig oft mit sich selber multipliziert werden. Wer Interesse hat, kann den nachfolgenden Quelltext gerne unter Berücksichtigung der GNU AGPL weiterverwenden und/oder erweitern.
Dazugehörender Artikel: JavaScript-Schnipsel aus der Mottenkiste
/**
* This class can be used for iterating a 3x3 matrix with itself.
*
* Author: Pascal Hollenstein <webmaster@zockerade.com>
* Website: http://blog.hollenstein.info
* License: GNU AGPL
*/
function Matrix() {
/**
* This function tries to display the iterated matrix.
*
* @access public
* @param array $matrix
* @param integer $iteration
* @param string $output
* @return void
*
* @see multiply()
*/
this.display = function(matrix, iteration, output) {
var a = multiply(matrix, iteration), output = document.getElementById(output), index = 0;
if (a.length !== 0 && output !== null) {
var h2 = document.createElement("h2"), sup = document.createElement("sup");
for (var i = 0; i < 3; i++) {
var table = document.createElement("table"), tr = document.createElement("tr");
for (var j = 0; j < 3; j++) {
var td = document.createElement("td"), content = a[index].toString();
if (content.length > 4) {
content = parseFloat(content).toFixed(2);
}
td.appendChild(
document.createTextNode(content)
);
tr.appendChild(td); index++;
}
table.appendChild(tr);
}
sup.appendChild(
document.createTextNode(iteration)
);
h2.appendChild(
document.createTextNode("Berechnung der Matrix A")
);
h2.appendChild(
sup
);
output.appendChild(
h2
);
output.appendChild(
table
);
} else {
alert("Bitte geben Sie in die Eingabefelder nur Zahlen und keine Buchstaben ein.");
}
}
/**
* This function tries to iterate the matrix with itself.
*
* @acess private
* @param array $matrix
* @param integer $iteration
* @return array
*
* @see assign()
*/
var multiply = function(matrix, iteration) {
var a = assign(matrix), t = [];
if (a.length !== 0 && iteration % 1 === 0) {
for (var index = 1; index <= iteration; index++) {
t.push(
a[0] * a[0] + a[1] * a[3] + a[2] * a[6],
a[0] * a[1] + a[1] * a[4] + a[2] * a[7],
a[0] * a[2] + a[1] * a[5] + a[2] * a[8],
a[3] * a[0] + a[4] * a[3] + a[5] * a[6],
a[3] * a[1] + a[4] * a[4] + a[5] * a[7],
a[3] * a[2] + a[4] * a[5] + a[5] * a[8],
a[6] * a[0] + a[7] * a[3] + a[8] * a[6],
a[6] * a[1] + a[7] * a[4] + a[8] * a[7],
a[6] * a[2] + a[7] * a[5] + a[8] * a[8]
);
a = t; t = [];
}
return a;
}
return [];
}
/**
* This function tries to assign the matrix from the form.
*
* @access private
* @param object $matrix
* @return array
*/
var assign = function(matrix) {
var matrixToReturn = [];
for (var index = 0; index < matrix.length; index++) {
if (isNaN(matrix[index].value) === false) {
matrixToReturn.push(matrix[index].value);
}
}
return matrixToReturn.length === 9 ? matrixToReturn : [];
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Eine 3x3-Matrix mittels Javascript n-mal mit sich selber multiplizieren</title>
<script src="/path/to/the/matrix/multiplication/javascript/file.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function() {
document.calculation.submit.onclick = function() {
new Matrix().display(
document.calculation.matrix,
document.calculation.iteration.value,
"output"
);
}
}
</script>
</head>
<body id="matrix-multiplication">
<h1>Eine 3x3-Matrix mittels Javascript n-mal mit sich selber multiplizieren</h1>
<form action="#matrix-multiplication" method="get" name="calculation">
<noscript>
<p>Ohne aktiviertes Javascript kann nicht nach Primzahlen gesucht werden.</p>
</noscript>
<fieldset id="output">
<ul>
<li>
<p>Welche 3x3-Matrix soll mit sich selber multipliziert werden?</p>
<table>
<tr>
<td><input type="text" name="matrix" value="0"></td>
<td><input type="text" name="matrix" value="0.5"></td>
<td><input type="text" name="matrix" value="0.5"></td>
</tr>
<tr>
<td><input type="text" name="matrix" value="1"></td>
<td><input type="text" name="matrix" value="0"></td>
<td><input type="text" name="matrix" value="0"></td>
</tr>
<tr>
<td><input type="text" name="matrix" value="0.25"></td>
<td><input type="text" name="matrix" value="0.25"></td>
<td><input type="text" name="matrix" value="0.5"></td>
</tr>
</table>
</li>
<li>
<p>Wie viel mal soll die Matrix mit sich selber multipliziert werden?</p>
<p><input type="text" name="iteration" value="1"></p>
</li>
</ul>
<input type="button" name="submit" value="Multiplizieren">
</fieldset>
</form>
</body>
</html>