数值计算笔记之线性方程组的直接解法(二)矩阵的三角分解法(LU分解)

一、矩阵的三角分解法

定义:矩阵 A 分解为一个单位下三角阵(L)和一个上三角阵(U)的乘积的形式,称为对 A 三角分解。即:

A = L\cdot U

其中,L = \begin{bmatrix} 1 & & & \\ l_{21} & 1& & \\ \vdots &\vdots & 1 & \\ l_{n1}&l_{n2} & \cdots & 1 \end{bmatrix},   U=\begin{bmatrix} u_{11} & \cdots & &u_{1n} \\ &u_{22} & &\vdots \\ & & \ddots &\vdots \\ & & & u_{nn} \end{bmatrix}

现考虑方程组:AX=b ,设A=L\cdot U ,则

AX=b \Rightarrow L\cdot UX=b \Leftrightarrow \left\{\begin{matrix} UX=Y\cdots \cdots 1\\ LY=b \cdots \cdots 2\end{matrix}\right.  ,通过 2 式求得Y 的解,然后带入 1 式,求得 X 的解。因为 1、2 式都是关于三角矩阵的求解,所以求解过程很方便简单。

二、消去法与三角分解

\begin{bmatrix} a_{11} &\cdots &\cdots &a_{1n} \\ a_{21}&\cdots &\cdots & a_{2n}\\ \vdots & \vdots &\vdots & \vdots \\ a_{n1} &\cdots &\cdots & a_{nn} \end{bmatrix} \Rightarrow \begin{bmatrix} * & \cdots & &* \\ & * & \ddots & \\ & & * &\vdots \\ & & & * \end{bmatrix}

设把第一行 乘以 (-l_{i1})  (i=2,3,\cdots ,n),加到 第 i 行上,把 a_{i1} 变成 0. 即通过行变换把 a_{i1} 变成 0。

左乘行变换,右乘列变换。即

L_{1}\cdot A= \begin{bmatrix} 1 & & & \\ -l_{21}& 1 & & \\ \vdots & 0 & 1& \\ -l_{n1} & \cdots & 0 & 1 \end{bmatrix} \cdot A= \begin{bmatrix} * &* &* &* \\ 0 & * &\ddots &\vdots \\ \vdots & \vdots & \cdots &* \\ 0 &* &\cdots & * \end{bmatrix} ,可以发现,要化为上三角需要 n-1 步。

\therefore 消去过程用矩阵表示为:L_{n-1}\cdots L_{2}\cdot L_{1}\cdot A=U

\therefore A=L_{1}^{-1}\cdot L_{2}^{-1}\cdots L_{n-1}^{-1}\cdot U

三、解线性方程组的LU分解法

定理:(矩阵的LU分解定理)

  • 若 n 阶方阵 A 的各阶主子式均不为零,则存在唯一的单位下三角阵 L 和上三角阵 U,使 A = L U

设 A=\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} ,则

  1. u_{1j}=a_{1j}                              (j=1,2,\cdots ,n)                 l_{i1} = \frac{a_{i1}}{u_{11}}                                      (i=2,3,\cdots ,n)
  2. u_{rj}=a_{rj} - \sum_{k=1}^{r-1}l_{rk}\cdot u_{kj}    (j=1,2,\cdots ,n)                 l_{ir} = \frac{a_{ir} - \sum_{k=1}^{r-1}l_{ik}\cdot u_{kr}}{u_{rr}}       (i=2,3,\cdots ,n)

如下:

A=\begin{bmatrix} a_{11} &a_{12} &\cdots & \cdots &a_{1n} \\ a_{21} & a_{22} &\cdots & \cdots &a_{2n} \\ a_{31}& a_{32}& a_{33} & \cdots &a_{3n} \\ \vdots & \vdots & & \ddots &\vdots \\ a_{n1}&a_{n2} &\cdots &a_{n,n-1} & a_{nn} \end{bmatrix}       \rightarrow \begin{bmatrix} u_{11} &u_{12} & \cdots &\cdots &u_{1n} \\ l_{21} &u_{22} & \cdots &\cdots & u_{2n}\\ l_{31} &l_{32} &u_{33} & \cdots &u_{3n} \\ \vdots & & & \ddots &\vdots \\ l_{n1} &l_{n2} & \cdots &l_{n,n-1} &u_{nn} \end{bmatrix}

第一步,如下:

1、u_{1j}=a_{1j}   (j=1,2,\cdots ,n)  ,没有变化

2、l_{i1} = \frac{a_{i1}}{u_{11}}   (i=2,3,\cdots ,n)

数值计算笔记之线性方程组的直接解法(二)矩阵的三角分解法(LU分解)_第1张图片             数值计算笔记之线性方程组的直接解法(二)矩阵的三角分解法(LU分解)_第2张图片

第二步,如下:

u_{22}=a_{22}-l_{21}\cdot u_{12}           u_{23} = a_{23}-l_{21}\cdot u_{13}     \cdots    即  减去u所在 列,所在行 对应的上级所有 l 与 u 的乘积。

 算 l 同上的基础上,在除以所在列的 u_{kk}

数值计算笔记之线性方程组的直接解法(二)矩阵的三角分解法(LU分解)_第3张图片           数值计算笔记之线性方程组的直接解法(二)矩阵的三角分解法(LU分解)_第4张图片

以后重复第二步,不过再算 ul 的时候,减去的是:所在 列,所在行 对应的上级所有 l 与 u 的乘积 的和。

举个例子:

A=\begin{bmatrix} 2 & 2 &3 \\ 4 & 7& 7\\ -2& 4& 5 \end{bmatrix} 作 LU 分解

解:A=\begin{bmatrix} 2 & 2 &3 \\ 4 & 7& 7\\ -2& 4& 5 \end{bmatrix} =\begin{bmatrix} 2 & 2 & 3\\ \frac{4}{2}& 7& 7\\ \frac{-2}{2} & 4& 5 \end{bmatrix} = \begin{bmatrix} 2 & 2&3 \\ \frac{4}{2} & 7-\frac{4}{2}\cdot 2&7-\frac{4}{2}\cdot 3 \\ \frac{-2}{2}& \frac{4-(-2)}{3} & 5-(-3+2) \end{bmatrix}  = \begin{bmatrix} 2 &2 &3 \\ 2 &3 & 1\\ -1&2 &6 \end{bmatrix}

\therefore L=\begin{bmatrix} 1 & & \\ 2& 1& \\ -1 & 2& 1 \end{bmatrix}, U=\begin{bmatrix} 2 &2 &3 \\ & 3& 1\\ & & 6 \end{bmatrix}​​​​​​

你可能感兴趣的:(数值计算)