0965303260
TP. Hồ Chí Minh

[C]. 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

NỘI DUNG : 

  • Cộng, Trừ 2 Ma Trận
  • Nhân 2 Ma Trận
  • Video Tutorial 

phép toán trên 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] 

cộng 2 ma trận

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

trừ 2 ma trận

Code : 

#include "stdio.h"

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++){
            printf("%d ", tong[i][j]);
        }
        printf("\n");
    }
    printf("Hieu 2 ma tran : \n");
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            printf("%d ", hieu[i][j]);
        }
        printf("\n");
    }
    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 

nhân 2 ma trận

Để 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 "stdio.h"

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];
            }
        }
    }
    printf("Tich 2 ma tran : \n");
    for(int i = 0; i < n; i++){
        for(int j = 0; j < q; j++){
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }
    return 0;
}

Output : 

Tich 2 ma tran : 
140 154 
320 352 


Xem thêm video bài giảng về mảng 2 chiều của mình

iYVesRI8OIg