역행렬2

마이클의 AI 연구소·2022년 2월 8일
0

역행렬 (Inverse Matrix) 2

도입

역행렬의 방법을 배워도 그 원리를 이해하기 어려울 수 있는데, 그래서 기본행렬을 도입하여 역행렬을 계산하는 방법의 원리를 이해해보도록 합니다.

기본행렬 (elementary matrix)

기본행렬은 단위행렬(주대각성분은 1이고 그 외에는 모두 0인 행렬)의 두 행을 교환하거나 상수배하거나 한 행의 상수배를 다른 행에 더하여 만든 행렬입니다. 실제로 아래의 단위행렬 A를 통해 기본행렬을 만들며 이해해보도록 합시다.

단위행렬I=[100010001]단위행렬I=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}

기본행렬 만드는 법

  1. 단위행렬의 두행을 교환

    • I의 1, 2행을 교환함

    E1=[010100001]E_1=\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}

  2. 단위행렬의 하나의 행을 상수배

    • I의 2행을 3배함

    E2=[100030001]E_2=\begin{bmatrix}1&0&0\\0&3&0\\0&0&1\end{bmatrix}

  3. 단위행열의 한 행의 상수배를 다른 행에 더함

    • I의 1번행에 -2배를 한 후, 3번 행에 더해줌

    E3=[100010201]E_3=\begin{bmatrix}1&0&0\\0&1&0\\-2&0&1\end{bmatrix}

기본행렬과 행 연산

기본행렬은 어떤 성질이 있을까요?

어떤 행렬방정식이 있다고 할 때, 그 식의 양변의 에 기본행렬을 곱하는 것은 동치인 연립방정식을 만드는 행 연산을 하는 것과 같습니다.

아래 Ax=bAx=b 라는 행렬 방정식이 있다고 할 때, 양변의 앞에 위에서 만든 기본행렬을 곱해봅니다.

A=[abcdefghi],x=[x1x2x3],b=[b1b2b3]A=\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}, x=\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}, b=\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}
  1. E1Ax=E1bE_1A_x=E_1b

    [010100001][abcdefghi]x=[010100001][b1b2b3][defabcghi]x=[b2b1b3]\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}x=\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\\\begin{bmatrix}d&e&f\\a&b&c\\g&h&i\end{bmatrix}x=\begin{bmatrix}b_2\\b_1\\b_3\end{bmatrix}

    (양변의 1행과 2행의 자리를 바꾼 효과)

  2. E2Ax=E2bE_2A_x=E_2b

    [100030001][abcdefghi]x=[100030001][b1b2b3][abc3d3e3fghi]x=[b13b2b3]\begin{bmatrix}1&0&0\\0&3&0\\0&0&1\end{bmatrix}\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}x=\begin{bmatrix}1&0&0\\0&3&0\\0&0&1\end{bmatrix}\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\\\begin{bmatrix}a&b&c\\3d&3e&3f\\g&h&i\end{bmatrix}x=\begin{bmatrix}b_1\\3b_2\\b_3\end{bmatrix}
  1. E3Ax=E3bE_3A_x=E_3b
[100010201][abcdefghi]x=[100010201][b1b2b3][abcdefg2ah2bi2c]x=[b13b2b3]\begin{bmatrix}1&0&0\\0&1&0\\-2&0&1\end{bmatrix}\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}x=\begin{bmatrix}1&0&0\\0&1&0\\-2&0&1\end{bmatrix}\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\\\begin{bmatrix}a&b&c\\d&e&f\\g-2a&h-2b&i-2c\end{bmatrix}x=\begin{bmatrix}b_1\\3b_2\\b_3\end{bmatrix}

(A의 1행에 -2배한 값을 A의 3행에 더해주는 효과)

실습문제

4x4 행렬에 대하여 다음 행 연산에 대응하는 기본행렬을 구하시오.

[1000010000100001]\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}
  1. 2행과 4행을 교환하는 연산을 하는 기본행렬 구하기
    • 위의 연산을 하는 기본행렬을 구하려면 단위행렬을 구한 후에 해당 연산을 단위행렬에 대해 해주면 기본행렬이 된다.
    • 4x4 단위행렬의 2행과 4행을 교환해보자.
    • [1000000100100100]\begin{bmatrix}1&0&0&0\\0&0&0&1\\0&0&1&0\\0&1&0&0\end{bmatrix}
    • 신기하게도 이 행렬을 대상이 되는 행렬 방정식 양 변 앞쪽에 곱해주면 2행과 4행이 교환된다.
  2. 2행을 -3배로 만드는 연산을 하는 기본행렬 구하기
    • 1번 문제처럼 4x4 단위행렬의 2행을 -3배 해보자.
    • [1000030000100001]\begin{bmatrix}1&0&0&0\\0&-3&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}
  3. 1행의 3배를 4행에 더하여 4행을 교체하는 연산을 하는 기본행렬 구하기
    • 1행에 3배 하고, 4행에 더해주자
    • [1000010000103001]\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\3&0&0&1\end{bmatrix}

기본행렬의 역행렬

역행렬의 정의는 AB=BA=IAB=BA=I 입니다. 기본행렬은 단위행렬II에 어떤 연산을 해서 기본행렬을 만드는데, 이렇게 만들어진 기본행렬 앞에 어떤 행렬을 곱해서 다시 II가 된다면 마지막에 곱해준 것이 역행렬이 됩니다.

즉, II
에 어떤 연산을 해서 만들어진 기본행렬 E1E_1의 역행렬은 II에 반대의 연산을 해서 만들 수 있습니다.

단위행렬I=[100010001]단위행렬I=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}
  1. E1=[010100001]E_1=\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}

    이 기본행렬E1E_1II의 1행과 2행을 교환하여 만들었습니다. 따라서 E11E_1^{-1}II의 1행과 2행을 거꾸로 교환해주면 됩니다. 그러나 교환이라는 것은 거꾸로가 특별히 없습니다. 결국 동일하게 교환해주게 되므로 E1E_1와 동일한 값이 됩니다. 따라서 E1E_1의 역행렬은 아래와 같습닌다.

    E11=[010100001]E_1^{-1}=\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}
  2. E2=[10001000a]E_2=\begin{bmatrix}1&0&0\\0&1&0\\0&0&a\end{bmatrix}

    이 기본행렬 E2E_2는 마지막 행을 aa배 한 것입니다. 따라서 aa로 나누기 위해서는 aa의 역수배를 해주면 됩니다. 따라서 1a1\over a 를 곱해주면 역행렬을 구할 수 있습니다.

    E21=[100010001a]E_2^{-1}=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\over a\end{bmatrix}
  1. E3=[100010a01]E_3=\begin{bmatrix}1&0&0\\0&1&0\\a&0&1\end{bmatrix}

    이 기본행렬 E3E_3II행렬의 1행에 aa배 한 것을 3행에 더해준 것입니다. 따라서 역수를 위해서는 a-a배를 하여 3항에 더해줍시다.

    E31=[100010a01]E_3^{-1}=\begin{bmatrix}1 &0&0\\0&1&0\\-a&0&1\end{bmatrix}

기본행렬 곱에 의한 역행렬 계산

행렬 AA를 단위행렬 II로 변환하기 위해서 곱해지는 일련의 기본행렬의 곱 EnE2E1E_n \cdots E_2E_1이 역행렬입니다.

AAA1A_1A2A_2\cdotsAnA_n=II

  • A1=E1AA_1=E_1A
  • A2=E2A1=E2E1AA2=E_2A_1=E_2E_1A
  • \cdots
  • An=EnAn1=EnE2E1A=IA_n=E_nA_{n-1}=E_n \cdots E_2E_1A=I
  • A1=EnE2E1A^{-1}=E_n \cdots E_2E_1

행 연산에 의한 역행렬 계산

위의 EnE2E1E_n \cdots E_2E_1 부분만 뽑아내려면 어떻게 해야 할까요?

AA[AI][A|I]로 써둔 다음, 기본행렬 연산을 가우스조던 소거법처럼 계속 해주다가 왼쪽이 II될 때 멈춘다면 우측이 AA의 역행렬이 됩니다.

profile
늘 성장을 꿈꾸는 자들을 위한 블로그입니다.

0개의 댓글