Olá, então, estou estudando criptografia em minha escola e achei legal a ideia de criar um programa Js para criar um exemplo sobre o assunto. Pesquisei na internet alguns códigos para me basear e acabei achando nesse link https://stackoverflow.com/questions/27205018/multiply-2-matrices-in-javascript. Analisei o código e alterei alguns valores para ele se tornar útil pra mim, mas deu a seguinte mensagem de erro: "Uncaught TypeError: Cannot read property '0' of undefined at multiply (trabalho.mat.html:17) at trabalho.mat.html:39"
JS:
<!DOCTYPE html>
<head>
</head>
<body>
<script type="text/javascript">
function multiply(a, b) {
var aNumRows = a.length, aNumCols = a[0].length,
bNumRows = b.length, bNumCols = b[0].length,
m = new Array(aNumRows); // initialize array of rows
for (var r = 0; r < aNumRows; ++r) {
m[r] = new Array(bNumCols); // initialize the current row
for (var c = 0; c < bNumCols; ++c) {
m[r][c] = 0; // initialize the current cell
for (var i = 0; i < aNumCols; ++i) {
m[r][c] += a[r][i] * b[i][c];
}
}
}
return m;
}
function display(m) {
for (var r = 0; r < m.length; ++r) {
document.write(' '+m[r].join(' ')+'<br />');
}
}
var a = [[1, 27, 1, 22, 5, 14, 20, 18], [1, 27, 5, 19, 20, 28, 27, 12], [28, 27, 6, 15, 18, 1, 30, 32]],
b = [[1, 2, 3], [0, 1, 4], [0, 0, 1]];
document.write('matrix a:<br />');
display(a);
document.write('matrix b:<br />');
display(b);
document.write('a * b =<br />');
display(multiply(a, b));
</script>
</body>
</html>
Além disso, uma observação que eu tive é que se você substituir o "a" pelo "b" o código funciona:
<!DOCTYPE html>
<head>
</head>
<body>
<script type="text/javascript">
function multiply(a, b) {
var aNumRows = a.length, aNumCols = a[0].length,
bNumRows = b.length, bNumCols = b[0].length,
m = new Array(aNumRows); // initialize array of rows
for (var r = 0; r < aNumRows; ++r) {
m[r] = new Array(bNumCols); // initialize the current row
for (var c = 0; c < bNumCols; ++c) {
m[r][c] = 0; // initialize the current cell
for (var i = 0; i < aNumCols; ++i) {
m[r][c] += a[r][i] * b[i][c];
}
}
}
return m;
}
function display(m) {
for (var r = 0; r < m.length; ++r) {
document.write(' '+m[r].join(' ')+'<br />');
}
}
var b = [[1, 27, 1, 22, 5, 14, 20, 18], [1, 27, 5, 19, 20, 28, 27, 12], [28, 27, 6, 15, 18, 1, 30, 32]],
a = [[1, 2, 3], [0, 1, 4], [0, 0, 1]];
document.write('matrix a:<br />');
display(a);
document.write('matrix b:<br />');
display(b);
document.write('a * b =<br />');
display(multiply(a, b));
</script>
</body>
</html>