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;
}

Comments