Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Thuật toán nhân ma trận (Matrix Multiplication Algorithm)


Phần này trình bày cách nhân hai ma trận. Nhân ma trận chỉ thực hiện được nếu thỏa mãn điều kiện: cho ma trận A (m×n) và B (p×q), nhân được khi n = p. Ma trận kết quả C có kích thước (m×q).

Thuật toán

matrixMultiply(A, B):
Assume dim A = (m x n), dim B = (p x q)
Begin
    if n != p then exit
    define C matrix (m x q)
    for i = 0 to m-1:
        for j = 0 to q-1:
            for k = 0 to p-1:
                C[i][j] = C[i][j] + (A[i][k] * B[k][j])  // sửa: B[k][j] thay vì A[k][j]
            done
        done
    done
End

Ví dụ C++

#include <iostream>
using namespace std;

int main() {
    int product[10][10], r1=3, c1=3, r2=3, c2=3, i, j, k;
    int a[3][3] = {{2,4,1},{2,3,9},{3,1,8}};
    int b[3][3] = {{1,2,3},{3,6,1},{2,4,7}};
    if(c1 != r2) {
        cout << "Column of first matrix should equal row of second matrix";
    } else {
        cout << "First matrix:" << endl;
        for(i=0;i

Kết quả

First matrix:  2 4 1  2 3 9  3 1 8
Second matrix: 1 2 3  3 6 1  2 4 7
Product:       16 32 17  29 58 72  22 44 66