[Bài 39] Cộng, Trừ, Nhân 2 Ma Trận

[Bài 39] Cộng, Trừ, Nhân 2 Ma Trận

Trong bài viết này mình sẽ hướng dẫn các bạn các phép toán trên ma trận bao gồm : Cộng, trừ và nhân 2 ma trận.

1. Cộng, Trừ 2 Ma Trận

Điều kiện để 2 ma trận có thể cộng trừ với nhau đó là chúng cần có cùng số hàng và cột.

Giả sử cần cộng 2 ma trận A và B có cùng hàng và cột để tạo ra ma trận tổng C thì C[i][j] = A[i][j] + B[i][j] 

Phép trừ 2 ma trận thì bạn làm tương tự

Code : 

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

using namespace std;

int main() {
int n = 3, m = 4;
int a[3][4] = {
    {2, 3, 1, 4},
    {2, 2, 0, 7},
    {1, 3, 5, 1}
};
int b[3][4] = {
    {2, 0, 7, 8},
    {1, 3, 5, 2},
    {3, 2, 8, 1}
};
int tong[3][4], hieu[3][4];
for (int i = 0; i < n; i++) {
    for (int j = 0; j m; j++) {
        tong[i][j] = a[i][j] + b[i][j];
        hieu[i][j] = a[i][j] - b[i][j];
    }
}
printf("Tong 2 ma tran : \n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j m; j++) {
        cout << tong[i][j] << " ";
    }
    cout << endl;
}
printf("Hieu 2 ma tran : \n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j m; j++) {
        cout << hieu[i][j] << " ";
    }
    cout << endl;
}
return 0;

}

 

Output : 

Tong 2 ma tran :
4 3 8 12
3 5 5 9
4 5 13 2
Hieu 2 ma tran :
0 3 -6 -4
1 -1 -5 5
-2 1 -3 0 

 

2. 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

Code : 

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

}

 

Output : 

Tich 2 ma tran :
140 154
320 352 

Lập trình C++ cơ bản