分块矩阵的行列式与Schur补

Vandermonde矩阵是一个很特殊的矩阵,元素的分布很有规律。对于那些更“混乱”的矩阵,要求它们的行列式,将它们分块是一个很好的方法——尤其是当它们特别大的时候。
如何分块?
在矩阵里随意地划分一些横线与竖线,就完成了对矩阵的分块。例如:

 \begin{bmatrix} \begin{array}{cc|cc} 1 & 2 & 7 & 12 \\ \hline 5 & 2 & 7 & 10 \\ 10 & 4 & 21 & 23 \\ 8 & 9 & 13 & -5  \end{array} \end{bmatrix}
这个矩阵就被分为了四块,我们记作:
 M = \begin{bmatrix} \begin{array}{c|c} A & B\\ \hline C & D \end{array} \end{bmatrix}
其中,A = \begin{bmatrix} 1 & 2 \end{bmatrix} , B = \begin{bmatrix} 7 & 12 \end{bmatrix} , C = \begin{bmatrix} 5 & 2 \\ 10 & 4 \\ 8 & 9 \end{bmatrix} , D = \begin{bmatrix} 7 & 10 \\ 21 & 23 \\ 13 & -5 \end{bmatrix} .

于是一个稍大的矩阵被我们拆解为了几个较小的矩阵,但是……这和我们需要计算矩阵的行列式有什么关系呢?
以及,矩阵在分块的时候是可以任意分划吗?有没有什么要求呢?
我们一步步来。首先,我们回想一下最简单,最方便的矩阵行列式计算方法。
那便是上(下)三角矩阵的计算方法,只需要将对角线上的元素相乘即可。现在,我们能不能将这个方法扩展到分块矩阵上呢?也即对于\begin{bmatrix} A & B \\ 0 & D \end{bmatrix}形式的矩阵,我们能否直接将A与D的行列式相乘得到结果?
答案当然是可以,不过我们首先要满足一个条件:保形。
也即A与D能够相乘,满足矩阵乘法的条件——A_{a*b} , D_{b*c}.(严格来说,这是对乘法保形的)。
接下来证我们的猜想:\begin{vmatrix} A & B \\ 0 & D \end{vmatrix} = det(A)det(D)
证:
(注:以下算式中,矩阵都是对乘法保形的,因此没有再注明它们的大小)
注意观察到等式右边是两个行列式的积,而左边是一个行列式。
根据行列式的乘积法则:多个行列式的积等于其对应矩阵积的行列式,我们可以将思路向证明:左侧行列式对应的矩阵等于两个行列式的值分别为A与D的矩阵的积。
我们手头上就有\begin{bmatrix} A & B \\ 0 & D \end{bmatrix}这个式子,并假设右侧的两个矩阵为:\begin{bmatrix} A & 0 \\ 0 & E \end{bmatrix}\begin{bmatrix} E & 0 \\ 0 & D \end{bmatrix}
右边的两个式子无论左乘还是右乘,都是凑不出左侧式子的。在这里,引入一个行列式为1的三角矩阵帮忙:\begin{bmatrix} E & B \\ 0 & E \end{bmatrix}
有:
 \begin{bmatrix} A & B \\ 0 & D \end{bmatrix} = \begin{bmatrix} E & 0 \\ 0 & D \end{bmatrix} \begin{bmatrix} E & B \\ 0 & E \end{bmatrix} \begin{bmatrix} A & 0 \\ 0 & E \end{bmatrix}
等式左右的行列式也是相等的,也即:\begin{vmatrix} A & B \\ 0 & D \end{vmatrix} = det(A)det(D)

好的,那么像\begin{bmatrix} A & B \\ 0 & D \end{bmatrix}形式矩阵的行列式我们会算了,可对于\begin{bmatrix} A & B \\ C & D \end{bmatrix}呢?
毕竟,如果是一个具体矩阵而非分块的,我们会通过对行列的初等变换来消去对角线以外的元素,而分块矩阵……要如何变换?
通过对行列的初等变换来消去元素的方法叫做高斯消元法,而分块矩阵,当然也有“高斯消元法”。
分块高斯消元法是借助矩阵乘法实现的,它的本质和对行列的初等变换一样,都是对线性空间的变换(严格来说矩阵乘法是线性变换,而初等变换是基变换)。
我们仍然需要一个行列式为1的矩阵来帮忙。

\begin{bmatrix} E & 0 \\ -CA^{-1} & E \end{bmatrix} \begin{bmatrix} A & B \\ C & D \end{bmatrix} = \begin{bmatrix} A & B \\ 0 & D-CA^{-1}B \end{bmatrix}
我们就得到了:
 det(\begin{bmatrix} A & B \\ C & D \end{bmatrix}) = det(A)det(D-CA^{-1}B)
我们记M/A = D-CA^{-1}B为A在M中的Schur补。
现在,考虑加边矩阵(在矩阵A的左侧和上侧各加一行/列)\begin{bmatrix} c & x^T \\ y & A \end{bmatrix},其中c为纯量,x,y各为行向量/列向量,有:
 \begin{vmatrix} c & x^T \\ y & A \end{vmatrix} = c \cdot det(A - yx^T/c)
这被称作加边矩阵行列式的简化公式。
考虑加边矩阵的另一种形式(在矩阵A的右侧与下册各加一行/列) \begin{bmatrix} A & x \\ y^T & c \end{bmatrix},其中c为纯量,x,y各为行向量/列向量,有:
\\  \begin{bmatrix} A & x \\ y^T & c \end{bmatrix} = (c - y^TA^{-1}x) \cdot det(A) \\ = c \cdot det(A) - y^T(adj(A))x
其中adj(A)指的是A的伴随矩阵。
这被称作加边矩阵行列式的Cauchy展开式。

因此,利用Schur补,可以方便地计算分块矩阵的行列式,由Schur补推广出的加边矩阵的两个公式同样方便了计算。

下一次要不整点题目……

发表评论