4.1 关于转置和取逆的有一些性质
- $(\boldsymbol{A}\boldsymbol{B})^T = \boldsymbol{B}^T\boldsymbol{A}^T$
- $(\boldsymbol{A}\boldsymbol{B})^{-1} = \boldsymbol{B}^{-1}\boldsymbol{A}^{-1}$
\[ \begin{gather*}
\boldsymbol{A}\boldsymbol{A}^{-1} = \boldsymbol{I} = \boldsymbol{A}^{-1}\boldsymbol{A} \\
\Downarrow \\
\boldsymbol{A}(\boldsymbol{B}\boldsymbol{B}^{-1})\boldsymbol{A}^{-1} = \boldsymbol{I} \\
\Downarrow \\
(\boldsymbol{A}\boldsymbol{B})(\boldsymbol{B}^{-1}\boldsymbol{A}^{-1}) = \boldsymbol{I}\\
\Downarrow \\
(\boldsymbol{A}\boldsymbol{B})^{-1} = \boldsymbol{B}^{-1}\boldsymbol{A}^{-1}
\end{gather*} \]
- $(\boldsymbol{A}^T)^{-1} = (\boldsymbol{A}^{-1})^T$
\[ \begin{gather*}
(\boldsymbol{A} \boldsymbol{A}^{-1})^T = \boldsymbol{I}^T \\
\Downarrow \\
(\boldsymbol{A}^{-1})^T \boldsymbol{A}^T = \boldsymbol{I} \\
\Downarrow \\
(\boldsymbol{A}^T)^{-1} = (\boldsymbol{A}^{-1})^T
\end{gather*} \]
如果 $\boldsymbol{A}$ 是对称矩阵,即$\boldsymbol{A}^T = \boldsymbol{A}$,则进一步有$\boldsymbol{A}^{-1} = (\boldsymbol{A}^{-1})^T$,即有对称矩阵的逆也是对称的 。
4.2 LU 分解
很多线性代数问题最后都可以归结为矩阵分解问题,$\boldsymbol{L}\boldsymbol{U}$ 分解是最简单,最重要的一个。利用高斯消元法,可以把一个矩阵 $\boldsymbol{A}$分解为一个上三角矩阵( $\boldsymbol{U}$ )和一个下三角矩阵( $\boldsymbol{L}$ ),即$\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ ,简称$\boldsymbol{L}\boldsymbol{U}$ 分解。下面的等式展示了分解后的效果。
\[ \boldsymbol{A}=\begin{bmatrix}
\blacksquare & 0 & 0 & 0 \\
\blacksquare & \blacksquare & 0 & 0 \\
\blacksquare & \blacksquare & \blacksquare & 0 \\
\blacksquare & \blacksquare & \blacksquare & \blacksquare
\end{bmatrix}
\begin{bmatrix}
\blacksquare & \blacksquare & \blacksquare & \blacksquare \\
0 & \blacksquare & \blacksquare & \blacksquare \\
0 & 0 & \blacksquare & \blacksquare \\
0 & 0 & 0 & \blacksquare
\end{bmatrix}
=\begin{bmatrix}
1 & 0 & 0 & 0 \\
\blacksquare & 1 & 0 & 0 \\
\blacksquare & \blacksquare & 1 & 0 \\
\blacksquare & \blacksquare & \blacksquare & 1
\end{bmatrix}
\begin{bmatrix}
\blacksquare & \blacksquare & \blacksquare & \blacksquare \\
0 & \blacksquare & \blacksquare & \blacksquare \\
0 & 0 & \blacksquare & \blacksquare \\
0 & 0 & 0 & \blacksquare
\end{bmatrix} \]
举个列子,对于一个 $2 \times 2$ 矩阵$\boldsymbol{A}=\begin{bmatrix}2&1\\8&7\end{bmatrix}$ :
- 通过高斯消元可以得到一个上三角矩阵( $\boldsymbol{U}$ ):
\[ \begin{array}{ccc}
\boldsymbol{A} & & \boldsymbol{U} \\
\begin{bmatrix}2&1\\8&7\end{bmatrix}
& \xrightarrow{\text{消元}} &
\begin{bmatrix}2&1\\0&3\end{bmatrix}
\end{array} \]
使用消元矩阵表示为:
\[ \begin{array}{cccc}
\boldsymbol{E} & \boldsymbol{A} & & \boldsymbol{U} \\
\begin{bmatrix}1&0\\-4&1\end{bmatrix}
&
\begin{bmatrix}2&1\\8&7\end{bmatrix}
&
=
&
\begin{bmatrix}2&1\\0&3\end{bmatrix}
\end{array} \]
即我们通过消元得到了$\boldsymbol{E}\boldsymbol{A}=\boldsymbol{U}$ 。
- 要得到 $\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ ,我们只需要在$\boldsymbol{E}\boldsymbol{A}=\boldsymbol{U}$ 的基础上,将等式两边同时乘以 $\boldsymbol{E}^{-1}$(即 $\boldsymbol{E}^{-1}$ 就是 $\boldsymbol{L}$)即可:
我们使用前面提到的Gauss-Jordan法来计算矩阵 $\boldsymbol{E}$ 的逆为$\boldsymbol{E}^{-1}=\begin{bmatrix}1&0\\4&1\end{bmatrix}$ ,我们可以得到:
\[ \begin{array}{cccc}
\boldsymbol{A} & & \boldsymbol{L} & \boldsymbol{U} \\
\begin{bmatrix}2&1\\8&7\end{bmatrix}
&
=
&
\begin{bmatrix}1&0\\4&1\end{bmatrix}
&
\begin{bmatrix}2&1\\0&3\end{bmatrix}
\end{array} \]
这样就完成了一次 $\boldsymbol{L}\boldsymbol{U}$ 分解:$\boldsymbol{U}$ 是上三角矩阵,主对角线是主元,$\boldsymbol{L}$ 是下三角矩阵,主对角线上都是1。有时候我们需要把主元单独拉出来组成一个对角矩阵,变成这样:
\[ \begin{array}{ccccc}
\boldsymbol{A} & \mbox{ } & \boldsymbol{L} & \boldsymbol{D} & \boldsymbol{U}^\prime \\
\begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix}
& = &
\begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix}
&
\begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix}
&
\begin{bmatrix} 1 & \frac{1}{2} \\ 0 & 1 \end{bmatrix}
\end{array} \]
4.3 LU 分解的前提
并非所有矩阵都能进行 $\boldsymbol{L}\boldsymbol{U}$ 分解,能够 $\boldsymbol{L}\boldsymbol{U}$ 分解的矩阵需要满足以下三个条件:
- 矩阵是方阵( $\boldsymbol{L}\boldsymbol{U}$ 分解主要是针对方阵);
- 矩阵是可逆的,也就是该矩阵是满秩矩阵,每一行都是独立向量;
- 消元过程中没有 $0$ 主元出现,也就是消元过程中不能出现行交换的初等变换。
4.4 LU 分解的计算量
将一个 $n$ 阶方阵 $\boldsymbol{A}$ 变换为$\boldsymbol{L}\boldsymbol{U}$ 需要的计算量估计:
- 将第一列中主对角线以下的元素变为 $0$ 。
以第二行为例,为了使第一个元素为 $0$ ,需要让第一行乘以某个数(第一行 $n$ 个元素,共进行了 $n$ 次乘法运算),再将第一行和第二行相加或相减(第二行 $n$ 个数与第一行的 $n$ 个数相加,共进行了 $n$ 次加法运算)。
因此,第二行的消元共进行了 $2n$ 次运算。共有 $n-1$ 行需要类似运算,所以第一次消元共进行了 $2 \times n(n - 1) \approx 2 \times n^2$ 次运算。这一次消元达到的效果如下(其中 $\blacksquare$ 是矩阵中原本的元素,$\triangle$ 是在消元操作中被改变过的元素,$0$ 是操作达到的效果):
\[ \begin{bmatrix}
\blacksquare & \blacksquare & \cdots & \blacksquare \\
\blacksquare & \blacksquare & \cdots & \blacksquare \\
\vdots & \vdots & \ddots & \vdots \\
\blacksquare & \blacksquare & \cdots & \blacksquare
\end{bmatrix}
\xrightarrow{\mbox{消元}}
\begin{bmatrix}
\blacksquare & \blacksquare & \cdots & \blacksquare \\
0 & \triangle & \cdots & \triangle \\
0 & \vdots & \ddots & \vdots \\
0 & \triangle & \cdots & \triangle
\end{bmatrix} \]
- 以此类推,接下来每一步计算量约为$2 \times (n-1)^2$ 、$2 \times (n-2)^2$ 、$\cdots$ 、$2 \times 2^2$ 、$2 \times 1^2$ ;
- 则将 $\boldsymbol{A}$ 变换为 $\boldsymbol{L}\boldsymbol{U}$ 的总运算量应为$O(2 \times n^2+2 \times (n-1)^2+\cdots+2 \times 2^2+2 \times 1^2)$ ,即 $O(\frac{2n^{3}}{3})$ 。
4.5 LU 分解的作用
对于 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ ,我们可以看一下使用高斯消元法求解和利用$\boldsymbol{L}\boldsymbol{U}$ 分解来求解的过程。
- 使用高斯消元法求解:
- 直接根据 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ 进行求解。 对应的操作为:$\left[\begin{array}{c|c}\boldsymbol{A} & \boldsymbol{b}\end{array}\right]\xrightarrow{\text{消元}}\left[\begin{array}{c|c}\boldsymbol{I} & \boldsymbol{x}\end{array}\right]$ 。
- 利用 $\boldsymbol{L}\boldsymbol{U}$ 分解来求解:
- 将$\boldsymbol{A}$ 分解为$\boldsymbol{L}\boldsymbol{U}$ ,即$\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 。此时 $\boldsymbol{L}$ 、 $\boldsymbol{U}$ 和$\boldsymbol{b}$ 都是已知的了。
- 根据$\begin{cases}\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} \\\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U} \end{cases}$ ,有$\boldsymbol{L}\boldsymbol{U}\boldsymbol{x}=\boldsymbol{b}$ 。令 $\boldsymbol{y}=\boldsymbol{U}\boldsymbol{x}$ ,有$\boldsymbol{L}\boldsymbol{y}=\boldsymbol{b}$ ,我们根据该式子可求解出 $\boldsymbol{y}$ 。对应的操作为:$\left[\begin{array}{c|c}\boldsymbol{L} & \boldsymbol{b}\end{array}\right]\xrightarrow{\text{消元}}\left[\begin{array}{c|c}\boldsymbol{I} & \boldsymbol{y}\end{array}\right]$ 。
- 根据$\boldsymbol{U}\boldsymbol{x}=\boldsymbol{y}$求解出 $\boldsymbol{x}$ 。对应的操作为:$\left[\begin{array}{c|c}\boldsymbol{U} & \boldsymbol{y}\end{array}\right]\xrightarrow{\text{消元}}\left[\begin{array}{c|c}\boldsymbol{I} & \boldsymbol{x}\end{array}\right]$ 。
可以结合下面这张图来理解上面的两种求解过程。
$\boldsymbol{L}\boldsymbol{U}$ 分解法本身就可以看做是从高斯消元法演变出来的,对线性方程组 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ 的系数矩阵$\boldsymbol{A}$ 进行 $\boldsymbol{L}\boldsymbol{U}$分解这个操作就需要大约 $\frac{2n^{3}}{3}$ 次运算。这只是将系数矩阵 $\boldsymbol{A}$ 进行$\boldsymbol{L}\boldsymbol{U}$ 分解,还没进行后续对 $x$ 的求解。而高斯消元法整个的运算量大约是 $\frac{2n^{3}}{3}$ 次,所以 $\boldsymbol{L}\boldsymbol{U}$ 分解法耗时比高斯消元法长是必然的。
$\boldsymbol{L}\boldsymbol{U}$ 分解法的优势是,当左侧的系数矩阵 $\boldsymbol{A}$ 一定,可以使得每一个形如 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$的方程组的求解过程变得更为简单。
在求解$\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b_1}$ 、$\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b_2}$ 、... 、$\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b_k}$这一系列线性方程组时,只需要替换右侧向量,而每次通过 $\boldsymbol{L}$ 、 $\boldsymbol{U}$ 矩阵进行求解的复杂度只有$O(n^2)$ ,这比使用高斯消元法每次求解都需要 $O(n^3)$ 复杂度运算要方便。即,如果使用系数矩阵 $\boldsymbol{A}$ 进行 $k$ 次求解,$\boldsymbol{L}\boldsymbol{U}$ 分解法需要进行$O(n^3) + kO(n^2)$ 复杂度运算,而高斯消元法需要进行 $kO(n^3)$ 复杂度的运算。
4.6 允许行交换的 LU 分解
对于 $\boldsymbol{L}\boldsymbol{U}$ 分解,我们在前面限制了对系数矩阵中行的互换,但如果不可避免的必须进行行互换,只需要把 $\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 变成$\boldsymbol{P}\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 就可以了,其中 $\boldsymbol{P}$ 是置换矩阵 。
实际上所有的 $\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 都可以写成$\boldsymbol{P}\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 的形式,当 $\boldsymbol{A}$ 没有行互换时, $\boldsymbol{P}$ 就是单位矩阵。
在下一讲的置换矩阵中叙述了置换矩阵的性质有$\boldsymbol{P}^T = \boldsymbol{P}^{-1}$,所以$\boldsymbol{A}=\boldsymbol{P}^{-1}\boldsymbol{L}\boldsymbol{U}=\boldsymbol{P}^T\boldsymbol{L}\boldsymbol{U}$ 。