这一章节是我觉得整个矩阵论中,最有趣的章节之一。
三角矩阵的几何意义
Takeaway:
三角矩阵的几何含义就是按照坐标顺序,逐层发生的线性变换,也可以看作缩放变换与剪切变换的结合。
二维情况下,如果对角线的元素为1,那么上三角矩阵代表一个水平剪切的线性变换,而下三角矩阵就代表着一个竖直剪切的线性变换。
三角矩阵可以看作缩放变换和剪切变换的加和,那么只有缩放变换部分改变有向面积的大小,故行列式只与对角元素有关。
在讲矩阵分解的第一种分解——三角分解之前,我想简要地谈一谈三角矩阵的几何意义。
实际上,在我们之前谈论Jordan标准型的时候,就已经大概说明了三角矩阵的含义:
首先假设我们有了一个$n$阶Jordan块,那么我们的基要满足什么样的条件——对于每一个基,向量在上面的变换,都可以看作该方向上的缩放和在前一个方向的平移分量。
那么三角矩阵的几何含义其实就相当于Jordan块的一种推广,三角矩阵代表着一种按照坐标顺序,逐层发生的线性变换。您可以把它看作一种有单向依赖的结构。
口说无凭,我们来举几个例子吧,首先是上三角矩阵,假设一个上三角矩阵为:
$$ U=\begin{bmatrix} a & b\\ 0 & d\\ \end{bmatrix} $$
当它作用在一个向量上:
$$ U \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} ax+by\\ dy \end{bmatrix} $$
也就是说:
$$ x'=ax+by $$
$$ y'=dy $$
这里我们看到,新的纵轴坐标,是只由原来的纵轴坐标决定的;而新的横轴坐标,就要由原来的横轴坐标和纵轴坐标一起来决定。也就是说,如果原来的向量,高度越高,那么它对于变换之后,横轴的分量的影响可能就要稍微大一些。如果$a=d=1$,那么这个上三角矩阵就是一个典型的水平剪切矩阵,点的高度不变,但是横轴的分量却要发生改变。
我们再来举一个下三角矩阵的例子,假设一个下三角矩阵为:
$$ L = \begin{bmatrix} a & 0 \\ c & d \end{bmatrix} $$
当它作用到一个向量的时候,比如:
$$ L \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} ax\\ cx+dy \end{bmatrix} $$
也就是说:
$$ x'=ax $$
$$ y'=cx+dy $$
这次结构反过来了,这里,横轴方向的分量只由原来的横轴分量决定,但是纵轴方向的分量却由原来的横轴分量和纵轴分量一起决定。同样的,当$a=d=1$,那么向量的水平坐标不变,而竖直方向上的坐标就改变了,这就形成了一个竖直剪切矩阵。
那么三角矩阵也可以看作一个对角矩阵和另一个矩阵的加和,那么对角矩阵就代表单纯的缩放变换,那么另一个矩阵就代表着不同方向上的剪切操作。那么这个看法也可以很好地帮助我们理解三角矩阵的行列式的值,只与对角线元素有关——因为只有缩放变换会影响有向面积的大小,而剪切变换不会。
三角分解
Takeaway:
由于三角矩阵把变量拆成了有序依赖的形式,所以便利于我们求解线性方程组。
LDR分解相当于把矩阵拆成了剪切-缩放-剪切的一个变换链。
对于我们之前的例子,比如上三角的例子,我们发现,这很利于我们求解线性方程组,当我们求解:
$$ Ux=b $$
的时候,我们只需要求出$x$的最后一个元素,然后逐层往回代入即可。因为对于上三角矩阵,我们把$x$的求解,拆成了$x_1\to x_2\to \cdots\to x_n$的形式,这里的箭头代表依赖关系。我们把本来没有顺序、没有规律的变量,变成了一种有序的依赖关系。当然,很多时候,我们求解的线性方程组是:
$$ Ax=b $$
这里面的矩阵$A$往往不是一个上三角矩阵或者下三角矩阵,为了依靠三角矩阵的便利性,我们可以将矩阵$A$拆成两个三角矩阵:
$$ A=UL $$
那么当我们求解:
$$ Ax=b $$
的时候,就相当于求解:
$$ ULx=b $$
那么我们先求解:
$$ Uz=b $$
然后再求解:
$$ Lx=z $$
即可。那么把一个矩阵拆成两个三角矩阵的方法,就叫做矩阵的三角分解。
三角分解这部分通常会涉及到三个分解方法:Crout分解、Doolittle分解和LDR分解,前两个分解笔者觉得没有太大意思,主要来谈一谈LDR分解。LDR分解是把一个矩阵分解为下三角矩阵(对角为1)、对角矩阵和上三角矩阵(对角为1)的乘积,那么这个分解的几何意义其实非常直观,先做一个上三角矩阵的变换,也就是水平剪切,再做一个缩放,最后再进行一个竖直剪切。LDR分解把缩放和剪切变换分隔开来,不像Crout分解和Doolittle分解那样,把两个变换揉在了一起。这样的一种——把一个变换拆成若干变换的组合——思想,我们在后面的SVD分解中依然会遇到。
三角分解到这里还没结束,因为我们还没有涉及到如何给一个矩阵做三角分解,如何将其分解。我们对一个矩阵做三角分解的步骤通常是这样的,解方程:
$$ Ax=b $$
的时候,我们先用高斯消元法,把系数矩阵变成一个上三角矩阵,也就是:
$$ TA=U $$
于是:
$$ A=T^{-1}U=LU $$
其实在这个过程中,高斯消元本身就是对矩阵的变换,进行一个坐标层面的拆解。因为,高斯消元法用前面的行向量去剪切后面的行向量,使得后面的行在某些坐标方向上的分量变成0,从而得到一个坐标层面的依赖关系。