【问题标题】:Multiplying 3x3 matrices in javascript在javascript中乘以3x3矩阵
【发布时间】:2017-11-19 14:09:51
【问题描述】:

所以我有这个矩阵相乘的代码,但它只适用于 2x2 矩阵。我在编程方面没有那么有经验,所以我不知道我做错了什么。谁能告诉我这段代码如何用于乘以 3x3 矩阵?我怎样才能让结果写成矩阵而不是一行?有没有比 document.write(mResult); 更好的方法?

function multiply(m1, m2) {
  var result = [];
  for (var i = 0; i < m1.length; i++) {
    result[i] = [];
    for (var j = 0; j < m2[0].length; j++) {
      var sum = 0;
      for (var k = 0; k < m1[0].length; k++) {
        sum += m1[i][k] * m2[k][j];
      }
      result[i][j] = sum;
    }
  }
  return result;
}

var m1 = [
  [1, 2],
  [3, 8]
];
var m2 = [
  [5, 9],
  [7, 1]
];
var mResult = multiply(m1, m2);
document.write(mResult);

【问题讨论】:

  • 当你传递两个 3x3 矩阵时会发生什么?
  • 它保持为空。使用 2x2 矩阵会显示结果,但不会使用 3x3 矩阵。
  • 您的所有问题都在这里得到解答:stackoverflow.com/questions/27205018/…

标签: javascript function matrix multiplication


【解决方案1】:

这应该可行:

function multiply (a, b) {
  const transpose = (a) => a[0].map((x, i) => a.map((y) => y[i]));
  const dotproduct = (a, b) => a.map((x, i) => a[i] * b[i]).reduce((m, n) => m + n);
  const result = (a, b) => a.map((x) => transpose(b).map((y) => dotproduct(x, y)));
  return result(a, b);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多