25._分块矩阵的概念

分块矩阵

对于行数和列数较高的矩阵 AA ,运算时常用一些横线和坚线将矩阵 AA 分划成若干个小 矩阵,每一个小矩阵称为 AA 的子块,以子块为元素的形式上的矩阵称为分块矩阵. 一个矩阵的分块方式会有很多种, 例如,

A=(a11a12a13a14a15a21a22a23a24a25a31a32a33a35a41a42a43a44a45)A=\left(\begin{array}{cc:ccc} a_{11} & a_{12} & a_{13} & a_{14} & a_{15} \\ a_{21} & a_{22} & a_{23} & a_{24} & a_{25} \\ \hdashline a_{31} & a_{32} & \ldots \ldots & a_{33} & a_{35} \\ \hdashline a_{41} & a_{42} & a_{43} & a_{44} & a_{45} \end{array}\right)

记为 其中

A11=(a11a12a21a22),A12=(a13a14a15a23a24a25),A21=(a31a32a41a42),A22=(a33a34a35a43a44a45).A_{11}=\left(\begin{array}{ll} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right), \quad A_{12}=\left(\begin{array}{lll} a_{13} & a_{14} & a_{15} \\ a_{23} & a_{24} & a_{25} \end{array}\right), \quad A_{21}=\left(\begin{array}{ll} a_{31} & a_{32} \\ a_{41} & a_{42} \end{array}\right), \quad A_{22}=\left(\begin{array}{lll} a_{33} & a_{34} & a_{35} \\ a_{43} & a_{44} & a_{45} \end{array}\right) .
A=(a11a12a13a14a15a21a22a23a24a25a31a33a33a34a35a41a42a43a4a45.)A=\left(\begin{array}{cc:cc:c} a_{11} & a_{12} & a_{13} & a_{14} & a_{15} \\ \hdashline a_{21} & a_{22} & a_{23} & a_{24} & a_{25} \\ a_{31} & a_{33} & a_{33} & a_{34} & a_{35} \\ \hdashline a_{41} & a_{42} & a_{43} & a_4 & a_{45} . \end{array}\right)

记为 A=(A11A12A13A21A22A23A31A32A33)A=\left(\begin{array}{lll}A_{11} & A_{12} & A_{13} \\ A_{21} & A_{22} & A_{23} \\ A_{31} & A_{32} & A_{33}\end{array}\right), A=(A11,A12,A13,A14,A15),A=\left(A_{11}, A_{12}, A_{13}, A_{14}, A_{15}\right), 其中

A11=(a11,a12),A12=(a13,a14),A13=a15,A21=(a21a22a31a32),A22=(a23a24a33a34),A23=(a25a35)A31=(a41,a42),A32=(a43,a44),A33=a45.\begin{aligned} & \boldsymbol{A}_{11}=\left(a_{11}, a_{12}\right), \quad \boldsymbol{A}_{12}=\left(a_{13}, a_{14}\right), \quad \boldsymbol{A}_{13}=a_{15}, \\ & \boldsymbol{A}_{21}=\left(\begin{array}{ll} a_{21} & a_{22} \\ a_{31} & a_{32} \end{array}\right), \quad \boldsymbol{A}_{22}=\left(\begin{array}{ll} a_{23} & a_{24} \\ a_{33} & a_{34} \end{array}\right), \quad \boldsymbol{A}_{23}=\left(\begin{array}{l} a_{25} \\ a_{35} \end{array}\right) \\ & \boldsymbol{A}_{31}=\left(a_{41}, a_{42}\right), \quad \boldsymbol{A}_{32}=\left(a_{43}, a_{44}\right), \quad \boldsymbol{A}_{33}=a_{45} . \end{aligned}

其中

A11=(a11a21a31a41),A12=(a12a22a32a42),A13=(a13a23a33a43),A14=(a14a24a34a44),A15=(a15a25a35a45).\boldsymbol{A}_{11}=\left(\begin{array}{l} a_{11} \\ a_{21} \\ a_{31} \\ a_{41} \end{array}\right), \quad \boldsymbol{A}_{12}=\left(\begin{array}{l} a_{12} \\ a_{22} \\ a_{32} \\ a_{42} \end{array}\right), \quad \boldsymbol{A}_{13}=\left(\begin{array}{l} a_{13} \\ a_{23} \\ a_{33} \\ a_{43} \end{array}\right), \quad \boldsymbol{A}_{14}=\left(\begin{array}{l} a_{14} \\ a_{24} \\ a_{34} \\ a_{44} \end{array}\right), \quad \boldsymbol{A}_{15}=\left(\begin{array}{l} a_{15} \\ a_{25} \\ a_{35} \\ a_{45} \end{array}\right) .

如果分块矩阵没有相应的运算,则 "分块矩阵" 这个概念是没有意义的。与矩阵的运算相对应,我们考虑分块矩阵的运算:加法、数乘、乘法、转置。当然基本要求是:"分块前的运算结果与分块后的计算结果应该是一样的 ", 以矩阵加法为例, 设有矩阵 A,B\boldsymbol{A}, \boldsymbol{B},其分块后分别记为 A1,B1\boldsymbol{A}_1, \boldsymbol{B}_1, 则 A1+B1\boldsymbol{A}_1+\boldsymbol{B}_1 应该为 A+B\boldsymbol{A}+\boldsymbol{B} 某个分块下的结果。另外我们希望:

分块矩阵的运算法则最好与通常矩阵的对应运算有类似法则。例如, 矩阵加法 A+B\boldsymbol{A}+\boldsymbol{B} 定义为这两个矩阵的对应元素相加,因而对于分块矩阵相加,我们希望其运算法则为对应的子矩阵相加;矩阵乘法 AB\boldsymbol{A} \boldsymbol{B} 中, AB\boldsymbol{A} \boldsymbol{B} 的一个元素为 A\boldsymbol{A} 的一行元素与 B\boldsymbol{B} 的一列元素对应相乘、相加,因而分块矩阵乘法 AB\boldsymbol{A} \boldsymbol{B} ,我们希望其运算法则为 A\boldsymbol{A} 的一行子矩阵与 B\boldsymbol{B} 的一列子矩阵相乘、相加;其它运算可类似地考虑。但目前需要指出的是:这只是我们的 "希望",这种想法是否可行,需要考虑以下两个问题: (1)如何对矩阵分块,才能使得这样的运算规律形式上能够进行? (2)当第一步可行时,这样的运算规律是否成立?即分块矩阵的运算结果是否等于未分块矩阵的运算结果? 我们只考虑(1),对于(2)则省略

分块矩阵的加法 A+BA+B

A+B=[A11A12A1sA21A22A2sAr1Ar2Ars]+[B11B12B1sB21B22B2sBr1Br2Brs]=[A11+B11A12+B12A1s+B1sA21+B21A22+B22A2s+B2sAr1+Br1Ar2+Br2Ars+Brs]=[Aij+Bij]r×s\begin{aligned} & \boldsymbol{A}+\boldsymbol{B}=\left[\begin{array}{cccc} \boldsymbol{A}_{11} & \boldsymbol{A}_{12} & \cdots & \boldsymbol{A}_{1 s} \\ \boldsymbol{A}_{21} & \boldsymbol{A}_{22} & \cdots & \boldsymbol{A}_{2 s} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{A}_{r 1} & \boldsymbol{A}_{r 2} & \cdots & \boldsymbol{A}_{r s} \end{array}\right]+\left[\begin{array}{cccc} \boldsymbol{B}_{11} & \boldsymbol{B}_{12} & \cdots & \boldsymbol{B}_{1 s} \\ \boldsymbol{B}_{21} & \boldsymbol{B}_{22} & \cdots & \boldsymbol{B}_{2 s} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{B}_{r 1} & \boldsymbol{B}_{r 2} & \cdots & \boldsymbol{B}_{r s} \end{array}\right] \\ & =\left[\begin{array}{cccc} \boldsymbol{A}_{11}+\boldsymbol{B}_{11} & \boldsymbol{A}_{12}+\boldsymbol{B}_{12} & \cdots & \boldsymbol{A}_{1 s}+\boldsymbol{B}_{1 s} \\ \boldsymbol{A}_{21}+\boldsymbol{B}_{21} & \boldsymbol{A}_{22}+\boldsymbol{B}_{22} & \cdots & \boldsymbol{A}_{2 s}+\boldsymbol{B}_{2 s} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{A}_{r 1}+\boldsymbol{B}_{r 1} & \boldsymbol{A}_{r 2}+\boldsymbol{B}_{r 2} & \cdots & \boldsymbol{A}_{r s}+\boldsymbol{B}_{r s} \end{array}\right]=\left[\boldsymbol{A}_{i j}+\boldsymbol{B}_{i j}\right]_{r \times s} \end{aligned}

分块矩阵的数乘

kA=[kA11kA12kA1skA21kA22kA2skAr1kAr2kAns]=[kAij]r×s\begin{aligned} &k \boldsymbol{A}=\left[\begin{array}{cccc} \boldsymbol{k} \boldsymbol{A}_{11} & k \boldsymbol{A}_{12} & \cdots & \boldsymbol{k} \boldsymbol{A}_{1 s} \\ k \boldsymbol{A}_{21} & k \boldsymbol{A}_{22} & \cdots & k \boldsymbol{A}_{2 s} \\ \vdots & \vdots & & \vdots \\ k \boldsymbol{A}_{r 1} & k \boldsymbol{A}_{r 2} & \cdots & k \boldsymbol{A}_{n s} \end{array}\right]=\left[k \boldsymbol{A}_{i j}\right]_{r \times s} \end{aligned}

分块矩阵的转置

AT=[A11TA21TAr1TA12TA22TAr2TA1sTA2sTArsT]\boldsymbol{A}^{\mathrm{T}}=\left[\begin{array}{cccc} \boldsymbol{A}_{11}^{\mathrm{T}} & \boldsymbol{A}_{21}^{\mathrm{T}} & \cdots & \boldsymbol{A}_{r 1}^{\mathrm{T}} \\ \boldsymbol{A}_{12}^{\mathrm{T}} & \boldsymbol{A}_{22}^{\mathrm{T}} & \cdots & \boldsymbol{A}_{r 2}^{\mathrm{T}} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{A}_{1 s}^{\mathrm{T}} & \boldsymbol{A}_{2 s}^{\mathrm{T}} & \cdots & \boldsymbol{A}_{r s}^{\mathrm{T}} \end{array}\right]

分块矩阵的乘法

根据分块矩阵运算的原则, 母矩阵 A,B\boldsymbol{A}, \boldsymbol{B} 分块后, 分块矩阵 A\boldsymbol{A} 的列数必须等于分块矩阵 B\boldsymbol{B} 的行数,即若

A=[A11A12A1sA21A22A2sAr1Ar2Ars]=[Aij]r×s\boldsymbol{A}=\left[\begin{array}{cccc} \boldsymbol{A}_{11} & \boldsymbol{A}_{12} & \cdots & \boldsymbol{A}_{1 s} \\ \boldsymbol{A}_{21} & \boldsymbol{A}_{22} & \cdots & \boldsymbol{A}_{2 s} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{A}_{r 1} & \boldsymbol{A}_{r 2} & \cdots & \boldsymbol{A}_{r s} \end{array}\right]=\left[\boldsymbol{A}_{i j}\right]_{r \times s}

则分块矩阵 B\boldsymbol{B}

B=[B11B12B1kB21B22B2kBs1Bs2Bsk]=[Bij]s×k\boldsymbol{B}=\left[\begin{array}{cccc} \boldsymbol{B}_{11} & \boldsymbol{B}_{12} & \cdots & \boldsymbol{B}_{1 k} \\ \boldsymbol{B}_{21} & \boldsymbol{B}_{22} & \cdots & \boldsymbol{B}_{2 k} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{B}_{s 1} & \boldsymbol{B}_{s 2} & \cdots & \boldsymbol{B}_{s k} \end{array}\right]=\left[\boldsymbol{B}_{i j}\right]_{s \times k}

其结果是

Cij=t=1sAitBtj\boldsymbol{C}_{i j}=\sum_{t=1}^s \boldsymbol{A}_{i t} \boldsymbol{B}_{t j}

例如假设A

A=[52213432022231614232]=[A11A12A21A22]\boldsymbol{A}=\left[\begin{array}{cc:ccc} 5 & -2 & -2 & 1 & 3 \\ 4 & -3 & -2 & 0 & 2 \\ \hdashline-2 & 2 & 3 & 1 & 6 \\ 1 & 4 & 2 & 3 & -2 \end{array}\right]=\left[\begin{array}{ll} \boldsymbol{A}_{11} & \boldsymbol{A}_{12} \\ \boldsymbol{A}_{21} & \boldsymbol{A}_{22} \end{array}\right]

那么 B\boldsymbol{B} 的分块方式则不唯一, 而只有 B\boldsymbol{B} 的列分块方式与 A\boldsymbol{A} 的行分块方式相同即可, 例如分块方式

B=[522432223142214],B=[522432223142214]\boldsymbol{B}=\left[\begin{array}{c:cc} 5 & -2 & -2 \\ 4 & -3 & -2 \\ \hdashline-2 & 2 & 3 \\ 1 & 4 & 2 \\ 2 & 1 & 4 \end{array}\right], \quad \boldsymbol{B}=\left[\begin{array}{ccc} 5 & -2 & -2 \\ 4 & -3 & -2 \\ \hdashline-2 & 2 & 3 \\ 1 & 4 & 2 \\ 2 & 1 & 4 \end{array}\right]

都是可接受的。

分块矩阵求逆矩阵

分块矩阵求逆没有普遍的规律,但是对于以下情形则比较简单。例如

AB=[A1B11A1B12A1B1sA2B21A2B22A2B2sAsBs1AsBs2AsBss]=[E1E2En] 由于 A1,A2,,As 都可逆, 所以有 A1=[A11A21As1]\begin{aligned} &\boldsymbol{A} \boldsymbol{B}=\left[\begin{array}{cccc} \boldsymbol{A}_1 \boldsymbol{B}_{11} & \boldsymbol{A}_1 \boldsymbol{B}_{12} & \cdots & \boldsymbol{A}_1 \boldsymbol{B}_{1 s} \\ \boldsymbol{A}_2 \boldsymbol{B}_{21} & \boldsymbol{A}_2 \boldsymbol{B}_{22} & \cdots & \boldsymbol{A}_2 \boldsymbol{B}_{2 s} \\ \vdots & \vdots & & \vdots \\ \boldsymbol{A}_s \boldsymbol{B}_{s 1} & \boldsymbol{A}_s \boldsymbol{B}_{s 2} & \cdots & \boldsymbol{A}_s \boldsymbol{B}_{s s} \end{array}\right]=\left[\begin{array}{llll} \boldsymbol{E}_1 & & & \\ & \boldsymbol{E}_2 & & \\ & & \ddots & \\ & & & \boldsymbol{E}_n \end{array}\right]\\ &\text { 由于 } A_1, A_2, \cdots, A_s \text { 都可逆, 所以有 }\\ &\boldsymbol{A}^{-1}=\left[\begin{array}{llll} \boldsymbol{A}_1^{-1} & & & \\ & \boldsymbol{A}_2^{-1} & & \\ & & \ddots & \\ & & & \boldsymbol{A}_s^{-1} \end{array}\right] \end{aligned}

分块矩阵乘法例题

设有矩阵

A=[1000010012101101],B=[1010120110411120]\boldsymbol{A}=\left[\begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ -1 & 2 & 1 & 0 \\ 1 & 1 & 0 & 1 \end{array}\right], \quad \boldsymbol{B}=\left[\begin{array}{cccc} 1 & 0 & 1 & 0 \\ -1 & 2 & 0 & 1 \\ 1 & 0 & 4 & 1 \\ -1 & -1 & 2 & 0 \end{array}\right]

计算 AB\boldsymbol{A B} 。 解:直接用矩阵乘法的定义计算,需要 64 次乘法、 48 次加法。如果我们将这两个矩阵作如下分块:

A=[1000010012101101]=[EOA1E]A1=[1211]A=\left[\begin{array}{cc:cc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \hdashline-1 & 2 & 1 & 0 \\ 1 & 1 & 0 & 1 \end{array}\right]=\left[\begin{array}{ll} E & O \\ A_1 & E \end{array}\right] \quad A_1=\left[\begin{array}{cc} -1 & 2 \\ 1 & 1 \end{array}\right]
B=[1010120110411120]=[B11EB21B22]\boldsymbol{B}=\left[\begin{array}{cc:cc} 1 & 0 & 1 & 0 \\ -1 & 2 & 0 & 1 \\ \hdashline 1 & 0 & 4 & 1 \\ -1 & -1 & 2 & 0 \end{array}\right]=\left[\begin{array}{cc} B_{11} & \boldsymbol{E} \\ \boldsymbol{B}_{21} & \boldsymbol{B}_{22} \end{array}\right]
B11=[1012],B21=[1011],B22=[4120] 根据分块矩阵乘法的运算规则, 有 AB=[EOA1E][B11EB21B22]=[EB11+OB21E×E+OB22A1B11+B21A1E+IB21]=[B11EA1B11+B21A1+B21]\begin{aligned} &\boldsymbol{B}_{11}=\left[\begin{array}{cc} 1 & 0 \\ -1 & 2 \end{array}\right], \quad \boldsymbol{B}_{21}=\left[\begin{array}{cc} 1 & 0 \\ -1 & -1 \end{array}\right], \quad \boldsymbol{B}_{22}=\left[\begin{array}{ll} 4 & 1 \\ 2 & 0 \end{array}\right]\\ &\text { 根据分块矩阵乘法的运算规则, 有 }\\ &\begin{aligned} & \boldsymbol{A} \boldsymbol{B}=\left[\begin{array}{ll} \boldsymbol{E} & \boldsymbol{O} \\ \boldsymbol{A}_1 & \boldsymbol{E} \end{array}\right]\left[\begin{array}{cc} \boldsymbol{B}_{11} & \boldsymbol{E} \\ \boldsymbol{B}_{21} & \boldsymbol{B}_{22} \end{array}\right]=\left[\begin{array}{cc} \boldsymbol{E} \boldsymbol{B}_{11}+\boldsymbol{O} \boldsymbol{B}_{21} & \boldsymbol{E} \times \boldsymbol{E}+\boldsymbol{O} \boldsymbol{B}_{22} \\ \boldsymbol{A}_1 \boldsymbol{B}_{11}+\boldsymbol{B}_{21} & \boldsymbol{A}_1 \boldsymbol{E}+\boldsymbol{I} \boldsymbol{B}_{21} \end{array}\right] \\ & =\left[\begin{array}{cc} \boldsymbol{B}_{11} & \boldsymbol{E} \\ \boldsymbol{A}_1 \boldsymbol{B}_{11}+\boldsymbol{B}_{21} & \boldsymbol{A}_1+\boldsymbol{B}_{21} \end{array}\right] \end{aligned} \end{aligned}

从上式可知, 只需要做两个二阶方阵的乘法。因此根据上式计算 AB\boldsymbol{A B}, 只需要做四次乘法、 6 次加法, 比直接计算 AB\boldsymbol{A B} 所需要的运算量大大减少。

注意: 用分块矩阵简化矩阵运算, 只有在矩阵乘法中才有可能达到, 并且需要矩阵经过适当分块后有较多的 0 块、单位矩阵子块。

分块矩阵的作用

对于线性方程组,使用分块

Am×nXn×1=bm×1\boldsymbol{A}_{m \times n} \boldsymbol{X}_{n \times 1}=\boldsymbol{b}_{m \times 1}

其中 A\boldsymbol{A} 为线性方程组的系数矩阵, X\boldsymbol{X} 为末知数所构成的列矩阵, b\boldsymbol{b} 为方程组右边的常数所构成的列矩阵。我们可采取如下分块方法,

A=[a11a12a1na21a22a2nam1am2amn]=[A1A2An]A=\left[\begin{array}{c:c:c:c} a_{11} & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 n} \\ \vdots & \vdots & & \vdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{array}\right]=\left[\begin{array}{llll} A_1 & A_2 & \cdots & A_n \end{array}\right]

AX=b\boldsymbol{A} \boldsymbol{X}=\boldsymbol{b} 可写作

x1A1+x2A2++xnAn=bx_1 \boldsymbol{A}_1+x_2 \boldsymbol{A}_2+\cdots+x_n \boldsymbol{A}_n=\boldsymbol{b}

也就是

x1[a11a21am1]+x2[a12a22am2]++xn[a1na2namn]=[b1b2bm]x_1\left[\begin{array}{c} a_{11} \\ a_{21} \\ \vdots \\ a_{m 1} \end{array}\right]+x_2\left[\begin{array}{c} a_{12} \\ a_{22} \\ \vdots \\ a_{m 2} \end{array}\right]+\cdots+x_n\left[\begin{array}{c} a_{1 n} \\ a_{2 n} \\ \vdots \\ a_{m n} \end{array}\right]=\left[\begin{array}{c} b_1 \\ b_2 \\ \vdots \\ b_m \end{array}\right]

该式称为线性方程组的向量表示。这在后面向量空间里经常使用。