Difference between revisions of "Definition:가우스 소거법"

From Beloveds
Line 21: Line 21:
 
이를 '''forward elimination'''(전진 소거)이라고 한다. 이제 행렬은 다음과 같은 upper triangular matrix가 된다:
 
이를 '''forward elimination'''(전진 소거)이라고 한다. 이제 행렬은 다음과 같은 upper triangular matrix가 된다:
  
: $\displaystyle \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ 0 & a'_{22} & \cdots & a'_{2n}  \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & c_{nn} \end{bmatrix}
+
: $\displaystyle \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ 0 & a'_{22} & \cdots & a'_{2n}  \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & a^{'\cdots'}_{nn} \end{bmatrix}
\begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n\end{bmatrix}=\begin{bmatrix} b_1 \\ b'_2 \\ \vdots \\ d_n\end{bmatrix}$
+
\begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n\end{bmatrix}=\begin{bmatrix} b_1 \\ b'_2 \\ \vdots \\ b^{'\cdots'}_n\end{bmatrix}$
  
가장 아래에서 $x_n=d_n/c_{nn}$를 바로 얻고, 이를 위로 대입해 나가면서 차례로 $x_{n-1},\ \cdots,\ x_1$까지 구하는 '''back substitution'''(후진 대입)을 통해 연립일차방정식의 해를 구할 수 있다. 이 알고리즘을 '''Gaussian elimination'''(가우스 소거법)이라고 한다.
+
가장 아래에서 $x_n=b^{'\cdots'}_{n}/a^{'\cdots'}_{nn}$를 바로 얻고, 이를 위로 대입해 나가면서 차례로 $x_{n-1},\ \cdots,\ x_1$까지 구하는 '''back substitution'''(후진 대입)을 통해 연립일차방정식의 해를 구할 수 있다. 이 알고리즘을 '''Gaussian elimination'''(가우스 소거법)이라고 한다.
  
 
== 예외 처리 ==
 
== 예외 처리 ==
 
$a_{11},\ a'_{22}$와 같은 나누는 수, 즉 pivot에서 $0$이 등장한다면, 뒤의 행에서 해당 열에 $0$이 아닌 경우가 있을 경우에 그 행과 치환하여 계산할 수 있다. 그러나 뒤의 행에서도 해당 열이 모두 $0$인 경우에, 이 연립방정식은 적당한 상수를 곱하면 좌변이 똑같아지는 행을 두 개 이상 가진다. 예를 들어 $2x+3y$와 $4x+6y$ 같은 두 좌변이 있는 것인데, 우변을 보아서 $4$와 $8$처럼 두 식이 같게 되면 연립방정식은 해가 무수히 많은 것이며, $4$와 $6$처럼 두 식이 다르게 되면 연립방정식은 해가 없는 것이다.
 
$a_{11},\ a'_{22}$와 같은 나누는 수, 즉 pivot에서 $0$이 등장한다면, 뒤의 행에서 해당 열에 $0$이 아닌 경우가 있을 경우에 그 행과 치환하여 계산할 수 있다. 그러나 뒤의 행에서도 해당 열이 모두 $0$인 경우에, 이 연립방정식은 적당한 상수를 곱하면 좌변이 똑같아지는 행을 두 개 이상 가진다. 예를 들어 $2x+3y$와 $4x+6y$ 같은 두 좌변이 있는 것인데, 우변을 보아서 $4$와 $8$처럼 두 식이 같게 되면 연립방정식은 해가 무수히 많은 것이며, $4$와 $6$처럼 두 식이 다르게 되면 연립방정식은 해가 없는 것이다.
  
편의상 성분 $a_{ij}$에서 소거한 결과를 $a'_{ij},\ c_{ij},\ d_n$같이 작성하였는데, 이를 복잡하게 $a_{ij},\ b_i$로 전개해 놓으면 pivot들의 곱이 되는 분모는 이 행렬의 '''determinant'''(행렬식)이고, 그 전개식은 $n\times n$ 행렬의 determinant를 구하는 일반적인 공식이 된다. 따라서 pivot들 중에 $0$이 있으면 $\det A=0$이며 이때 행렬 $A$를 '''singular matrix'''(특이 행렬)라고 한다.
+
편의상 성분 $a_{ij}$에서 소거한 결과를 $a^{'\cdots'}_{ij},\ b^{'\cdots'}_{i}$같이 작성하였는데, 이를 복잡하게 $a_{ij},\ b_i$로 전개해 놓으면 pivot들의 곱이 되는 분모는 행렬 $A$의 '''determinant'''(행렬식)이고, 그 전개식은 $n\times n$ 행렬의 determinant를 구하는 일반적인 공식이 된다. 따라서 pivot들 중에 $0$이 있으면 $\det A=0$이며 이때 행렬 $A$를 '''singular matrix'''(특이 행렬)라고 한다.
  
첫 번째 방정식을 제외하고 $x_1$항이 사라지게 하려면 첫 번째 방정식을 제외한 행렬의 모든 성분, 즉 $n^2-n$개의 값을 바꿔야 한다. 이와 같은 과정을 마지막 방정식까지 반복하므로 Gaussian elimination의 연산 비용은 $\displaystyle n^2-n+(n-1)^2-(n-1)+\cdots+1^2-1=\frac{n^3-n}{3}$이다. 이를 최적화할 때는 numerical instability를 고려하는 것이 좋다.<ref>https://math.stackexchange.com/questions/1645746/gaussian-elimination-algorithm-performance</ref>
+
행렬 $A$에 대해서만 생각할 때 첫 번째 방정식을 제외하고 $x_1$항이 사라지게 하려면 첫 번째 방정식을 제외한 행렬의 모든 성분, 즉 $n^2-n$개의 값을 바꿔야 한다. 이와 같은 과정을 마지막 방정식까지 반복하므로 Gaussian elimination의 연산 비용은 좌변에서 $\displaystyle n^2-n+(n-1)^2-(n-1)+\cdots+1^2-1=\frac{n^3-n}{3}$이다. 이를 최적화할 때는 numerical instability를 고려하는 것이 좋다.<ref>https://math.stackexchange.com/questions/1645746/gaussian-elimination-algorithm-performance</ref>
  
 
== LU 분해 ==
 
== LU 분해 ==
가우스 소거법의 각 과정을 주어진 행렬에 다른 행렬들이 작용하는 모습으로 서술해 보자. 예를 들어 다음 행렬
+
가우스 소거법의 각 과정을 주어진 행렬에 다른 행렬들이 작용한 결과로 묘사해 보자. 예를 들어 행렬의 곱셈
: $\displaystyle E=\begin{bmatrix} 1 & 0 & 0 \\ -k & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}$
+
: $\displaystyle \begin{bmatrix} 1 & 0 & 0 \\ -k & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33}\end{bmatrix}=\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ -ka_{11}+a_{21} & -ka_{12}+a_{22} & -ka_{13}+a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix}$
이 미지수가 세 개인 연립일차방정식 $Ax=b$에서 행렬 $A$에 작용하면
+
은 미지수가 세 개인 연립일차방정식 $Ax=b$가 주어졌을 때 첫 번째 방정식에 $k$를 곱해 두 번째 방정식에서 빼는 경우를 좌변에 한해서 보여 주고 있다. 즉 $i\neq j$일 때 $E_{ij}=k$인 행렬 $E$를 곱한다는 것은 $j$번째 행에 $k$를 곱한 것을 $i$번째 행에 더하겠다는 뜻이다. 이런 종류의 행렬 $E$를 '''elementary matrix'''(기본 행렬)라고 한다.
: $\displaystyle EA=\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ -ka_{11}+a_{21} & -ka_{12}+a_{22} & -ka_{13}+a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix}$
 
이다. 즉 첫 번째 방정식에 $k$를 곱해 두 번째 방정식에서 뺀 것과 같다. $E_{ij}=k$라는 것은 $j$번째 행에 $k$를 곱한 것을 $i$번째 행에 더하겠다는 뜻이 된다. 이러한 행렬을 '''elementary matrix'''(기본 행렬)이라고 한다.
 
  
따라서 전진 소거법으로 $Ax=b$를 $Ux=d$로 만들었다면, 적당한 기본 행렬 $E_1,\ E_2,\ E_3,\ \cdots,\ E_{(n^2-n)/2}$들이 있어서 $U=E_{(n^2-n)/2}\cdots E_3E_2E_1A$와 같이 쓸 수 있다. 이때 똑같은 $x_1$과 같은 항을 소거하는 두 행렬은 교환 법칙이 성립하는 두 행렬이지만, 다른 항을 소거하는 두 행렬은 교환 법칙이 성립하지 않는 두 행렬이 된다. 이제 $Ux=d$에서 $Ax=b$를 얻는 방법을 생각해 보자. $j$번째 행에 $k$를 곱한 것을 $i$번째 행에 더하는 행위를 상쇄하려면 $j$번째 행에 $k$를 곱한 것을 $i$번째 행에서 빼야 한다. 즉 $k$의 부호만 바꾸면 된다. 이렇게 만든 역행렬들 $E_1^{-1},\ E_2^{-1},\ \cdots E_{(n^2-n)/2}^{-1}$에 대해서 $A=E_1^{-1}E_2^{-1}\cdots \cdots  E_{(n^2-n)/2}^{-1}U$이다. 이 식을 다음과 같이 쓴다:
+
따라서 전진 소거법으로 $Ax=b$를 $Ux=c$로 만들었다면, 적당한 기본 행렬 $E_1,\ E_2,\ E_3,\ \cdots,\ E_{(n^2-n)/2}$들이 있어서 $U=E_{(n^2-n)/2}\cdots E_3E_2E_1A$와 같이 쓸 수 있다. 이때 같은 열의 항을 소거하는 두 행렬은 교환 법칙이 성립하는 두 행렬이지만, 다른 열의 항을 소거하는 두 행렬은 교환 법칙이 성립하지 않는 두 행렬이 된다. 이제 $Ux=c$에서 $Ax=b$를 얻는 방법을 생각해 보자. $j$번째 행에 $k$를 곱한 것을 $i$번째 행에 더하는 행위를 상쇄하려면 $j$번째 행에 $k$를 곱한 것을 $i$번째 행에서 빼야 한다. 즉 $k$의 부호만 바꾸면 된다. 이렇게 만든 역행렬들 $E_1^{-1},\ E_2^{-1},\ \cdots E_{(n^2-n)/2}^{-1}$에 대해서 $A=E_1^{-1}E_2^{-1}\cdots \cdots  E_{(n^2-n)/2}^{-1}U$이다. 이 식을 다음과 같이 쓴다:
 
: $A=LU$
 
: $A=LU$
$L$은 lower triangular matrix이고 $U$는 upper triangular matrix이다. 행 치환이 필요하지 않은 행렬 $A$에 대해서 '''LU decomposition'''(LU 분해)할 수 있다. LU 분해가 주어지면 $Ax=b$를 $Lc=b$$Ux=c$로 분리하여 $LUx=Lc$로 쓸 수 있고, 전진 대입을 이용하여 $c$를 구한 다음 $x$를 구하여 $n^2$의 연산 비용으로 $Ax=b$의 해를 구할 수 있다.
+
$L$은 lower triangular matrix이고 $U$는 upper triangular matrix이다. 행 치환이 필요하지 않은 행렬 $A$에 대해서 '''LU decomposition'''(LU 분해)할 수 있다. LU 분해가 주어지면 $Lc=b$에서 전진 대입으로 $c$를 구하고 $Ux=c$에서 $x$를 구할 수 있다. 그러면 $n^2$의 연산 비용으로 $Ax=b$의 해를 구할 수 있고, 좌변과 우변을 함께 생각할 필요가 없다.
  
 
=== LDU 분해 ===
 
=== LDU 분해 ===
Line 48: Line 46:
  
 
=== 치환 행렬 ===
 
=== 치환 행렬 ===
행 치환이 필요한 경우에 대응시킬 수 있는 기본 행렬은 단위 행렬에서 치환할 두 행을 바꾼 것이다. 이를 permutation matrix(치환 행렬)이라 하며, $n\times n$ 행렬마다 $n!$개가 있다.
+
$k\neq 0$일 때 $E_{ii}=k$인 행렬은 $i$번째 행에 $k$를 곱할 때 쓴다. $E_{ii}=0$는 단위 행렬에서 치환할 두 행을 바꾼 것만 허용한다. elementary matrix는 이렇게 세 가지이다. permutation matrix(치환 행렬)$n\times n$ 행렬마다 $n!$개가 있다.
 
: $\displaystyle I=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},\ P_{(1\ 2)}=\begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},\ P_{(1\ 3)}=\begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix},\ P_{(2\ 3)}=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \\ \end{bmatrix},\ P_{(2\ 3)}P_{(1\ 2)}=\begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ \end{bmatrix},\ P_{(1\ 2)}P_{(2\ 3)}=\begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ \end{bmatrix}$
 
: $\displaystyle I=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},\ P_{(1\ 2)}=\begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},\ P_{(1\ 3)}=\begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix},\ P_{(2\ 3)}=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \\ \end{bmatrix},\ P_{(2\ 3)}P_{(1\ 2)}=\begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ \end{bmatrix},\ P_{(1\ 2)}P_{(2\ 3)}=\begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ \end{bmatrix}$
따라서 치환 $P$가 필요한 경우에 LU decompostion은 $PA=LU$로 쓸 수 있다.
+
치환 $P$가 있어야 하면 LU decompostion은 $PA=LU$로 쓸 수 있다. 행 교환의 횟수는 $\det A$의 부호를 결정하며, 홀수일 때 음수이다.
  
 
== 참고 자료 ==
 
== 참고 자료 ==

Revision as of 22:47, 7 December 2022

미지수가 $n$개인 연립일차방정식

$\displaystyle \begin{cases} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1 \\a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2 \\ \quad \vdots \\a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n \end{cases}$

은 다음과 같은 행렬로 나타낼 때 $Ax=b$이다. 행렬 곱셈을 해 보면 같은 방정식을 얻을 수 있다.

$\displaystyle \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n\end{bmatrix}=\begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n\end{bmatrix}$

이 방정식의 해 $x=(x_1,\ x_2,\ \cdots,\ x_n)$를 얻기 위해서 다음과 같은 과정을 따를 수 있다.

  • 두 번째 방정식에서, 첫 번째 방정식의 양변에 $a_{21}/a_{11}$을 곱한 것을 뺀다. 즉 두 번째 방정식을 이 결과로 대체한다. 그렇다면 두 번째 방정식에 있는 $x_1$ 항이 사라진다.
  • 세 번째 방정식에서, 첫 번째 방정식의 양변에 $a_{31}/a_{11}$을 곱한 것을 뺀다. 즉 세 번째 방정식을 이 결과로 대체한다. 그렇다면 세 번째 방정식에 있는 $x_1$ 항이 사라진다.
  • 이 과정을 마지막 방정식까지 반복한다. 그러면 첫 번째 방정식을 제외하고 $x_1$ 항이 사라진다.
  • 세 번째 방정식에서, 두 번째 방정식의 양변에 $a'_{32}/a'_{22}$를 곱한 것을 뺀다. 즉 세 번째 방정식을 이 결과로 대체한다. 그렇다면 세 번째 방정식에 있는 $x_2$ 항이 사라진다.
  • 네 번째 방정식에서, 두 번째 방정식의 양변에 $a'_{42}/a'_{22}$를 곱한 것을 뺀다. 즉 네 번째 방정식을 이 결과로 대체한다. 그렇다면 네 번째 방정식에 있는 $x_2$ 항이 사라진다.
  • 이 과정을 마지막 방정식까지 반복한다. 그러면 두 번째 방정식을 제외하고 $x_2$ 항이 사라진다.
  • 위와 같은 과정을 $x_n$ 항까지 반복한다.

이를 forward elimination(전진 소거)이라고 한다. 이제 행렬은 다음과 같은 upper triangular matrix가 된다:

$\displaystyle \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ 0 & a'_{22} & \cdots & a'_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & a^{'\cdots'}_{nn} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n\end{bmatrix}=\begin{bmatrix} b_1 \\ b'_2 \\ \vdots \\ b^{'\cdots'}_n\end{bmatrix}$

가장 아래에서 $x_n=b^{'\cdots'}_{n}/a^{'\cdots'}_{nn}$를 바로 얻고, 이를 위로 대입해 나가면서 차례로 $x_{n-1},\ \cdots,\ x_1$까지 구하는 back substitution(후진 대입)을 통해 연립일차방정식의 해를 구할 수 있다. 이 알고리즘을 Gaussian elimination(가우스 소거법)이라고 한다.

예외 처리

$a_{11},\ a'_{22}$와 같은 나누는 수, 즉 pivot에서 $0$이 등장한다면, 뒤의 행에서 해당 열에 $0$이 아닌 경우가 있을 경우에 그 행과 치환하여 계산할 수 있다. 그러나 뒤의 행에서도 해당 열이 모두 $0$인 경우에, 이 연립방정식은 적당한 상수를 곱하면 좌변이 똑같아지는 행을 두 개 이상 가진다. 예를 들어 $2x+3y$와 $4x+6y$ 같은 두 좌변이 있는 것인데, 우변을 보아서 $4$와 $8$처럼 두 식이 같게 되면 연립방정식은 해가 무수히 많은 것이며, $4$와 $6$처럼 두 식이 다르게 되면 연립방정식은 해가 없는 것이다.

편의상 성분 $a_{ij}$에서 소거한 결과를 $a^{'\cdots'}_{ij},\ b^{'\cdots'}_{i}$와 같이 작성하였는데, 이를 복잡하게 $a_{ij},\ b_i$로 전개해 놓으면 pivot들의 곱이 되는 분모는 행렬 $A$의 determinant(행렬식)이고, 그 전개식은 $n\times n$ 행렬의 determinant를 구하는 일반적인 공식이 된다. 따라서 pivot들 중에 $0$이 있으면 $\det A=0$이며 이때 행렬 $A$를 singular matrix(특이 행렬)라고 한다.

행렬 $A$에 대해서만 생각할 때 첫 번째 방정식을 제외하고 $x_1$항이 사라지게 하려면 첫 번째 방정식을 제외한 행렬의 모든 성분, 즉 $n^2-n$개의 값을 바꿔야 한다. 이와 같은 과정을 마지막 방정식까지 반복하므로 Gaussian elimination의 연산 비용은 좌변에서 $\displaystyle n^2-n+(n-1)^2-(n-1)+\cdots+1^2-1=\frac{n^3-n}{3}$이다. 이를 최적화할 때는 numerical instability를 고려하는 것이 좋다.[1]

LU 분해

가우스 소거법의 각 과정을 주어진 행렬에 다른 행렬들이 작용한 결과로 묘사해 보자. 예를 들어 행렬의 곱셈

$\displaystyle \begin{bmatrix} 1 & 0 & 0 \\ -k & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33}\end{bmatrix}=\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ -ka_{11}+a_{21} & -ka_{12}+a_{22} & -ka_{13}+a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix}$

은 미지수가 세 개인 연립일차방정식 $Ax=b$가 주어졌을 때 첫 번째 방정식에 $k$를 곱해 두 번째 방정식에서 빼는 경우를 좌변에 한해서 보여 주고 있다. 즉 $i\neq j$일 때 $E_{ij}=k$인 행렬 $E$를 곱한다는 것은 $j$번째 행에 $k$를 곱한 것을 $i$번째 행에 더하겠다는 뜻이다. 이런 종류의 행렬 $E$를 elementary matrix(기본 행렬)라고 한다.

따라서 전진 소거법으로 $Ax=b$를 $Ux=c$로 만들었다면, 적당한 기본 행렬 $E_1,\ E_2,\ E_3,\ \cdots,\ E_{(n^2-n)/2}$들이 있어서 $U=E_{(n^2-n)/2}\cdots E_3E_2E_1A$와 같이 쓸 수 있다. 이때 같은 열의 항을 소거하는 두 행렬은 교환 법칙이 성립하는 두 행렬이지만, 다른 열의 항을 소거하는 두 행렬은 교환 법칙이 성립하지 않는 두 행렬이 된다. 이제 $Ux=c$에서 $Ax=b$를 얻는 방법을 생각해 보자. $j$번째 행에 $k$를 곱한 것을 $i$번째 행에 더하는 행위를 상쇄하려면 $j$번째 행에 $k$를 곱한 것을 $i$번째 행에서 빼야 한다. 즉 $k$의 부호만 바꾸면 된다. 이렇게 만든 역행렬들 $E_1^{-1},\ E_2^{-1},\ \cdots E_{(n^2-n)/2}^{-1}$에 대해서 $A=E_1^{-1}E_2^{-1}\cdots \cdots E_{(n^2-n)/2}^{-1}U$이다. 이 식을 다음과 같이 쓴다:

$A=LU$

$L$은 lower triangular matrix이고 $U$는 upper triangular matrix이다. 행 치환이 필요하지 않은 행렬 $A$에 대해서 LU decomposition(LU 분해)을 할 수 있다. LU 분해가 주어지면 $Lc=b$에서 전진 대입으로 $c$를 구하고 $Ux=c$에서 $x$를 구할 수 있다. 그러면 $n^2$의 연산 비용으로 $Ax=b$의 해를 구할 수 있고, 좌변과 우변을 함께 생각할 필요가 없다.

LDU 분해

$U$는 $L$에 비해 무거우므로, $U_{ii}$를 모두 $1$로 만들어 줄 수 있다. $D_{ii}$를 각 pivot으로 놓은 대각 행렬 $D$와, $U$의 각 행을 pivot으로 나눈 행렬 $U'$에 대해서 $U=DU'$이므로 $A=LDU'$로 쓰면 이러한 분해는 유일하다. 이때 하삼각행렬을 무겁게 하여 $Ax=b$의 해를 구할 수도 있다.[2]

치환 행렬

$k\neq 0$일 때 $E_{ii}=k$인 행렬은 $i$번째 행에 $k$를 곱할 때 쓴다. $E_{ii}=0$는 단위 행렬에서 치환할 두 행을 바꾼 것만 허용한다. elementary matrix는 이렇게 세 가지이다. permutation matrix(치환 행렬)는 $n\times n$ 행렬마다 $n!$개가 있다.

$\displaystyle I=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},\ P_{(1\ 2)}=\begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},\ P_{(1\ 3)}=\begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix},\ P_{(2\ 3)}=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \\ \end{bmatrix},\ P_{(2\ 3)}P_{(1\ 2)}=\begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ \end{bmatrix},\ P_{(1\ 2)}P_{(2\ 3)}=\begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ \end{bmatrix}$

치환 $P$가 있어야 하면 LU decompostion은 $PA=LU$로 쓸 수 있다. 행 교환의 횟수는 $\det A$의 부호를 결정하며, 홀수일 때 음수이다.

참고 자료