Кто-нибудь может помочь с этим вопросом?
Определите функцию, которая принимает два массива n-длины в качестве аргумента и возвращает матричное умножение массивов в качестве вывода. Обратите внимание, что вы должны следовать правилам матрицы умножение. Пример: рассмотреть
A = [[8,3], [2,4], [3,6]], B = [[1,2,3], [4,6,8]].
Выход A × B равен
[[20,34,48], [18,28,38], [27,42,57]]
Примечание. Длина строки матрицы равна длине массива, а длина столбца матрицы равна длине массива. длина предметов. Например, массив A состоит из трех строк и двух столбцов или A представляет собой матрицу 3 × 2.
Вспомогательная документация: https://en.wikipedia.org/wiki/Matrix_multiplication
см. также: meta.stackoverflow.com/questions/334822/…
Есть много вопросов о «умножении матриц JavaScript», на которые стоит обратить внимание, если вы застряли.
это одна из моих задач для алгоритма.
Сначала мы подтверждаем, что
а затем мы делаем фактический расчет.
function multiplicate(A, B) {
if (!(Array.isArray(A) && Array.isArray(B))) throw 'You need to pass arrays';
for (let row = 0; row < A.length; row++) {
if (A[row].length !== B.length) throw 'The number of columns in A needs to match the number of rows in B';
}
for (let column = 0; column < B.length; column++) {
if (B[column].length !== A.length) throw 'The number of rows in A needs to match the number of columns in B';
}
let C = [];
for (let row = 0; row < A.length; row++) {
let newRow = [];
for (let column = 0; column < A.length; column++) {
let sum = 0;
for (let k = 0; k < A[row].length; k++) {
sum += A[row][k] * B[k][column];
}
newRow.push(sum);
}
C.push(newRow);
}
return C;
}
console.info(multiplicate(
[[8,3], [2,4], [3,6]],
[[1,2,3], [4,6,8]]
));
вполне естественно использовать Fortran для таких вещей, но все же вопрос касается javascript, а не Fortran. ;)
@gog ответ был написан на Javascript.
Что пробовали и в чем проблема?