[응용이 보이는 선형대수학] 3. 역행렬

Kyeongmin·2024년 1월 27일
0

수학

목록 보기
18/30

본 글은 "응용이 보이는 선형대수학" 책을 읽고 정리한 글입니다.


1. 역행렬의 계산

1) 기본행렬

  • 정의 : 아래 3가지 정의 중 하나에 해당하는 행렬
    1) Row Switching : 단위행렬의 두 행을 교환한 행렬
    2) Row Multiplication : 단위행렬의 한 행에 0이 아닌 상수를 곱한 행렬
    3) Row Addition : 단위행렬의 한 행에 상수배를 다른 행에 더한 행렬
    E1)=[010100001],E2)=[100030001],E3)=[100010501],\textbf{E}_{1)} \,=\, \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \quad,\quad \textbf{E}_{2)} \,=\, \begin{bmatrix} 1 & 0 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \quad,\quad \textbf{E}_{3)} \,=\, \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ -5 & 0 & 1 \\ \end{bmatrix} \quad,\quad
  • 기본행렬의 역행렬
    • 기본행렬은 가역행렬이며, 기본행렬의 역행렬은 기본행렬이다.
    • 기본행렬에서의 계산을 역으로 실행해주면 역행렬을 구할 수 있다.
    • 예시
      E1)1=[010100001],E2)1=[1000130001],E3)1=[100010501],\textbf{E}_{1)}^{-1} \,=\, \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \quad,\quad \textbf{E}_{2)}^{-1} \,=\, \begin{bmatrix} 1 & 0 & 0 \\ 0 & \frac{1}{3} & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \quad,\quad \textbf{E}_{3)}^{-1} \,=\, \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 5 & 0 & 1 \\ \end{bmatrix} \quad,\quad

2) 행 동치

  • 정의
    • 행렬 A\textbf{A}를 행렬 B\textbf{B} 로 바꾸는 기본행렬이 있다면, 행렬 A\textbf{A}, B\textbf{B}행 동치이다.
    • A\textbf{A} ~ B\textbf{B}로 표기한다. ( B=EnEn1E1A\textbf{B} \,=\, \textbf{E}_{n}\textbf{E}_{n-1}\cdots\textbf{E}_{1}\textbf{A} )
  • 행 연산을 이용한 역행렬 계산
    • 행렬 A\textbf{A}를 단위행렬 I\textbf{I} 로 변환하는 기본행렬의 곱 EnEn1E1=A1\textbf{E}_{n}\textbf{E}_{n-1}\cdots\textbf{E}_{1} \,=\, \textbf{A}^{-1} 이다.
    • 첨가행렬 [AI][IB][\,\textbf{A} \,|\, \textbf{I} \,] \rightarrow [\, \textbf{I} \,|\, \textbf{B} \,]와 같이 변화하는 과정에서, B=A1\textbf{B} \,=\, \textbf{A}^{-1} 이다.

2. LU 분해

1) LU 분해란

  • 정의
    • LU 분해 또는 LU 행렬 분해(LU matrix decomposition)라고 한다.
    • 임의의 행렬 A\textbf{A}를 하삼각행렬 L\textbf{L}와 상삼각행렬 U\textbf{U}의 곱인 A=LU\textbf{A} =\textbf{L}\textbf{U} 로 표현하는 것
  • 종류
    Aa)=[100101][000],Ab)=[000][101001],Ac)=[000][000],\textbf{A}_{a)}\,=\, \begin{bmatrix} 1 & 0 & 0 \\ * & 1 & 0 \\ * & * & 1 \\ \end{bmatrix} \begin{bmatrix} * & * & * \\ 0 & * & * \\ 0 & 0 & * \\ \end{bmatrix} \quad,\quad \textbf{A}_{b)}\,=\, \begin{bmatrix} * & 0 & 0 \\ * & * & 0 \\ * & * & * \\ \end{bmatrix} \begin{bmatrix} 1 & * & * \\ 0 & 1 & * \\ 0 & 0 & 1 \\ \end{bmatrix} \quad,\quad \textbf{A}_{c)}\,=\, \begin{bmatrix} * & 0 & 0 \\ * & * & 0 \\ * & * & * \\ \end{bmatrix} \begin{bmatrix} * & * & * \\ 0 & * & * \\ 0 & 0 & * \\ \end{bmatrix} \quad,\quad
    a) 단위 하삼각행렬을 이용한 LU 분해
    b) 단위 상삼각행렬을 이용한 LU 분해
    c) 주대각 성분에 제약 조건이 없는 LU 분해
    ⇒ 주로 a) 단위 하삼각행렬을 이용한 LU 분해를 사용한다.
  • 조건
    : ①한 행에 0이 아닌 상수를 곱하는 행 연산과 ②위쪽 행의 상수배를 어떤 행에 더하는 행 연산을 적용하여 상삼각행렬로 만들 수 있을 때, LU 분해를 할 수 있다.

2) LU 분해의 방법

A=[112210042]\textbf{A}\,=\, \begin{bmatrix} 1 & -1 & 2 \\ 2 & 1 & 0 \\ 0 & 4 & 2 \\ \end{bmatrix}
  1. 행렬 A\textbf{A}를 행 연산을 통해 상삼각행렬을 만든다.
    단, 한 행에 0이 아닌 상수를 곱하거나 위쪽 행의 상수배를 더하는 연산만 사용할 수 있다.
    상삼각행렬을 만들 수 없다면, LU 분해는 불가능하다.
    E2E1A=U[1000100431][100210001][112210042]=[11203400223]\textbf{E}_2\textbf{E}_1\textbf{A} \,=\, \textbf{U} \\ \, \\ \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -\frac{4}{3} & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ -2 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & -1 & 2 \\ 2 & 1 & 0 \\ 0 & 4 & 2 \\ \end{bmatrix} \,=\, \begin{bmatrix} 1 & -1 & 2 \\ 0 & 3 & -4 \\ 0 & 0 & \frac{22}{3} \\ \end{bmatrix}
  2. 기본 행 연산들의 역행렬을 양변에 곱해준다.
    A=E11E21U[112210042]=[100210001][1000100431][11203400223]\textbf{A} \,=\, \textbf{E}_{1}^{-1}\textbf{E}_{2}^{-1}\textbf{U} \\ \, \\ \begin{bmatrix} 1 & -1 & 2 \\ 2 & 1 & 0 \\ 0 & 4 & 2 \\ \end{bmatrix} \,=\, \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & \frac{4}{3} & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & -1 & 2 \\ 0 & 3 & -4 \\ 0 & 0 & \frac{22}{3} \\ \end{bmatrix}
  3. 기본 행렬의 역행렬끼리 곱하여 하삼각행렬을 구한다.
    상삼각행렬을 만들기 위한 기본 행 연산은 모두 하삼각행렬이다.
    하삼각행렬들의 곱은 하삼각행렬이고, 역행렬 또한 하삼각행렬이다.
    A=LU[112210042]=[1002100431][11203400223]\textbf{A} \,=\, \textbf{L}\textbf{U} \\ \, \\ \begin{bmatrix} 1 & -1 & 2 \\ 2 & 1 & 0 \\ 0 & 4 & 2 \\ \end{bmatrix} \,=\, \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & \frac{4}{3} & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & -1 & 2 \\ 0 & 3 & -4 \\ 0 & 0 & \frac{22}{3} \\ \end{bmatrix}

3) LU 분해의 활용

LU 분해를 이용하면 기존 행렬을 기약 행 사다리꼴 행렬로 변환하는 과정에서 생기는 계산을 줄일 수 있다.

  • LU 분해를 이용한 연립선형방정식의 풀이
    • Ax=b\textbf{A}x = b 식에서 LU 분해를 이용하여 LUx=b\textbf{L}\textbf{U}x = b 로 바꾸어준다.
    • Ux=y\textbf{U}x = y 라고 했을 때, Ly=b\textbf{L}y = b 를 풀어 yy를 먼저 구해준다.
    • Ux=y\textbf{U}x = y 를 풀어 xx 를 구해준다.
  • LU 분해를 이용한 역행렬 계산
    A1=C=[c1  c2  c3]\textbf{A}^{-1} = \textbf{C} = [c_1\; c_2\; c_3] 이고, I3=[i1  i2  i3]\textbf{I}_3 = [i_1\; i_2\; i_3] 일 때,
    A1\textbf{A}^{-1} 을 구하는 것은 Ac1=i1,  Ac2=i2,  Ac3=i3\textbf{A}c_1=i_1, \;\textbf{A}c_2=i_2,\; \textbf{A}c_3=i_3 3개의 행렬방정식을 푸는 것과 같다.
    • Ack=ik\textbf{A}c_k = i_k 식에서 LU 분해를 이용하여 LUck=ik\textbf{L}\textbf{U}c_k = i_k 로 바꾸어준다.
    • Uck=yk\textbf{U}c_k = y_k 라고 했을 때, Lyk=ik\textbf{L}y_k = i_k 를 풀어 yky_k를 먼저 구해준다.
    • Uck=yk\textbf{U}c_k = y_k 를 풀어 ckc_k 를 구해준다.

3. 블록행렬의 역행렬

  1. 블록 상삼각행렬과 역행렬
    A=[A11A120A22],A1=[A111A111A12A2210A221]\textbf{A}= \begin{bmatrix} \textbf{A}_{11} & \textbf{A}_{12} \\ 0 & \textbf{A}_{22} \\ \end{bmatrix} \quad , \quad \textbf{A}^{-1}= \begin{bmatrix} \textbf{A}_{11}^{-1} & -\textbf{A}_{11}^{-1}\textbf{A}_{12}\textbf{A}_{22}^{-1} \\ 0 & \textbf{A}_{22}^{-1} \\ \end{bmatrix}
    A\textbf{A}의 부분행렬이 모두 가역행렬이어야 위의 식이 성립한다.
  2. 블록 대각행렬과 역행렬
    A=[A1100A22],A1=[A11100A221]\textbf{A}= \begin{bmatrix} \textbf{A}_{11} & 0 \\ 0 & \textbf{A}_{22} \\ \end{bmatrix} \quad , \quad \textbf{A}^{-1}= \begin{bmatrix} \textbf{A}_{11}^{-1} & 0 \\ 0 & \textbf{A}_{22}^{-1} \\ \end{bmatrix}
    A\textbf{A}의 부분행렬이 모두 가역행렬이어야 위의 식이 성립한다.
profile
개발자가 되고 싶은 공장장이🛠

0개의 댓글