Gaussian Elimination
Lower–Upper (LU) decomposition or factorization factors a matrix as the product of a lower triangular matrix and an upper triangular matrix. The product sometimes includes a permutation matrix as well. LU decomposition can be viewed as the matrix form of Gaussian Elimination.
Introduction to LU Factorization
General steps of Gaussian Elimination:
\[
\left[ \begin{matrix}
    \times&     \times&     \times&     \times\\
    \times&     \times&     \times&     \times\\
    \times&     \times&     \times&     \times\\
    \times&     \times&     \times&     \times\\
\end{matrix} \right] \xrightarrow{\boldsymbol{L}_1}\left[ \begin{matrix}
    \times&     \times&     \times&     \times\\
    0&      \times&     \times&     \times\\
    0&      \times&     \times&     \times\\
    0&      \times&     \times&     \times\\
\end{matrix} \right] 
\]
\[
\xrightarrow{\boldsymbol{L}_2}\left[ \begin{matrix}
    \times&     \times&     \times&     \times\\
    0&      \times&     \times&     \times\\
    0&      0&      \times&     \times\\
    0&      0&      \times&     \times\\
\end{matrix} \right] \xrightarrow{\boldsymbol{L}_3}\left[ \begin{matrix}
    \times&     \times&     \times&     \times\\
    0&      \times&     \times&     \times\\
    0&      0&      \times&     \times\\
    0&      0&      0&      \times\\
\end{matrix} \right] ;
\]
\[
\Longrightarrow \boldsymbol{L}_3\boldsymbol{L}_2\boldsymbol{L}_1\boldsymbol{A}=\boldsymbol{U}
\]
Question: What is \(\boldsymbol{L} _i\) ?
In essence:
\[
\boldsymbol{x}_k=\left[ \begin{array}{c}
    x_{1k}\\
    \vdots\\
    x_{kk}\\
    x_{k+1,k}\\
    \vdots\\
    x_{mk}\\
\end{array} \right] \xrightarrow{\boldsymbol{L}_k}\left[ \begin{array}{c}
    x_{1k}\\
    \vdots\\
    x_{kk}\\
    0\\
    \vdots\\
    0\\
\end{array} \right] 
\]
Define \(l_{jk}\triangleq \frac{x_{jk}}{x_{kk}}\). Then we can do the \(\left( j \right) -l_{jk}\cdot \left( k \right)\) row reduction. Also define:
\[
\boldsymbol{L}_k\triangleq \left[ \begin{matrix}
    1&      &       &       &       &       \\
    &       \ddots&     &       &       &       \\
    &       &       1&      &       &       \\
    &       &       -l_{k+1,k}&     \ddots&     &       \\
    &       &       \vdots&     &       \ddots&     \\
    &       &       -l_{m,k}&       &       &       1\\
\end{matrix} \right] 
\]
And:
\[
\boldsymbol{L}_k\cdot \left[ \begin{array}{c}
    x_{1k}\\
    \vdots\\
    x_{kk}\\
    x_{k+1,k}\\
    \vdots\\
    x_{mk}\\
\end{array} \right] \rightarrow \left[ \begin{array}{c}
    x_{1k}\\
    \vdots\\
    x_{kk}\\
    0\\
    \vdots\\
    0\\
\end{array} \right] ;
\]
\[
\boldsymbol{L}_k=\mathbf{I}-\boldsymbol{l}_k{\boldsymbol{e}_k}^T;\boldsymbol{l}_k=\left[ \begin{array}{c}
    0\\
    \vdots\\
    0\\
    l_{k+1,k}\\
    \vdots\\
    l_{mk}\\
\end{array} \right] ,\boldsymbol{e}_k=\left[ \begin{array}{c}
    0\\
    \vdots\\
    0\\
    1_{\left( k+1\ \mathrm{position} \right)}\\
    0\\
    \vdots\\
    0\\
\end{array} \right] 
\]
Then:
\[
\boldsymbol{L}_k=\mathbf{I}-\boldsymbol{l}_k{\boldsymbol{e}_k}^T,
\]
\[
\boldsymbol{L}_{m-1}\cdots \boldsymbol{L}_2\boldsymbol{L}_1\boldsymbol{A}=\boldsymbol{U}\Longrightarrow \boldsymbol{A}={\boldsymbol{L}_1}^{-1}{\boldsymbol{L}_2}^{-1}\cdots {\boldsymbol{L}_{m-1}}^{-1}\boldsymbol{U}
\]
Note that the inverse of a lower triangular matrix is also a lower triangular matrix. The product of lower triangular matrices is also a lower triangular matrix.
Define \(\boldsymbol{L}\triangleq {\boldsymbol{L}_1}^{-1}{\boldsymbol{L}_2}^{-1}\cdots {\boldsymbol{L}_{m-1}}^{-1}\). Then:
\[
\boldsymbol{A}=\boldsymbol{LU}
\]
is the LU factorization.
Here are some useful conclusions:
\[
{\boldsymbol{L}_k}^{-1}=\mathbf{I}+\boldsymbol{l}_k{\boldsymbol{e}_k}^T
\]
\[
\Longleftarrow {\boldsymbol{L}_k}^{-1}\boldsymbol{L}_k=\left( \mathbf{I}+\boldsymbol{l}_k{\boldsymbol{e}_k}^T \right) \cdot \left( \mathbf{I}-\boldsymbol{l}_k{\boldsymbol{e}_k}^T \right) =\mathbf{I}-\boldsymbol{l}_k{\boldsymbol{e}_k}^T\boldsymbol{l}_k{\boldsymbol{e}_k}^T=\mathbf{I}
\]
Also note:
\[
{\boldsymbol{L}_k}^{-1}{\boldsymbol{L}_{k+1}}^{-1}=\left( \mathbf{I}+\boldsymbol{l}_k{\boldsymbol{e}_k}^T \right) \cdot \left( \mathbf{I}+\boldsymbol{l}_{k+1}{\boldsymbol{e}_{k+1}}^T \right) 
\]
\[
=\mathbf{I}+\boldsymbol{l}_k{\boldsymbol{e}_k}^T+\boldsymbol{l}_{k+1}{\boldsymbol{e}_{k+1}}^T+\boldsymbol{l}_k{\boldsymbol{e}_k}^T\boldsymbol{l}_{k+1}{\boldsymbol{e}_{k+1}}^T
\]
\[
=\mathbf{I}+\boldsymbol{l}_k{\boldsymbol{e}_k}^T+\boldsymbol{l}_{k+1}{\boldsymbol{e}_{k+1}}^T
\]
\[
=\left[ \begin{matrix}
    1&      &       &       &       &       &       \\
    &       \ddots&     &       &       &       &       \\
    &       &       1&      &       &       &       \\
    &       &       l_{k+1,k}&      1&      &       &       \\
    &       &       \vdots&     l_{k+2,k+1}&        \ddots&     &       \\
    &       &       \vdots&     \vdots&     &       \ddots&     \\
    &       &       l_{m,k}&        l_{m,k+1}&      &       &       1\\
\end{matrix} \right] 
\]
This is good for bookkeeping the solutions. Therefore:
\[
\boldsymbol{L}={\boldsymbol{L}_1}^{-1}{\boldsymbol{L}_2}^{-1}\cdots {\boldsymbol{L}_{m-1}}^{-1}=\left[ \begin{matrix}
    1&      &       &       &       &       \\
    l_{21}&     \ddots&     &       &       &       \\
    \vdots&     &       1&      &       &       \\
    \vdots&     &       l_{k+1,k}&      \ddots&     &       \\
    \vdots&     &       \vdots&     &       \ddots&     \\
    l_{m1}&     &       l_{m,k}&        &       &       1\\
\end{matrix} \right] ;
\]
\[
\boldsymbol{A}=\boldsymbol{LU}
\]
To solve \(\boldsymbol{Ax}=\boldsymbol{b}\), we may solve \(\boldsymbol{LUx}=\boldsymbol{b}\) instead. Define \(\boldsymbol{y}=\boldsymbol{Ux}\). We can solve two linear systems:
\[
\boldsymbol{Ly}=\boldsymbol{b}, \boldsymbol{Ux}=\boldsymbol{y}
\]
Steps of Gaussian Elimination
Algorithm ( Simple Gaussian Elimination (GE) ):
( Given \(\boldsymbol{A}\), we output \(\boldsymbol{L}, \boldsymbol{U}\). )
Let \(\boldsymbol{U}=\boldsymbol{A},\boldsymbol{L}=\mathbf{I}\) first;
For \(k=1,2,\cdots ,m-1\):
- For \(j=k+1,k+2,\cdots ,m\):
- \(l_{j,k}=\frac{u_{j,k}}{u_{k,k}}\);
- \(u_{j,k:m}=u_{j,k:m}-l_{j,k}\cdot u_{k,k:m}\);
 
- End;
End
There are actually three loops for this algorithm.
Question: What is the cost of the algorithm?
We measure the computational complexity by the number of flops (floating point operations):
\[
\sum_{k=1}^{m-1}{\sum_{j=k+1}^m{2\left( m-k+1 \right) +1}}\approx \frac{2}{3}m^3+O\left( m^2 \right) 
\]
Therefore, the cost of LU factorization is \(O\left( m^3 \right)\).
Forward and Backward Substitution
Consider \(\boldsymbol{Ly}=\boldsymbol{b}\), we do Forward Substitution:
For \(j=1,2,\cdots ,m\):
\[
y_j=b_j-\sum_{k=1}^{j-1}{l_{kj}y_k}
\]
End. The cost for it is \(O\left( m^2 \right)\).
Consider \(\boldsymbol{Ux}=\boldsymbol{y}\), we do Backward Substitution:
For \(j=m,m-1,\cdots ,1\):
\[
x_j=\frac{1}{r_{jj}}\left( y_j-\sum_{k=j+1}^m{x_kr_{jk}} \right) 
\]
Evaluation
Gaussian-Elimination (Native) is not stable!
e.g., Matrix \(\boldsymbol{A}=\left[ \begin{matrix}
    0&      1\\
    1&      1\\
\end{matrix} \right]\) fails at the first step.
e.g., For matrix
\[
\boldsymbol{A}=\left[ \begin{matrix}
    10^{-20}&       1\\
    1&      1\\
\end{matrix} \right] 
\]
Apply GE, we get:
\[
\boldsymbol{L}=\left[ \begin{matrix}
    1&      0\\
    10^{20}&        1\\
\end{matrix} \right] ,\boldsymbol{U}=\left[ \begin{matrix}
    10^{-20}&       1\\
    0&      1-10^{20}\\
\end{matrix} \right] 
\]
However, in computer representation, the actual matrix might be like:
\[
\tilde{\boldsymbol{L}}=\left[ \begin{matrix}
    1&      0\\
    10^{20}&        1\\
\end{matrix} \right] ,\tilde{\boldsymbol{U}}=\left[ \begin{matrix}
    10^{-20}&       1\\
    0&      -10^{20}\\
\end{matrix} \right] 
\]
Then:
\[
\tilde{\boldsymbol{L}}\tilde{\boldsymbol{U}}=\left[ \begin{matrix}
    10^{-20}&       1\\
    1&      0\\
\end{matrix} \right] \ne \boldsymbol{A}
\]
A small mistake can lead to a large perturbation.
Solution to this problem is partial pivoting.