Не могу понять, почему моя функция умножения матриц не работает - PullRequest
0 голосов
/ 06 марта 2020
let multiply = function(a, b) {
  let c = [];
  for(let row = 0; row < 4; row++){
    for(let col = 0; col < 4;col++){
      for(let i = 0; i < 4; i++){
        c[col + (4*row)] += a[i][row] * b[col][i];
      }
    }
  }

Функция берет две матрицы четыре на четыре и выводит массив длиной 16. Кажется, она не дает правильный массив.

1 Ответ

0 голосов
/ 06 марта 2020

Это должно сработать

let multiply = function(a, b) {
  let c = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
  for(let row = 0; row < 4; row++){
    for(let col = 0; col < 4; col++){
      for(let i = 0; i < 4; i++){
        c[col + (4*row)] += a[row][i] * b[i][col];
      }
    }
  }
  return c;
}

Обратите внимание, что вам нужно инициализировать выходной массив и ваше умножение row x col было неправильным; вам нужно:
a[row][i] * b[i][col]
вместо
a[i][row] * b[col][i]
Функция также должна возвращать результирующий массив.
Вы можете попробовать, используя JSFiddle: https://jsfiddle.net/1fxLpucg/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...