矩阵是数字或 “元素” 的矩形阵列。当矩阵 AAA 有 mmm 行 nnn 列,则是一个 m×nm\times nm×n 的矩阵。如果矩阵的形状相同,则它们可以相加。矩阵也可以乘上任意常数 ccc。以下是 A+BA+BA+B 和 2A2A2A 的例子,它们都是 3×23\times23×2 的矩阵:[123400]+[224499]=[347899],2[123400]=[246800]\begin{bmatrix}1&2\\3&4\\0&0\end{bmatrix}+\begin{bmatrix}2&2\\4&4\\9&9\end{bmatrix}=\begin{bmatrix}3&4\\7&8\\9&9\end{bmatrix},\kern 10pt2\begin{bmatrix}1&2\\3&4\\0&0\end{bmatrix}=\begin{bmatrix}2&4\\6&8\\0&0\end{bmatrix}130240+249249=379489,2130240=260480矩阵的加法和向量的加法一样,每次处理一个元素。我们也可以将列向量看成是只有一列的矩阵(n=1n=1n=1)。−A-A−A 可以看成是 ccc 乘矩阵 AAA(c=−1c=-1c=−1),它与 AAA 中全部元素的符号都相反。AAA 加上 −A-A−A 是零矩阵,它的全部元素均为零。这些是基础知识,下面将考虑矩阵的乘法。
一、第一种方法:单个元素的计算
第 iii 行第 jjj 列的元素记为 aija_{ij}aij 或 A(i,j)A(i,j)A(i,j),第一行的 nnn 个元素分别记为 a11,a12,⋯ ,a1na_{11},a_{12},\cdots,a_{1n}a11,a12,⋯,a1n。左下角的元素是 am1a_{m1}am1,右下角的元素是 amna_{mn}amn。行的数字 iii 从 111 到 mmm,列的数字 jjj 从 111 到 nnn。
若矩阵 AAA 和 BBB 可以相乘时,这里总共讨论 444 种方法求 ABABAB。矩阵 AAA 和 BBB 相乘需要满足如下条件:
ABABAB 可以相乘: 若 AAA 有 nnn 列,则 BBB 必须有 nnn 行
当 AAA 是 3×23\times23×2 的矩阵时,BBB 可以是 2×12\times12×1(向量)、2×22\times22×2(方阵)或 2×202\times202×20 的矩阵,必须是 222 行,但是不可以是 3×23\times23×2 的矩阵。AAA 乘数 BBB 的每一列。 第一种矩阵相乘的方法是点积的方式,矩阵的乘法遵守以下法则:矩阵乘法的基础法则AB 乘 C 等于 A 乘 BC(2.4.1)\pmb{矩阵乘法的基础法则}\kern 10ptAB\,乘\,C\,等于\,A\,乘\,BC\kern 10pt(2.4.1)矩阵乘法的基础法则AB乘C等于A乘BC(2.4.1)括号可以在 ABCABCABC 之间安全移动,(AB)C=A(BC)(AB)C=A(BC)(AB)C=A(BC),线性代数也是基于这个法则。
假设 AAA 是 m×nm\times nm×n 的矩阵,BBB 是 n×pn\times pn×p 的矩阵,它们可以相乘,乘积 ABABAB 是 m×pm\times pm×p 的矩阵。(m×n)×(n×p)=(m×p),[m rowsn columns][n rowsp columns]=[m rowsp columns](\pmb m\times n)\times(n\times \pmb p)=(\pmb m\times \pmb p),\kern 10pt\begin{bmatrix}\pmb{m\,\,\textrm{rows}}\\n\,\,columns\end{bmatrix}\begin{bmatrix}n\,\,rows\\\pmb{p\,\textrm{columns}}\end{bmatrix}=\begin{bmatrix}\pmb{m\,\,\textrm{rows}}\\\pmb{p\,\textrm{columns}}\end{bmatrix}(m×n)×(n×p)=(m×p),[mrowsncolumns][nrowspcolumns]=[mrowspcolumns]一行乘一列是一种极端的情况,1×n1\times n1×n 乘 n×1n\times 1n×1 的结果是 1×11\times11×1,这个数字就是点积。
任何情况下 ABABAB 中的元素都是点积,ABABAB 左上角的元素 (1,1)(1,1)(1,1) 是 (A 的行 1)⋅(B 的列 1)(A\,的行\,1)\cdot(B\,的列\,1)(A的行1)⋅(B的列1)。这就是第一种计算方法,是矩阵乘法常用的方法。计算 AAA 的每一行和 BBB 的每一列的点积。1.AB 的行 i 列 j 元素是(A 的行 i)⋅(B 的列 j)1.\kern 8ptAB\,的行\,i\,列\,j\,元素是\kern 10pt(A\,的行\,i)\cdot(B\,的列\,j)1.AB的行i列j元素是(A的行i)⋅(B的列j)Figure 2.8 是 4×54\times54×5 矩阵 AAA 的第二行 (i=2)(i=2)(i=2),5×65\times65×6 矩阵 BBB 的第三列 (j=3)(j=3)(j=3),它们的点积在 ABABAB 的行 222 列 333。矩阵 ABABAB 的行数与 AAA (444 行)相同,列数与 BBB(666 列)相同。

【例1】当且仅当方阵(Square matrices)的大小相同时,它们才可以相乘:[112−1][2234]=[5610]\begin{bmatrix}1&\kern 7pt1\\2&-1\end{bmatrix}\begin{bmatrix}2&2\\3&4\end{bmatrix}=\begin{bmatrix}5&6\\1&0\end{bmatrix}[121−1][2324]=[5160]第一个点积是 1⋅2+1⋅3=51\cdot2+1\cdot3=51⋅2+1⋅3=5,其它三个点积可以通过同样的方法计算。每个点积需要两次乘法,总共是 888 次。
如果 AAA 和 BBB 都是 n×nn\times nn×n 的方阵,则 ABABAB 也是 n×nn\times nn×n 的方阵,它包含 n2n^2n2 次点积,即 AAA 的行数乘 BBB 的列数。每一个点积需要 nnn 次乘法,所以计算 ABABAB 总共需要 n3n^3n3 次乘法。当 n=100n=100n=100 时,需要 1003=1000000100^3=10000001003=1000000 次乘法;当 n=2n=2n=2 时,需要 23=82^3=823=8 次乘法。
目前有人找到只需要 777 次(会有额外的加法)的方法。但是比较难以处理,所以目前仍认为正常的科学计算需要 n3n^3n3 次。
【例2】假设 AAA 是一个行向量(1×31\times31×3),BBB 是一个列向量(3×13\times13×1),则 ABABAB 是 1×11\times11×1(仅有一个点积,一个元素)。若反过来相乘,BABABA(一列乘一行)则会得到一个完整的 3×33\times33×3 矩阵,这样的乘法也是允许的!列乘行(n×1)(1×n)=(n×n)[012][123]=[000123246]\begin{matrix}列乘行\\(n\times1)(1\times n)=(n\times n)\end{matrix}\kern 10pt\begin{bmatrix}0\\1\\2\end{bmatrix}\begin{bmatrix}1&2&3\end{bmatrix}=\begin{bmatrix}0&0&0\\1&2&3\\2&4&6\end{bmatrix}列乘行(n×1)(1×n)=(n×n)012[123]=012024036一行乘一列是内积(inner product),这是点积的另一个名称。一列乘一行是外积(outer product)。这是一些矩阵乘法的极端情况。
二、第二和第三种方法:行和列
在大图(big picture)中,AAA 乘 BBB 的每一列,结果是 ABABAB 的一列,该列是 AAA 列的组合。AB\pmb{AB}AB 的每一列都是 A\pmb AA 列的线性组合。这是矩阵乘法的列图像:2.矩阵 A 乘 B 的每一列A[b1⋯ bp]=[Ab1⋯ Abp]2.\kern 8pt矩阵\,A\,乘\,B\,的每一列\kern 10ptA[b_1\cdots\, b_p]=[Ab_1\cdots\,Ab_p]2.矩阵A乘B的每一列A[b1⋯bp]=[Ab1⋯Abp]行图像则相反,AAA 的每一行乘整个矩阵 BBB 是 ABABAB 的一行。AB\pmb{AB}AB 的每一行都是 B\pmb BB 行的线性组合:3.A 的每一行乘矩阵 B[A 的行 i][123456789]=[AB 的行 i]3.\kern 8ptA\,的每一行乘矩阵\,B\kern 10pt[A\,的行\,i]\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}=[AB\,的行\,i]3.A的每一行乘矩阵B[A的行i]147258369=[AB的行i]消元法中用到的是行运算(E 乘 AE\,乘\,AE乘A),AA−1AA^{-1}AA−1 中用到的是列运算。“行-列图像” 有行与列的点积,手算矩阵时经常使用点积:有 mnpmnpmnp 次乘法/加法 步骤。AB=(m×n)(n×p)=(m×p),mp 次点积,每次点积需要 n 个步骤(2.4.2)AB=(m\times n)(n\times p)=(m\times p),\kern 7ptmp\,次点积,每次点积需要\,n\,个步骤\kern 5pt(2.4.2)AB=(m×n)(n×p)=(m×p),mp次点积,每次点积需要n个步骤(2.4.2)
三、第四种方法:列乘行
矩阵的第四种乘法是列乘行,然后将其相加:4.A 的列 1 至列 n,乘 B 的行 1 至行 n,将全部矩阵相加4.\kern 8ptA\,的列\,1\,至列\,n,乘\,B\,的行\,1\,至行\,n,将全部矩阵相加4.A的列1至列n,乘B的行1至行n,将全部矩阵相加AAA 的列 111 乘 BBB 的行 111,AAA 的列 2,32,32,3 乘 BBB 的行 2,32,32,3,然后相加:[col 1col 2col 3⋅⋅⋅⋅⋅⋅][row 1⋯row 2⋯row 3⋯]=(col 1)(row 1)+(col 2)(row 2)+(col 3)(row 3)\begin{bmatrix}\pmb{\textrm{col}\,1}&\pmb{\textrm{col\,2}}&\pmb{\textrm{col\,3}}\\\pmb \cdot&\pmb\cdot&\pmb\cdot\\ \pmb\cdot&\pmb\cdot&\pmb\cdot\end{bmatrix}\begin{bmatrix}\pmb{\textrm{row\,1}}&\pmb\cdots&\\\pmb{\textrm{row\,2}}&\pmb\cdots\\\pmb{\textrm{row\,3}}&\pmb\cdots\end{bmatrix}=\pmb{(\textrm {col\,1})(\textrm{row\,1})+\textrm{(col\,2)(row\,2)+(col\,3)(row\,3)}}col1⋅⋅col2⋅⋅col3⋅⋅row1row2row3⋯⋯⋯=(col1)(row1)+(col2)(row2)+(col3)(row3)当 AAA 和 BBB 均是 2×22\times22×2 的矩阵时AB=[abcd][EFGH]=[aE+bGaF+bHcE+dGcF+dH]AB=\begin{bmatrix}\pmb a&b\\\pmb c&d\end{bmatrix}\begin{bmatrix}\pmb E&\pmb F\\G&H\end{bmatrix}=\begin{bmatrix}\pmb{aE}+bG&\pmb{aF}+bH\\\pmb{cE}+dG&\pmb{cF}+dH\end{bmatrix}AB=[acbd][EGFH]=[aE+bGcE+dGaF+bHcF+dH]A 的列乘 B 的行,再相加AB=[ac][EF]+[bd][GH](2.4.3)A\,的列乘\,B\, 的行,再相加\kern 10ptAB=\begin{bmatrix}\pmb a\\\pmb c\end{bmatrix}\begin{bmatrix}\pmb E&\pmb F\end{bmatrix}+\begin{bmatrix}b\\d\end{bmatrix}\begin{bmatrix}G&H\end{bmatrix}\kern 6pt(2.4.3)A的列乘B的行,再相加AB=[ac][EF]+[bd][GH](2.4.3)AAA 的列 kkk 乘 BBB 的行 kkk 得到一个矩阵,令 k=1,2,⋯ ,nk=1,2,\cdots,nk=1,2,⋯,n,然后将所有的矩阵相加得到 ABABAB。
如果 ABABAB 是 (m×n)(n×p)(m\times n)(n\times p)(m×n)(n×p),则 nnn 个矩阵都是列与行相乘的 m×pm\times pm×p 矩阵。该方法同样需要 mnpmnpmnp 次乘法,只是顺序不同。
四、矩阵运算法则
矩阵运算遵循以下六个法则,还有一个法则是不正确的。矩阵可以是方形的也可以是矩形的。下面是三个加法法则:A+B=B+A(交换律 commutative law)c(A+B)=cA+cB(分配律 distributive law)A+(B+C)=(A+B)+C(结合律 associative law)\begin{matrix}\kern20ptA+B=B+A\kern 17pt&\kern 10pt(交换律\,\textrm{commutative\,\,law})\\c(A+B)=cA+cB&\kern 3pt(分配律\,\textrm{distributive\,\,law})\\A+(B+C)=(A+B)+C&(结合律\,\textrm{associative\,\,law})\end{matrix}A+B=B+Ac(A+B)=cA+cBA+(B+C)=(A+B)+C(交换律commutativelaw)(分配律distributivelaw)(结合律associativelaw)另外三个法则是乘法法则,注意 AB=BAAB=BAAB=BA 通常来说都是错误的:AB≠BA(交换律通常不成立)A(B+C)=AB+AC(左分配律)(A+B)C=AC+BC(右分配律)A(BC)=A(BC)(ABC的结合律)(不需要括号)\begin{matrix}AB\neq BA&\kern 40pt(交换律通常不成立)\\A(B+C)=AB+AC&(左分配律)\\(A+B)C=AC+BC&(右分配律)\\A(BC)=A(BC)&\kern 81pt(ABC的结合律)(不需要括号)\end{matrix}AB=BAA(B+C)=AB+AC(A+B)C=AC+BCA(BC)=A(BC)(交换律通常不成立)(左分配律)(右分配律)(ABC的结合律)(不需要括号)当 AAA 和 BBB 不是方阵时,ABABAB 和 BABABA 的大小不同,也不可能相等(假设可以相乘)。对于方阵,绝大部分情况都有 AB≠BAAB\neq BAAB=BA:AB=[0010][0100]=[0001], 但是 BA=[0100][0010]=[1000]AB=\begin{bmatrix}0&0\\1&0\end{bmatrix}\begin{bmatrix}0&1\\0&0\end{bmatrix}=\begin{bmatrix}0&0\\0&1\end{bmatrix},\,但是\,BA=\begin{bmatrix}0&1\\0&0\end{bmatrix}\begin{bmatrix}0&0\\1&0\end{bmatrix}=\begin{bmatrix}1&0\\0&0\end{bmatrix}AB=[0100][0010]=[0001],但是BA=[0010][0100]=[1000]AI=IAAI=IAAI=IA 是成立的,所有的方阵与 III 相乘都满足交换律,与 cIcIcI 也一样。只有这些矩阵的乘法顺序才可交换。
法则 A(B+C)=AB+ACA(B+C)=AB+ACA(B+C)=AB+AC 可以一次证明一列。对于第一列 A(b+c)=Ab+AcA(\boldsymbol b+\boldsymbol c)=A\boldsymbol b+A\boldsymbol cA(b+c)=Ab+Ac,这个是所有事情的关键 —— 线性。
法则 A(BC)=(AB)CA(BC)=(AB)CA(BC)=(AB)C 表示可以先乘 BCBCBC 也可以先乘 ABABAB,这个法则很有用,是矩阵乘法的关键,证明如下:
证明: 设 BBB 的列为 b1,⋯ ,bn\boldsymbol b_1,\cdots,\boldsymbol b_nb1,⋯,bn,CCC 仅有一列 c\boldsymbol cc,其分量为 c1,⋯ ,cnc_1,\cdots,c_nc1,⋯,cn。
ABABAB 的列为 Ab1,⋯ ,AbnA\boldsymbol b_1,\cdots,A\boldsymbol b_nAb1,⋯,Abn,则 ABc=c1Ab1+⋯+cnbnAB\boldsymbol c=c_1A\boldsymbol b_1+\cdots+c_n\boldsymbol b_nABc=c1Ab1+⋯+cnbn。
BcB\boldsymbol cBc 仅有一列 c1b1+⋯+cnbnc_1\boldsymbol b_1+\cdots+c_n\boldsymbol b_nc1b1+⋯+cnbn,则 A(Bc)=A(c1b1+⋯+cnbn)A(B\boldsymbol c)=A(c_1\boldsymbol b_1+\cdots+c_n\boldsymbol b_n)A(Bc)=A(c1b1+⋯+cnbn)
由分配律可得上面两式相等,即 (AB)c=A(Bc)(AB)\boldsymbol c=A(B\boldsymbol c)(AB)c=A(Bc)。同理,对于 CCC 的其它列均可按此方法证明,因此 (AB)C=A(BC)(AB)C=A(BC)(AB)C=A(BC)。
当 A=B=CA=B=CA=B=C 且为方阵时,(A(A(A 乘 A2)A^2)A2) 等于 (A2(A^2(A2 乘 A)A)A)。它们的乘积都是 A3A^3A3。矩阵的幂 ApA^pAp 和数字的运算法则一致:Ap=AAA⋯A (p 个因子)(Ap)(Aq)=Ap+q(Ap)q=ApqA^p=AAA\cdots A\,(p\,个因子)\kern 8pt(A^p)(A^q)=A^{p+q}\kern 8pt(A^p)^q=A^{pq}Ap=AAA⋯A(p个因子)(Ap)(Aq)=Ap+q(Ap)q=Apq这是指数的一般法则,A3A^3A3 乘 A4A^4A4 是 A7A^7A7,A3A^3A3 的 444 次方是 A12A^{12}A12。当 ppp 和 qqq 是零或负数时,这个法则任然成立。假设 AAA 有 −1-1−1 次方 —— 逆矩阵 A−1A^{-1}A−1。A0=IA^0=IA0=I 是单位矩阵,类似 20=12^0=120=1。
对于数字 a−1=1/aa^{-1}=1/aa−1=1/a,对矩阵来说逆矩阵写成 A−1A^{-1}A−1(不是 I/AI/AI/A,除了MATLAB)。除了 a=0a=0a=0 以外的数都有倒数,但是对于矩阵 AAA 有没有逆矩阵是线性代数的核心问题。
五、分块矩阵与分块乘法
矩阵可以被分割成块(blocks,小一些的矩阵)。下面是一个 4×64\times64×6 的矩阵,分割成 2×22\times22×2 的块,本例中每个块都是单位矩阵 III:4×6 的矩阵分成2×2 的分块矩阵得到 2×3 个分块矩阵A=[101010010101101010010101]=[IIIIII]\begin{matrix}4\times6\,的矩阵分成\\2\times2\,的分块矩阵\\\kern 20pt得到\,2\times3\,个分块矩阵\end{matrix}\kern 15ptA=\left[\begin{array}{cc|cc|cc}1&0&1&0&1&0\\0&1&0&1&0&1\\\hline1&0&1&0&1&0\\0&1&0&1&0&1\end{array}\right]=\begin{bmatrix}I&I&I\\I&I&I\end{bmatrix}4×6的矩阵分成2×2的分块矩阵得到2×3个分块矩阵A=101001011010010110100101=[IIIIII]如果 BBB 也是 4×64\times64×6 的矩阵,且大小匹配,则可以对 A+BA+BA+B 匹配的方块相加。
将 b\boldsymbol bb 放在 AAA 旁边就变成增广矩阵,[Ab]\begin{bmatrix}A&\boldsymbol b\end{bmatrix}[Ab] 有两个大小不一样的方块,这也是分块矩阵,左乘上消元矩阵得到 [EAEb]\begin{bmatrix}EA&E\boldsymbol b\end{bmatrix}[EAEb]。只要形状匹配,那么分块相乘就没有问题。分块乘法:如果 A 的分块可以乘 B 的分块,那么 AB 就可以分块相乘。A 的列分割必须和 B 的行分割相匹配。[A11A12A21A22][B11B21]=[A11B11+A12B21A21B11+A22B21](2.4.4)\pmb{分块乘法}:如果\,A\,的分块可以乘\,B\,的分块,那么\,AB\,就可以分块相乘。A\,的列分割必须和\,B\,的行分割相匹配。\\\begin{bmatrix}A_{11}&A_{12}\\A_{21}&A_{22}\end{bmatrix}\begin{bmatrix}B_{11}\\B_{21}\end{bmatrix}=\begin{bmatrix}A_{11}B_{11}+A_{12}B_{21}\\A_{21}B_{11}+A_{22}B_{21}\end{bmatrix}\kern 15pt(2.4.4)分块乘法:如果A的分块可以乘B的分块,那么AB就可以分块相乘。A的列分割必须和B的行分割相匹配。[A11A21A12A22][B11B21]=[A11B11+A12B21A21B11+A22B21](2.4.4)若每个分块都是数字(1×11\times11×1 的矩阵),这种特殊情况就是矩阵的乘法,它们是一致的。上式所有的 AAA 都要放在 BBB 之前,因为 ABABAB 与 BABABA 是不同的。
重点: 当对矩阵进行分块时,经常更容易看出它们如何作用的。如上例中分块矩阵是单位矩阵 III 就比原来的 4×64\times64×6 的矩阵更清晰。
【例3】(重要的特殊情况)将矩阵 AAA 每列分成一块,共 nnn 列,矩阵 BBB 每行分成一块,共 nnn 行,则 ABABAB 的分块乘法就是列乘行相加:列乘行[∣∣a1⋯an∣∣][−b1−⋯−bn−]=[a1b1+⋯+anbn](2.4.5)\pmb{列乘行}\kern 10pt\begin{bmatrix}|& &|\\a_1&\cdots&a_n\\|& &|\end{bmatrix}\begin{bmatrix}-&b_1&-\\&\cdots\\-&b_n&-\end{bmatrix}=\begin{bmatrix}a_1b_1+\cdots+a_nb_n\end{bmatrix}\kern 15pt(2.4.5)列乘行∣a1∣⋯∣an∣−−b1⋯bn−−=[a1b1+⋯+anbn](2.4.5)这就是第四种矩阵乘法。下面是具体的例子:[1415][3210]=[11][32]+[45][10]=[3232]+[4050]=[7282]\begin{bmatrix}1&4\\1&5\end{bmatrix}\begin{bmatrix}3&2\\1&0\end{bmatrix}=\begin{bmatrix}1\\1\end{bmatrix}\begin{bmatrix}3&2\end{bmatrix}+\begin{bmatrix}4\\5\end{bmatrix}\begin{bmatrix}1&0\end{bmatrix}=\begin{bmatrix}3&2\\3&2\end{bmatrix}+\begin{bmatrix}4&0\\5&0\end{bmatrix}=\begin{bmatrix}7&2\\8&2\end{bmatrix}[1145][3120]=[11][32]+[45][10]=[3322]+[4500]=[7822]总结:通常使用行乘列求矩阵的乘积,要 444 个点积(888 次乘法)。列乘行得到两个完整的矩阵(同样是 888 次乘法)。
【例4】(用分块消元)假设 AAA 的第一列是 1,3,41,3,41,3,4,要将 3,43,43,4 变成 0,00,00,0,需要减去主元行的 333 倍和 444 倍。这些行运算就是消元矩阵 E21E_{21}E21、E32E_{32}E32:E21=[100−310001],E31=[100010−401]E_{21}=\begin{bmatrix}\kern 7pt1&0&0\\-3&1&0\\\kern 7pt0&0&1\end{bmatrix},\kern 5ptE_{31}=\begin{bmatrix}\kern 7pt1&0&0\\\kern 7pt0&1&0\\-4&0&1\end{bmatrix}E21=1−30010001,E31=10−4010001分块的思想就是用一个矩阵矩阵 EEE 完成上面的两次消元,该矩阵将第一列的主元 a=1a=1a=1 下面的数字全部变成 000:E=[100−310−401]乘[1xx3xx4xx]得到[1xx0yy0zz]E=\begin{bmatrix}\kern 7pt\pmb1&0&0\\\pmb{-3}&1&0\\\pmb{-4}&0&1\end{bmatrix}乘\begin{bmatrix}\pmb1&x&x\\\pmb3&x&x\\\pmb4&x&x\end{bmatrix}得到\begin{bmatrix}\pmb1&x&x\\\pmb0&y&y\\\pmb0&z&z\end{bmatrix}E=1−3−4010001乘134xxxxxx得到100xyzxyz使用逆矩阵,分块矩阵 EEE 可以对整个列消元(将被消元部分看成一块)。假设矩阵有 444 块 A,B,C,DA,B,C,DA,B,C,D,通过分块消去 CCC:分块消元[I0−CA−1I][ABCD]=[AB0D−CA−1B](2.4.6)\pmb{分块消元}\kern 10pt\left[\begin{array}{c|c}I&0\\\hline-CA^{-1}&I\end{array}\right]\left[\begin{array}{c|c}A&B\\\hline C&D\end{array}\right]=\left[\begin{array}{c|c}A&B\\\hline0&D-CA^{-1}B\end{array}\right]\kern 15pt(2.4.6)分块消元[I−CA−10I][ACBD]=[A0BD−CA−1B](2.4.6)消元法从第二行减去第一行 [AB]\begin{bmatrix}A&B\end{bmatrix}[AB] 左乘 CA−1CA^{-1}CA−1(以前是 c/ac/ac/a),使得块 CCC 变为了 000 块,块 DDD 变为 S=D−CA−1BS=D-CA^{-1}BS=D−CA−1B 。
分块消元是一次处理一列,主元方块是 AAA,最后的方块是 D−CA−1BD-CA^{-1}BD−CA−1B,如同 d−cb/ad-cb/ad−cb/a,这个称为舒尔补(Schur complement)。
六、主要内容总结
- ABABAB 的 (i,j)(i,j)(i,j) 元素是 (A的行 i)⋅(B的列 j)(A的行\,i)\cdot(B的列\,j)(A的行i)⋅(B的列j)。
- m×nm\times nm×n 的矩阵乘 n×pn\times pn×p 的矩阵会有 mnpmnpmnp 次乘法。
- AAA 乘 BCBCBC 等于 ABABAB 乘 CCC(非常重要)。
- ABABAB 也是这 nnn 个矩阵的和:(A的列 j)⋅(B的行 j)(A的列\,j)\cdot(B的行\,j)(A的列j)⋅(B的行j)。
- 当分块矩阵的形状能正确匹配时,就可以使用分块乘法。
- 分块消元会产生舒尔补 D−CA−1B\,D-CA^{-1}BD−CA−1B。
七、例题
【例5】一个图形(或网络)有 nnn 个节点。它的邻接矩阵(adjacency matrix)SSS 是 n×nn\times nn×n。它是一个 0−10-10−1 矩阵,当节点 iii 与 节点 jjj 有边相连时 Sij=1S_{ij}=1Sij=1。
无向图的邻接矩阵是方阵且对称,边的两个方向均可以行走\bold{无向图的邻接矩阵是方阵且对称,边的两个方向均可以行走}无向图的邻接矩阵是方阵且对称,边的两个方向均可以行走矩阵 S2S^2S2 有一个很有用的解释,Sij2S^2_{ij}Sij2 是节点 iii 与节点 jjj 之间长度为 2\pmb 22 的路径的个数。上图中节点 222 与节点 333 之间长度为 222 的路径有两个:经过 111 的路径 2−1−32-1-32−1−3,经过 444 的路径 2−4−32-4-32−4−3。节点 111 到节点 111 长度为 222 的路径也是 222 个:1−2−11-2-11−2−1 和 1−3−11-3-11−3−1。S2=[2112132112312112],S3=[2552545555452552]S^2=\begin{bmatrix}\pmb 2&1&1&2\\1&3&\pmb 2&1\\1&2&3&1\\2&1&1&2\end{bmatrix},\kern 10ptS^3=\begin{bmatrix}2&\pmb 5&5&2\\5&4&5&5\\5&5&4&5\\2&5&5&2\end{bmatrix}S2=2112132112312112,S3=2552545555452552你可以找到 555 条节点 111 到节点 222 长度为 333 的路径吗?
共 555 条:1−2−1−2,1−2−3−2,1−2−4−2,1−3−1−2,1−3−4−21-2-1-2,1-2-3-2,1-2-4-2,1-3-1-2,1-3-4-21−2−1−2,1−2−3−2,1−2−4−2,1−3−1−2,1−3−4−2。
为什么 SNS^{N}SN 可以计算出两个节点之间长度为 NNN 的所有路径数呢?我们从 S2S^2S2 开始看某一元素的点积:(S2)ij=(S的行 i)⋅(S的列 j)=Si1S1j+Si2S2j+Si3S3j+Si4S4j(2.4.7)(S^2)_{ij}=(S的行\,i)\cdot(S的列\,j)=S_{i1}S_{1j}+S_{i2}S_{2j}+S_{i3}S_{3j}+S_{i4}S_{4j}\kern 20pt(2.4.7)(S2)ij=(S的行i)⋅(S的列j)=Si1S1j+Si2S2j+Si3S3j+Si4S4j(2.4.7)若存在两步的路径 i→1→ji\rightarrow 1\rightarrow ji→1→j,第一个乘法得到 Si1S1j=(1)(1)=1S_{i1}S_{1j}=(1)(1)=1Si1S1j=(1)(1)=1,若不存在 i→1→ji\rightarrow1\rightarrow ji→1→j 的路径,那么要么 i→1i\rightarrow1i→1 不存在,要么就是 1→j1\rightarrow j1→j 不存在,此时 Si1S1j=0S_{i1}S_{1j}=0Si1S1j=0。
(S2)ij(S^2)_{ij}(S2)ij 会将所有的两步路径 i→k→ji\rightarrow k\rightarrow ji→k→j 的个数累加起来,得到总路径数。同样,SN−1SS^{N-1}SSN−1S 会计算 NNN 步路径数,SN−1S^{N-1}SN−1 表示从 iii 到 kkk 的 (N−1)(N-1)(N−1) 步的路径数,SSS 表示从 kkk 到 jjj 的那一步路径数。矩阵乘法非常适合计算图形的路径,也可以看成公司内员工之间同相的频道个数。
【例6】下面有三个矩阵,什么时候 AB=BAAB=BAAB=BA ?什么时候 BC=CBBC=CBBC=CB ?什么时候 A(BC)=(AB)CA(BC)=(AB)CA(BC)=(AB)C ?给出矩阵元素 p,q,r,zp,q,r,zp,q,r,z 要满足的条件。A=[p0qr],B=[1101],C=[0z00]A=\begin{bmatrix}p&0\\q&r\end{bmatrix},\kern 5ptB=\begin{bmatrix}1&1\\0&1\end{bmatrix},\kern 5ptC=\begin{bmatrix}0&z\\0&0\end{bmatrix}A=[pq0r],B=[1011],C=[00z0]如果 p,q,r,1,zp,q,r,1,zp,q,r,1,z 都是 4×44\times44×4 的块而不是数字,答案还一样吗?
解: 首先,A(BC)=(AB)CA(BC)=(AB)CA(BC)=(AB)C 是永远正确的,该等式中括号并不需要,但是矩阵的顺序不能变。
通常情况下 AB≠BAAB\neq BAAB=BAAB=[ppqq+r],BA=[p+qrqr]AB=\begin{bmatrix}p&p\\q&q+r\end{bmatrix},\kern 5ptBA=\begin{bmatrix}p+q&r\\q&r\end{bmatrix}AB=[pqpq+r],BA=[p+qqrr]若要求 AB=BAAB=BAAB=BA,则需要满足 q=0,p=rq=0,p=rq=0,p=r。
BC=CBBC=CBBC=CB 是一个巧合:BC=[0z00],CB=[0z00]BC=\begin{bmatrix}0&z\\0&0\end{bmatrix},\kern 5ptCB=\begin{bmatrix}0&z\\0&0\end{bmatrix}BC=[00z0],CB=[00z0]若 p,q,r,zp,q,r,zp,q,r,z 均是 4×44\times 44×4 的块,111 变为 III,那么所有所有的乘积也是一样的,所有答案也一样。
4万+

被折叠的 条评论
为什么被折叠?



