행렬 기본 연산(덧셈, 뺄셈, 곱셈, 전치행렬, 역행렬) 정리
반응형

프로그래밍에 행렬의 개념은 많이 쓰인다!! 따라서 기본 연산들을 간략히 정리해본다 :)

 

행렬의 덧셈과 뺄셈

행렬의 덧셈에 있어 두 행렬의 차원(행*열)은 같아야 한다!

방법은 간단하다 각 위치에 해당하는 것들끼리 덧셈, 뺄셈 하면 된다!

 

코드 구현

이중 for문으로 간단하게 구현할 수 있다.

int[][] a = {{1, 2}, {2, 3}};
int[][] b = {{3, 4}, {5, 6}};
int[][] answer = new int[a.length][a[0].length]; //덧셈 결과를 담을 행렬 생성

for (int i = 0; i < a.length; i++) { //행을 바꿔주는 for문
    for (int j = 0; j < a[0].length; j++) { //열을 바꿔주는 for문
        answer[i][j] = a[i][j] + b[i][j]; //각 위치 행렬 값 더하기
    }
}
//answer = {{4, 6}, {7, 9}}
//뺄셈은 동일한 코드에 +부호를 -로 바꾸면 된다!

 

 

행렬 스칼라 곱

행렬에 스칼라 곱을 해줄 때는 각각의 자리에 다 곱해주면 된다.

 

코드 구현

이중 for문으로 간단하게 구현할 수 있다.

int[][] a = {{1, 2}, {2, 3}};
int c1 = 5; //스칼라
int[][] answer = new int[arr1.length][a[0].length]; // 결과를 담을 행렬 생성
for (int i = 0; i < a.length; i++) { //행을 바꿔주는 for문
    for (int j = 0; j < a[0].length; j++) { //열을 바꿔주는 for문
        answer[i][j] = a[i][j] * c1; //각 위치 스칼라 곱
    }
}
//answer = {{5, 10}, {10, 15}}

 

 

행렬 곱셈

행렬의 곱셈을 하기 위해서는 AxB에서 A행렬의 열크기와 B행렬의 행크기가 같아야 한다.

즉, A행렬이 3x2라면 B행렬은 2x3으로.. 행과 열의 크기가 모두 같다면 상관없다!

대신 A행렬 2x3, B행렬 2x3 이런 경우엔 안된다!! 이유는 아래 그림을 보면 알 수 있다.

행렬의 곱셈은 A행렬의 행 * B행렬의 열을 다 더한 값으로 반환한다!

 

코드 구현

곱에는 3중 for문이 필요하다..

int[][] a = {{1, 2}, {2, 3}};
int[][] b = {{3, 4}, {5, 6}};
int[][] answer = new int[a.length][a[0].length]; //결과를 담을 행렬 생성
for (int i = 0; i < a.length; i++) { // a행렬의 행 개수만큼 행을 바꿔주는 for문
    for (int j = 0; j < a[0].length; j++) { // a행렬의 열 개수만큼 열을 바꿔주는 for문
        for (int k = 0; k < b.length; k++) { // b행렬의 행 개수만큼 행을 바꿔주는 for문
            answer[i][j] = a[i][k] + b[k][j]; // 행렬 곱
        }
    }
}
//answer = {{7, 8}, {8, 9}}

 

 

전치 행렬

전치 행렬은 행과 열을 바꿔주면 된다! 정말 간단하다.

<알아두고 가면 좋은 용어>

  • 정방행렬(Square Matrix) : 행 개수와 열 개수가 같은 행렬
  • 대칭행렬(Symmetric Matrix) : 원래 행렬과 전치 행렬이 같은 행렬

 

코드 구현

int[][] a = {{3, 4}, {5, 6}};
int[][] answer = new int[a.length][a[0].length]; //결과를 담을 행렬 생성
for (int i = 0; i < a.length; i++) { // a행렬의 행 개수만큼 행을 바꿔주는 for문
    for (int j = 0; j < a[0].length; j++) { // a행렬의 열 개수만큼 열을 바꿔주는 for문
        answer[i][j] = a[j][i]; // 행렬 바꿔서 넣어주기
    }
}
return answer;
//answer = {{3, 5}, {4, 6}}

 

 

역행렬

역행렬은 행렬에 역행렬을 곱했을 때 단위행렬이 나오게 하는 행렬이다!

A(행렬)*A^-1(역행렬) = 단위행렬

위와 같이 식을 만들어 놓고 행렬 곱을 이용해 방정식을 세운다음 방정식을 풀면 역행렬 공식이 나온다!

반응형