Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

codingfarm

LU 분해(LU factorization) 본문

수학/선형대수학

LU 분해(LU factorization)

scarecrow1992 2020. 4. 15. 17:57

행렬분해(matrix factorization)

하나의 행렬을 여러개의 행렬의 곱으로 표현하는것

ex)

[3195]=[1031][3102]

 

LU 분해(LU factorization)

A가 정사각행렬이라고 하자. L단위하삼각행렬이고 U상삼각행렬인 분해 A=LUA의  LU분해(LU factorization)라고 한다.

L은 대각성분이 1이고 위의 모든 성분이 0인 아래와 같은 형태의 행렬이다.
L=[100101]

주의

ALU분해를 가지기 위해선 행줄임의 수행에서 어떠한 행교환도 있어서는 안된다.

행교환이 없으므로 행줄임에 적용되는 모든 기본행렬은 단위하삼각행렬이다. 단위 하삼각행렬들의 역행렬과 곱은 다시 단위하삼각행렬이므로 L은 단위하삼각행렬이 된다.

행렬 U를 단지 행사다리꼴만 요구한다면 정사각행렬이 아닌 행렬에도 LU분해를 적용 할 수 있다.

개념서에 따라서는 LU분해에서 L이 하삼각행렬이고 U는 상삼각행렬인 임의의 분해 A=LU로 정의하기도 한다.

 

가우스소거법으로 행렬을 분해하여 연립방정식을 효율적으로 풀 수 있다.

가령 Ax=b 꼴의 연립방정식이 있다. An×n 행렬이다. 이 A를 행렬분해 하여 해를 손쉽게 얻을 수 있다.

 

A가 어떤 행교환도 하지 않고 행사다리꼴로 변형될 수 있는 정사각행렬이면, ALU분해를 갖는다.

 

 

LU분해의 어디가 유용한것인지 알아보자.

연립일차방정식 Ax=b를 생각해보자. 여기서, 계수행렬은 LU분해 A=LU를 갖는다. Ax=bLUx=b 또는 L(Ux)=b로 나타낼 수 있다. 만일 y=Ux로 두면, 다음의 두 단계로 x를 구할 수 있다.

1. 전진대입법으로 Ly=by에 대하여 푼다.

2. 후진대입법으로 Ux=yx에 대하여 푼다.

LU는 삼각행렬이므로 방정식을 쉽게 풀 수 있다.

 

앞선 과정에서 행렬 L을 기본행렬의 곱으로 구하였다. 하지만 이렇게 할 필요 없이 행줄임 과정 만으로 연립일차방정식의 직접 계산이 가능하다. A는 행교환을 하지 않고 행사다리꼴로 유도될 수 있다고 가정한다. 그렇다면 RikRj 형태의 기본 행변환만을 사용하면 된다. 대각성분을 1로 강제할 필요가 없기 때문에 kRi의 기본 행변환은 안해도 된다. 변환 RikRj에서 스칼라 k승수(multiplier)라고 한다.

예를통해 확인하자

행렬[213413255] 을 단위 하삼각행렬 L로 바꾸기 위한 기본 행변환은 아래와 같다.

R22R1(multiplier=2)R3+R1=R3(1)R1(multiplier=1)R3+2R2=R3(2)R2(multiplier=2)

이때 승수는 L의 대각성분 아래의 성분이다.

L=[100210121]

실제로 L21=2,L31=1,L32=2 이다.

즉, 기본 행변환 RikRjL(i,j)성분에 위치한 승수 k를 갖는다.

 

주의

이 방법은기본 행변환 RikRj시에 위로부터 아래로 그리고 왼쪽 열에서 오른쪽열로 행해져야한다. 이 규칙을 따르지 않으면 결과가 틀리게 나온다.

 

L을 만드는 다른 방법은 pivot을 이용하는것이다.

A=[213413255]R22R1[213033068]R3+R2[213033002]

첫 번째 pivot 성분은 2이므로 이것을 pivot이 속한 열의 모든 성분에다가 나누어 주면

12[242]=[121]

다음 pivot 성분은 -3으로 마찬가지로 속한 열에 있는 모든 성분에 나누어 준다.

13[36]=[12]

마지막 pivot 성분은 2이므로 속한 열에 있는 모든 성분을 나누어 준다.

12[2]=[1]

이렇게 구한 3개의 열벡터를 행렬로 나타내면

L=[121121]

 

행렬의 행사다리꼴은 유일하지 않다. 그러나 가역행렬 ALU분해 A=LU를 갖는다면 이 분해는 유일하다. 

ALU분해를 갖는 가역행렬이면, LU는 유일하다.

증명

A의 분해인 LU가 유일하지 않다고 가정한다. 즉, A=LUA=L1U1가 두 LU분해라고 가정하자. 여기서, LL1은 단위 하삼각행렬이고 UU1은 상삼각행렬이다. 사실 UU1A의 두 개의 행사다리꼴이다.

 

L기본행렬들의 곱이므로 가역이다.

 

U가 가역인지 증명하는 방법은 2가지 있다.

1. A=LUU=L1A가 될 수 있다. LA가 둘다 가역이므로 (L1A)1=A1L 로써  L1A도 가역이다. 그러므로  U1이 존재하므로 U 또한 가역이다.

2. A가 가역행렬이므로 가역행렬의 기본정리에 의해 기약 행 사다리꼴은 단위행렬 I이다. 그러므로 UL이외에 추가적인 기본행렬을 곱함으로써 I의 기약행사다리꼴로 변형될 수 있다. 따라서 U는 가역행렬이다.

 

LU가 둘다 가역이므로

L11(LU)U1=L11(L1U1)U1에서 (L11L)(UU1)=(L11L1)(U1U1) 이므로

(L11L)I=I(U1U1),

가 성립한다.

 

L{L_1}^{-1}은 둘다 기본행렬의 곱이므로 단위하삼각행렬이다. 그러므로 L{L_1}^{-1} 또한 단위하삼각행렬이다.

그리고 U는 상삼각행렬이며 U^{-1}=A^{-1}L로써 U^{-1}은 임의의 행렬 A^{-1}에 단위하삼각행렬 L을 곱한것이므로 U^{-1} 상삼각행렬이다.(수정 필요)

결국 {L_{1}}^{-1}L 는 단위하삼각행렬이며, U_1U^{-1}은 상삼각행렬이므로  {L_{1}}^{-1}L=U_1U^{-1}를 만족하는 행렬은 단위행렬 밖에 없다. 따라서 {L_1}^{-1}L=I=U_1U^{-1}=I 이므로 이 식을 이항하면 L=L_1 이고 U=U_1이다. 따라서 ALU분해는 유일하다.

 

 

P^TLU 분해(P^TLU factorization)

가우스 소거법을 적용할때, 행교환이 가능한 경우에 사용되는 행렬분해이다.

가령 A=\begin{bmatrix}1&2&-1\\3&6 &2\\-1&1&4\end{bmatrix} 에 행줄임 과정을 적용하면

A \rightarrow  B = \begin{bmatrix} 1&2&-1 \\ 0&0&5 \\ 0&3&3 \end{bmatrix}

인데 이는 상삼각행렬이 아니다. 그러나 2행과 3행을 교환하면

U = \begin{bmatrix} 1&2&-1 \\ 0&3&3 \\ 0&0&5 \end{bmatrix}

의 상삼각행렬을 얻는다.

 

U를 얻기 위해서 행한 행교환을 기본행렬 P로 표현한다.

P=\begin{bmatrix}1&0&0\\ 0&0&1\\ 0&1&0 \end{bmatrix}

 

PAU로 바꾸는 기본행렬의 곱이 E이면

EPA=U

이므로

PA=E^{-1}U=LU

즉, E^{-1}=L은 단위하삼각행렬이다.

여기서 A=(EP)^{-1}U=P^{-1}E^{-1}U=P^{-1}LU 이다.

 

일반적으로 행교환 기본행렬 P는 순서에 따른 모든 행교환행렬

P_1,P_2,\cdots,P_k의 곱 P=P_k \cdots P_2P_1이 될것이다.

이러한 행렬 P치환행렬(Permutation matrix)라고한다.

즉, 치환행렬이란 P^TLU분해에 필요한 행교환 기본행렬의 곱이다.

 

치환행렬의 예

\begin{bmatrix}0&1\\1&0 \end{bmatrix}\;\;\; \begin{bmatrix}0&0&1\\1&0&0\\0&1&0 \end{bmatrix}\;\;\; \begin{bmatrix}0&1&0&0\\ 0&0&0&1\\ 1&0&0&0\\ 0&0&1&0 \end{bmatrix}

 

P가 치환행렬이면, P^{-1}=P^T이다.

증명

P^TP=I 임을 보인다.

P^Ti번째 행은 Pi번째 열과 같고 P는 치환행렬 이므로 이들은 동일한 기본 단위벡터 e와 같다.

즉, 하나의 성분만 1이고 나머지는 모든 0인 벡터이다.

그러므로

(P^TP)_{ii}=(P^T의\;i번째\;행)(P의\;i번째\;행)=e^Te=e\cdot e=1

즉, P^TP의 대각성분은 모두 1이다.

 

한편 j \neq i이면 Pj번째 열은 P^Ti번째 열과 다른 e'벡터이다.

e\cdot e' = 0 이므로

(P^TP)_{ij}=(P^T의\;i번째\;행)(P의\;j번째\;행)=e^Te'=e\cdot e'=0

즉, 대각성분 이외의 모든 성분은 0이다.

\therefore P^TP는 단위행렬이다. 그러므로 P^{-1}=P^T 이다.

 

\begin{align*} A&=P^TLU\\ P&=P_k\cdots P_2P_1&&(P_i:i번째로\;적용한\;행교환의\;기본행렬)&\\ L&={E_1}^{-1}{E_2}^{-1}\cdots{E_k}^{-1},\;단위\;하\;삼각\;행렬&&(E_i:i번째로\;적용한\;행연산의\;기본행렬)&\\ U&=A의\;행사다리꼴,상\;삼각\;행렬 \end{align*}

 

A가 정사각행렬이라 하자, P가 치환행렬, L은 단위하삼각행렬, U는 상삼각행렬일 때, A=P^TLU로서의 A분해를 AP^TLU분해(P^TLU factorization) 이라 한다.

 

 

모든 정사각행렬은 P^TLU분해를 갖는다.

주의

가역행렬 일지라도 P^TLU분해는 유일하지 않다.

가령 [예제 3.16]을 보면 풀이와는 달리

A\begin{bmatrix}0&0&6 \\ 1&2&3\\ 2&1&4 \end{bmatrix} \overset{R_1 \Leftrightarrow R_3}{---\blacktriangleright} \begin{bmatrix}2&1&4 \\ 1&2&3\\ 0&0&6 \end{bmatrix} \overset{R_2 - \frac{1}{2}R_1}{---\blacktriangleright} \begin{bmatrix}2&1&4 \\ 1&\frac{3}{2}&1\\ 0&0&6 \end{bmatrix}

으로 R_1 \Leftrightarrow R_3 한번의 행교환 만으로 행사다리꼴을 만들수 있다.

하지만 P가 결정되면 LU는 유일하다.

 

계산적인 고려

'수학 > 선형대수학' 카테고리의 다른 글

연립일차방정식의 해  (0) 2020.05.07
부분공간  (0) 2020.05.07
역행렬(Inverse Matrix)  (0) 2020.04.01
행렬 대수  (0) 2020.04.01
연립 일차 방정식  (0) 2020.03.06
Comments