C Programming

C언어 행렬 곱셈 - 공부하는 도비

DOVISH WISDOM 2022. 10. 3. 21:33  
728x90
반응형

아래와 같은 두 행렬의 곱을 계산해보도록 하자. 

우선, 행렬의 곱이 형성되기 위해선, 1번 행렬의 열 개수와 2번 행렬의 행 개수가 동일해야 한다.

예제에서는, mat1 = (2, 3) 행렬, mat2 = (3, 2) 행렬이기 때문에 곱 결과는 (2, 2) 행렬이 만들어지게 된다. 

 

행렬의 자세한 내용은 아래 위키를 참고하면 좋을 거 같다. 

https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88 

 

행렬 곱셈 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 행렬 곱셈을 위해선 첫째 행렬의 열 갯수와 둘째 행렬의 행 갯수가 동일해야한다. 곱셈의 결과 새롭게 만들어진 행렬은 첫째 행렬의 행 갯수와 둘째 행렬의 열

ko.wikipedia.org

코드는 다음과 같다. 

#include <stdio.h>
#define a 2 
#define b 3
#define c 2


int main()
{
    int mat1[a][b] = { {1, 2, 3}, {4, 5, 6}};
    int mat2[b][c] = { {7, 8}, {9, 10}, {11, 12}};
    
    int result[a][c] = {0, };
    
    for(int i = 0; i < a; i++)
    {
        for(int j = 0; j < c; j++)
        { 
            for(int z = 0; z < b; z++)
            {
                result[i][j] += mat1[i][z] * mat2[z][j];
            }
        }
    }
    
    for(int i = 0; i < a; i++)
    {
        for(int j = 0; j < c; j++)
        {
            printf("%3d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

출력 결과

 

반응형