Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

คูณเมทริกซ์ขนาดต่างกัน (Matrix Multiplication) - JavaScript

คูณเมทริกซ์ 2 มิติ (Matrix Multiplication) ขนาด m×n กับ n×p ได้ผลลัพธ์ m×p

ตัวอย่าง

Matrix A (5×4) × Matrix B (4×6) = Matrix C (5×6)

ตัวอย่างโค้ด

const multiplyMatrices = (a, b) => {
  if (!Array.isArray(a) || !Array.isArray(b) || !a.length || !b.length) {
    throw new Error('Arguments must be 2D arrays');
  }
  
  const rowsA = a.length;
  const colsA = a[0].length;
  const colsB = b[0].length;
  
  if (b.length !== colsA) {
    throw new Error('Columns of A must equal rows of B');
  }
  
  const result = Array.from({ length: rowsA }, () => 
    Array(colsB).fill(0)
  );
  
  for (let i = 0; i < rowsA; i++) {
    for (let j = 0; j < colsB; j++) {
      for (let k = 0; k < colsA; k++) {
        result[i][j] += a[i][k] * b[k][j];
      }
    }
  }
  return result;
};

ผลลัพธ์

[
  [15, 33, 51, 37, 34, 40],
  [33, 78, 123, 85, 76, 88],
  [51, 123, 195, 133, 118, 136],
  [7, 16, 25, 18, 17, 22],
  [31, 73, 115, 88, 73, 96]
]

คำอธิบายอัลกอริทึม

C[i][j] = Σ(A[i][k] × B[k][j]) สำหรับ k = 0 ถึง n-1

แต่ละเซลล์ในผลลัพธ์ = ผลรวมของการคูณแถว i ของ A กับคอลัมน์ j ของ B