[선형대수] Lecture 4: Factorization into A = LU

이재호·2025년 2월 28일

선형대수

목록 보기
4/31

https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/video_galleries/video-lectures/

먼저 Inverse Matrix에서 시작한다.

AA1=I=A1AAA^{-1} = I = A^{-1}A

위 수식과 같이 AA1=IAA^{-1}=I인 것은 알고 있다.

AB??=IAB{??} = I

그렇다면 ABAB의 역행렬은 무엇일까?

ABB1A1=AIA1=AA1=IABB^{-1}A^{-1} = AIA^{-1} = AA^{-1} = I

위 수식과 같이 ABAB의 역행렬은 B1A1B^{-1}A^{-1}이다. 따라서 다음과 같이 표현할 수도 있겠다.

(AB)1=B1A1(AB)^{-1} = B^{-1}A^{-1}

그렇다면 AA1=IAA^{-1}=I에서 양 변에 Transpose를 적용하면 어떻게 될까?

AA1=IAA^{-1}=I
(A1)TAT=I(A^{-1})^TA^T=I

위와 같이 나올 것이다. 그러면 여기서 우리는 다음과 같은 수식을 도출할 수 있겠다.

(A1)T=(AT)1(A^{-1})^T = (A^T)^{-1}

이제 지난 강의에서 했던 Elimination에 대해서 좀더 알아보자.
아래 수식처럼 행렬 UU(upper triangle)을 만들기 위해 행렬 AA에 대해서 Elimination을 진행해보자.

[]E21[2187]A =[2103]U\underbrace{ \begin{bmatrix} - & - \\ - & - \end{bmatrix} }_{E_{21}} \underbrace{ \begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix} }_{A} \ = \underbrace{ \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix} }_{U}

위에서 E21E_{21}의 값은 어떻게 구할 수 있을까?

  • 먼저, UUrow1row_1([2, 1])을 구하기 위해서는 AArow1row_1을 1만큼 가져오고 row2row_2는 안 가져오면 될 것 같다.
  • 다음으로 UUrow2row_2([0, 3])을 구하기 위해서는 AArow1row_1을 -4만큼 가져오고 row2row_2는 1만큼 가져오면 될 것 같다.

따라서 결과는 다음과 같이 나올 것이다.

[1041]E21[2187]A =[2103]U\underbrace{ \begin{bmatrix} 1 & 0 \\ -4 & 1 \end{bmatrix} }_{E_{21}} \underbrace{ \begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix} }_{A} \ = \underbrace{ \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix} }_{U}

그렇다면 A=LUA=LU 꼴로 만들기 위해서는 어떤 작업이 필요할까? 그러려면 E211E_{21}^{-1}을 곱해주면 되겠다.
즉, 이 경우 E211=L(lower triangle)E_{21}^{-1} = L(lower \ triangle)이라는 것을 알 수 있다.

[1041]E211[1041]E21 =[1001]I\underbrace{ \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} }_{E_{21}^{-1}} \underbrace{ \begin{bmatrix} 1 & 0 \\ -4 & 1 \end{bmatrix} }_{E_{21}} \ = \underbrace{ \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} }_{I}
  • IIrow1row_1 [1, 0]을 만들기 위해서 E21E_{21}row1row_1은 1만큼 row2row_2은 0만큼 가져오고,
  • IIrow2row_2 [0, 1]을 만들기 위해서 E21E_{21}row2row_2은 1만큼 row1row_1은 4만큼 가져오면 된다.

따라서 다음과 같이 구할 수 있겠다.

[2187]A =[1041]L[2103]U\underbrace{ \begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix} }_{A} \ = \underbrace{ \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} }_{L} \underbrace{ \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix} }_{U}

그렇다면 여기서 좀더 나아가서 A=LDUA = LDU 꼴로 만들어보자. 여기서 DD는 diagonal matrix(대각 행렬)를 의미한다.

[2187]A =[1041]L[2103]U =[1041]L[2003]D[]U2\underbrace{ \begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix} }_{A} \ = \underbrace{ \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} }_{L} \underbrace{ \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix} }_{U} \ = \underbrace{ \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} }_{L} \underbrace{ \begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix} }_{D} \underbrace{ \begin{bmatrix} - & - \\ - & - \end{bmatrix} }_{U_2}
  • 위에서 U2U_2는 어떻게 구할 수 있을까? UUDD로 나눠주면 구할 수 있겠다.
  • 먼저 DDrow1row_1 [2 0]에서, UUrow1row_1은 2만큼 나눠주고 UUrow2row_2는 아예 건들지 않으면 되겠다. 이러면 "[2 1]/2+[0 0]"이 되어 [1 1/2]이 될 것이다.
  • 다음으로 DDrow2row_2 [0 3]에서, UUrow1row_1은 건들지 않고 UUrow2row_2는 3만큼 나눠주면 되겠다. 이러면 "[0 0]+[0 3]/3"가 되어 [0 1]이 될 것이다.

정리하면 다음과 같다.

[2187]A =[1041]L[2103]U =[1041]L[2003]D[11201]U2\underbrace{ \begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix} }_{A} \ = \underbrace{ \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} }_{L} \underbrace{ \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix} }_{U} \ = \underbrace{ \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} }_{L} \underbrace{ \begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix} }_{D} \underbrace{ \begin{bmatrix} 1 & \frac{1}{2} \\ 0 & 1 \end{bmatrix} }_{U_2}

그러면 3x3 행렬의 Elimination은 어떨까.

E32E31E21A=UE_{32}E_{31}E_{21}A=U

에서 A=LUA=LU 꼴을 만들기 위해 다음과 같이 EE의 역행렬을 곱해준다.

A=E211E311E321UA=E_{21}^{-1}E_{31}^{-1}E_{32}^{-1}U

그러면 여기서

A=E211E311E321U=LUA=E_{21}^{-1}E_{31}^{-1}E_{32}^{-1}U = LU
E211E311E321=LE_{21}^{-1}E_{31}^{-1}E_{32}^{-1} = L

을 알 수 있다.

구체적인 예시로 한번 접근해보자.

다음은 EE에 대한 예시이다.

[100010051]E32[100210001]E21 =[1002101051]=E\underbrace{ \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -5 & 1 \end{bmatrix} }_{E_{32}} \underbrace{ \begin{bmatrix} 1 & 0 & 0 \\ -2 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} }_{E_{21}} \ = \begin{bmatrix} 1 & 0 & 0 \\ -2 & 1 & 0 \\ 10 & -5 & 1 \end{bmatrix} = E
  • 위처럼 Elimination들을 곱해보니 EA=UEA = U에서의 EE가 나왔다.
  • 그리고 위에서 E31E_{31}의 값이 10이 나온다. 왜 10이 나왔을까? 의미적으로 해석하면 다음과 같다.
  • 먼저 row2row_2에 대해서 row1row_1을 -2만큼 빼는 연산이 있었고, row3row_3에 대해서 row2row_2를 -5만큼 빼는 연산이 있었다.
  • 그리고 row2row_2row1row_1에 -2만큼 영향을 받았고 row3row_3row2row_2에 -5만큼 영향을 받았기 때문에 (-2 x -5)가 되어 10이 된다.

이제 Inverse(reverse)를 적용해보자.

[100210001][100010051] =[100210051]=L\begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 5 & 1 \end{bmatrix} \ = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 5 & 1 \end{bmatrix} = L
  • Inverse를 적용해보니 A=LUA=LU에서의 LL이 나왔다.
  • 그리고 10도 사라졌다.

따라서

EA=UEA = U
E1EA=E1UE^{-1}EA = E^{-1}U
A=E1U=LUA = E^{-1}U = LU

수식 과정을 이해할 수 있다.


하지만 위에서 했던 모든 A=LUA=LU에는 중요한 전제 조건이 하나가 있었다.
바로 행 간의 교환이 없다는 조건이다. 이 경우 행렬곱은 바로 LL(lower triangle)로 간다.
("If no row exchanges, multiplications go directly into LL.")

그렇다면 n x n 행렬에 대해서 행렬의 연산 수는 얼마나 될까?
n이 100이라고 가정해보자.

[a..................][a...0...........0...]\begin{bmatrix} a & . & . & . \\ . & . & . & . \\ . & . & . & . \\ . & . & . & . \\ - & . & . & . \end{bmatrix} \rightarrow \begin{bmatrix} a & . & . & . \\ 0 & . & . & . \\ . & . & . & . \\ . & . & . & . \\ 0 & . & . & . \end{bmatrix}
  • 위 과정에서 연산은 얼마나 많이 필요할까?
  • 아마 1002100^2만큼 연산이 필요할 것이다.

그리고 다음 과정으로,

[a...0...........0...][a...0b...0......00..]\begin{bmatrix} a & . & . & . \\ 0 & . & . & . \\ . & . & . & . \\ . & . & . & . \\ 0 & . & . & . \end{bmatrix} \rightarrow \begin{bmatrix} a & . & . & . \\ 0 & b & . & . \\ . & 0 & . & . \\ . & . & . & . \\ 0 & 0 & . & . \end{bmatrix}
  • 위 과정에서는 연산이 얼마나 많이 필요할까?
  • 아마 99299^2만큼 연산이 필요할 것이다.

이런 식으로 하다보면 n x n 행렬의 Elimination 과정에서 총 연산 수는 다음과 같이 나올 것이다.

n2+(n1)2+...+22+1213n3n^2 + (n-1)^2 + ... + 2^2 + 1^2 \approx \frac{1}{3}n^3

또 다른 예시로 n x n 행렬과 n x 1 행렬 간의 곱을 생각해보자.

[....................][.....]\begin{bmatrix} . & . & . & . \\ . & . & . & . \\ . & . & . & . \\ . & . & . & . \\ . & . & . & . \end{bmatrix} \begin{bmatrix} . \\ . \\ . \\ . \\ . \end{bmatrix}
  • 위 행렬곱 연산 수는 얼마나 될까?
  • 아마 n2n^2만큼 연산 횟수가 들 것이다.

이처럼 행 간의 교환없이 단순 계산을 하면 계산 리소스가 많이 필요할 수 있다.
그리고 강의에서는 바로 "Permutation" 개념을 소개한다.


3 x 3 행렬을 예시로 들어보자.

[100010001]\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}
  • 위 행렬에서 행들의 순서를 바꿔보자.
[100010001],[010100001],[001010100],[100001010],[010001100],[001100010]\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}, \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{bmatrix}, \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix}, \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}
  • 총 6개의 행렬 PP를 얻을 수 있다.

그렇다면 만약 4 x 4 행렬에 대해서 PP 행렬의 개수를 구하면 몇 개일까?

  • 아마 4!4!이 되어 24개가 될 것이다.

그리고 n x n 행렬에 대해서 PP 행렬의 개수는 n!n!일 것이다.

profile
천천히, 그리고 꾸준히.

0개의 댓글