Nhân 2 Ma Trận

Giả sử bạn cần nhân ma trận A[n][m] với ma trận B[p][q] thì điều kiện để xảy ra phép nhân ma trận đó là : Số cột của ma trận A bằng số hàng của ma trận B

Tức là m phải bằng p, khi đó ma trận tích sẽ có cỡ C[n][q]

Ví dụ : 

A[3][4] x B[4][2] = C[3][2]

A[3][4] x B[4][5] = C[3][5]

A[2][4] X B[2][3] = Không xảy ra 

Để tạo ra ma trận tích C thì C[i][j] = ∑A[i][k] * B[k][j] với k chạy từ 0 tới m (p)

Hiểu đơn giản thì khi tích phần tử C[i][j] bạn sẽ nhân lần lượt các phần tử ở hàng i của ma trận A với các phần tử ở cột j của ma trận b sau đó cộng dồn lại

Nguồn: 28tech

#include <iostream>
#include <math.h>
#include <algorithm>

using namespace std;

int main(){
    int n = 2, m = 3, q = 2;
    //a[n][m], b[m][q]
    int a[n][m] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    int b[m][q] = {
        {10, 11},
        {20, 22},
        {30, 33}
    };
    int c[n][q];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < q; j++){
            c[i][j] = 0;
            for(int k = 0; k < m; k++){
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }
    cout << "Tich 2 ma tran : \n";
    for(int i = 0; i < n; i++){
        for(int j = 0; j < q; j++){
            cout << c[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

Categorized in: