logo

PLU 분해 📂행렬대수

PLU 분해

정의 1 2

순열 행렬 PTP^{T}가역행렬 ARn×nA \in \mathbb{R}^{n \times n} 에 대해, 그들의 행렬곱 PTAP^{T} ALU 분해AAPLU 분해permutation LU decomposition라 한다. PP 는 순열 행렬이므로 직교행렬P1=PTP^{-1} = P^{T} 이고, 따라서 다음과 같이 나타낼 수 있다. PTA=LU    A=PLU P^{T} A = LU \iff A = PLU

설명

LU 분해의 알고리즘: (aij)Rn×n(a_{ij}) \in \mathbb{R}^{n \times n} 가 가역행렬이라고 하자.

Step 1. k=1k = 1

u1j=a1ju_{1j} = a_{1j} 을 대입하고 li1=1u11ai1\displaystyle l_{i1} = {{1} \over {u_{11}}} a_{i1} 을 계산한다.


Step 2. k=2,3,,n1k = 2, 3, \cdots , n-1

  • Step 2-1. 다음을 계산한다. ukk=akks=1k1lksusk u_{kk} = a_{kk} - \sum_{s = 1}^{k-1} l_{ks} u_{sk}
  • Step 2-2. j=k+1,k+2,,n1j = k+1 , k+2 , \cdots , n-1 에 대해 다음을 계산한다. ukj=akjs=1k1lksusj u_{kj} = a_{kj} - \sum_{s = 1}^{k-1} l_{ks} u_{sj}
  • Step 2-3. i=k+1,k+2,,n1i = k+1 , k+2 , \cdots , n-1 에 대해 다음을 계산한다. lik=1ukk{aiks=1k1lisusk} l_{ik} = {{ 1 } \over {u_{kk} }} \left\{ a_{ik} - \sum_{s = 1}^{k-1} l_{is} u_{sk} \right\}

Step 3. k=nk = n 에 대해 다음을 계산한다. unn=anns=1n1lnsusn u_{nn} = a_{nn} - \sum_{s = 1}^{n-1} l_{ns} u_{sn}

행렬의 LU 분해를 위해서는 위와 같이 u11=a11u_{11} = a_{11} 혹은 ukku_{kk} 의 역수를 취할 수 있어야하나, 단순히 A=[0321] A = \begin{bmatrix} 0 & 3 \\ 2 & 1 \end{bmatrix} 과 같은 행렬조차 이 알고리즘을 적용할 수 없다. 이에 따라 LU 분해를 수행할 수 있게끔 어떤 순열 행렬 PTP^{T} 를 곱해주고, 아예 AAPLUPLU 로 나타내는 것을 PLU 분해라고 부른다. 물론 좌냐 우냐, 행이냐 열이냐가 중요한 것은 아니기 때문에 APT=LU    A=LUP A P^{T} = LU \iff A = LUP 이라 두고 LUP 분해라 읽어도 딱히 상관 없다.