矩阵的加法与数乘 一个 m×n 矩阵记为A=⎣⎡a11a21⋯am1a12a22⋯am2⋯⋯⋯⋯a1na2n⋯amn⎦⎤第 i 行第 j 列的元素 aij 称为矩阵 A 的 (i,j) 分量. 我们通常也把矩阵 A 用其元素记作A=(aij)
定义 2.1.1. 两个 m×n 矩阵A=⎣⎡a11a21⋯am1a12a22⋯am2⋯⋯⋯⋯a1na2n⋯amn⎦⎤B=⎣⎡b11b21⋯bm1b12b22⋯bm2⋯⋯⋯⋯b1nb2n⋯bmn⎦⎤的加法 A+B 定义为如下的 m×n 矩阵A+B=⎣⎡a11+b11a21+b21⋯am1+bm1a12+b12a22+b22⋯am2+bm2⋯⋯⋯⋯a1n+b1na2n+b2n⋯amn+bmn⎦⎤
如果用分量来表达的话A=(aij)B=(bij)则 A+B 为对应的分量相加A+B=(aij+bij)
由命题 1.4.12 我们知道 m×n 矩阵一一对应于 Rn→Rm 的线性映射. 考虑两个线性映射 f,g:Rn→Rm, 它们的和 f+g 定义了一个 Rn→Rm 的线性映射(f+g)(x)=f(x)+g(x)如果 f 对应于矩阵 A, g 对应于矩阵 B, 容易看出f+g⟺A+B
定义 2.1.2. 给定一个数 λ∈k 和一个 m×n 矩阵A=⎣⎡a11a21⋯am1a12a22⋯am2⋯⋯⋯⋯a1na2n⋯amn⎦⎤我们定义它们的数乘 λA 为 m×n 矩阵λA=⎣⎡λa11λa21⋯λam1λa12λa22⋯λam2⋯⋯⋯⋯λa1nλa2n⋯λamn⎦⎤
我们用 Mm×n(k) 来表示所有数域 k 中的 m×n 矩阵构成的集合 (k=R 或 C) . 如果不特别标记数域, Mm×n 指的是实系数的 m×n 矩阵的集合Mm×n=Mm×n(R)
命题 2.1.3. Mm×n 在矩阵的加法和数乘下构成一个线性空间.
通过矩阵的分量, 我们可以把矩阵 A=(aij) 一一对应于 mn 个实数 aij. 因此dimMm×n=mn
矩阵的乘法 矩阵之间可以引进乘法运算. 为了说明如何定义矩阵相乘, 我们把一个矩阵 A=(aij) 的 (i,j) 分量表示成一个箭头的样子
我们把 aij 想象成从节点 i 到另一个节点 j 的权值.
设 A 是一个 m×p 矩阵, B 是一个 p×n 矩阵. A=(aik),i=1,⋯,mk=1,⋯,p.B=(bkj),k=1,⋯,pj=1,⋯,n.
这里 k 的指标都是从 1,⋯,p, 我们可以把中间这个节点连接起来
我们考虑从 i 出发, 经过中间节点 k, 最后到 j 的过程, 并对所有的中间节点 k 的位置求和得到一个从 i 到 j 的权值 cij=k=1∑paikbkj. 这组新的数字 cij 定义了一个 m×n 的矩阵, 记作C=(cij)这个新矩阵 C 就是矩阵 A 和 B 的乘积.
定义 2.1.4. 设 A 是一个 m×p 矩阵, B 是一个 p×n 矩阵. 它们的乘积 C=AB 定义为 m×n 矩阵, 其中 C 的 (i,j) 分量为cij=k=1∑paikbkj这里 aik 是 A 的 (i,k) 分量, bkj 是 B 的 (k,j) 分量.
我们强调一下, 并不是任意两个矩阵都可以相乘. 这里两个矩阵 A,B 可以相乘的前提是 A 的列数和 B 的行数一样的, 即 “首尾相接”. Mm×p×Mp×n→相乘Mm×n
cij=k=1∑paikbkj
这个公式也表明 (AB) 的 (i,j) 分量 cij, 是 A 的第 i 行向量 [ai1⋯aip] 和 B 的第 j 列向量 ⎣⎡b1j⋮bpj⎦⎤ 对应位置的数字乘起来求和ai1b1j+ai2b2j+⋯+aipbpj.
=⎣⎡a11⋯ai1⋯am1a12⋯ai2⋯am2⋯⋯⋯⋯⋯a1p⋯aip⋯amp⎦⎤⎣⎡b11b21⋮bp1⋯⋯⋯⋯b1jb2j⋮bpj⋯⋯⋯⋯b1nb2n⋮bpn⎦⎤⎣⎡k∑a1kbk1⋯k∑aikbk1⋯k∑amkbk1k∑a1kbk2⋯⋯⋯k∑amkbk2⋯⋯k∑aikbkj⋯⋯k∑a1kbkn⋯⋯⋯k∑amkbkn⎦⎤.
例子 2.1.5. [100121]⎣⎡101110011101⎦⎤=[31112231].
我们同样可以把多个矩阵相乘. 设 A1,A2,⋯,As 依次是 m×p1,p1×p2,⋯,ps−1×n 矩阵. 则它们的乘积 A1A2⋯As 是一个 m×n 矩阵, 其 (i,j) 分量为(A1A2⋯As)ij=k1=1∑p1⋯ks−1=1∑ps−1(A1)ik1(A2)k1k2⋯(As)ks−1j这里 (Ar)kl 是矩阵 Ar 的 (k,l) 分量. 我们可以画图表示为
矩阵的乘法满足结合律(AB)C=A(BC)=ABC,这里 A 是 m×p 矩阵, B 是 p×q 矩阵, C 是 q×n 矩阵. 结合律等价于如下的求和等式l=1∑qk=1∑p(A)ik(B)kl(C)lj=k=1∑pl=1∑q(A)ik(B)kl(C)lj
线性映射的复合 我们知道线性映射一一对应于矩阵. 下面我们说明矩阵的乘法对应于线性映射的复合, 这给出了矩阵乘法定义方式的一个自然的解释. 设f:Rp→Rm,g:Rn→Rp是两个线性映射. 它们的复合得到一个映射f∘g:Rn→Rmf∘g 依然是一个线性映射: 它保加法f(g(u+v))=g线性f(g(u)+g(v))=f线性f(g(u))+f(g(v))类似可证 f∘g 保数乘.
命题 2.1.6. 如果线性映射 f:Rp→Rm 对应于 m×p 矩阵 A, g:Rn→Rp 对应于 p×n 矩阵 B. 则它们的复合 f∘g:Rn→Rm 对应于 m×n 矩阵 AB. 即矩阵的乘法对应于线性映射的复合.
证明: 记 Rn 的标准基e1=⎣⎡10⋮0⎦⎤e2=⎣⎡01⋮0⎦⎤⋯en=⎣⎡00⋮1⎦⎤和 Rp 的标准基u1=⎣⎡10⋮0⎦⎤u2=⎣⎡01⋮0⎦⎤⋯up=⎣⎡00⋮1⎦⎤
g:Rn→Rp 对应的 p×n 矩阵 B 为B=[g(e1)g(e2)⋯g(en)],用矩阵元可以写成g(ej)=⎣⎡b1jb2j⋮bpj⎦⎤=b1ju1+⋯+bpjup
f:Rp→Rm 对应的 m×p 矩阵 A 为A=[f(u1)f(u2)⋯f(up)],用矩阵元可以写成f(uk)=⎣⎡a1ka2k⋮amk⎦⎤
我们考虑复合 f∘g:Rn→Rm, 其对应于矩阵[f(g(e1))f(g(e2))⋯f(g(en))]它的第 j 列为f(g(ej))==f(b1ju1+⋯+bpjup)=b1jf(u1)+⋯+bpjf(up)b1j⎣⎡a11a21⋮am1⎦⎤+⋯+bpj⎣⎡a1pa2p⋮amp⎦⎤=⎣⎡k=1∑pa1kbkjk=1∑pa2kbkj⋮k=1∑pamkbkj⎦⎤.因此 f∘g 对应的矩阵[f(g(e1))f(g(e2))⋯f(g(en))]=⎣⎡k∑a1kbk1⋯k∑aikbk1⋯k∑amkbk1k∑a1kbk2⋯⋯⋯k∑amkbk2⋯⋯k∑aikbkj⋯⋯k∑a1kbkn⋯⋯⋯k∑amkbkn⎦⎤即为矩阵 A 和 B 的乘积 AB.□
我们可以对比一下矩阵乘积的表示法
和映射复合的表示法
矩阵乘法的结合律对应于映射复合的结合律.
我们可以用矩阵把线性映射写成显式的形式. 设 f:Rn→Rm 是线性映射, 对应于 m×n 矩阵 AA=[f(e1)f(e2)⋯f(en)]=⎣⎡a11a21⋯am1a12a22⋯am2⋯⋯⋯⋯a1na2n⋯amn⎦⎤对于 Rn 中任一向量 x=⎣⎡x1x2⋯xn⎦⎤=x1e1+⋯+xnen
=f(x)=x1f(e1)+⋯+xnf(en)⎣⎡a11x1+a12x2+⋯a1nxna21x1+a22x2+⋯a2nxn⋯am1x1+am2x2+⋯amnxn⎦⎤=⎣⎡a11a21⋯am1a12a22⋯am2⋯⋯⋯⋯a1na2n⋯amn⎦⎤⎣⎡x1x2⋯xn⎦⎤因此写成向量形式, 线性映射 f:Rn→Rmf:⎣⎡x1x2⋯xn⎦⎤↦⎣⎡a11a21⋯am1a12a22⋯am2⋯⋯⋯⋯a1na2n⋯amn⎦⎤⎣⎡x1x2⋯xn⎦⎤恰好是把 n 维列向量 (即 n×1 矩阵) 乘以 m×n 矩阵 A, 得到 m 维列向量 (即 m×1 矩阵) .
总结一下, 线性映射和矩阵的关系可以用矩阵乘法表达为f:Rnf(x)→Rm=Ax,x=⎣⎡x1x2⋯xn⎦⎤
分块矩阵 分块矩阵是指将矩阵按照某种方式划分成若干个小矩阵 (块) . 分块矩阵是将大矩阵分解为较小矩阵的一种有效方法, 有助于简化计算和表示结构化数据.
一个 m×n 矩阵可以分块表示为A=⎣⎡A11A21⋮Am1A12A22⋮Am2⋯⋯⋱⋯A1nA2n⋮Amn⎦⎤其中 Aij 是块矩阵的元素, 通常是较小的矩阵. 例如, Aij 可以是 pi×qj 矩阵, 其中 pi 和 qj 是适当选择的维度.
假设我们有两个矩阵 A 和 B, 它们分别分块表达为: A=[A11A21A12A22]B=[B11B21B12B22]其中 Aij 和 Bij 的维度需要满足乘法的条件. 乘积 C=AB 也会是一个分块矩阵: C=[C11C21C12C22]其中每个块的计算可以通过类似的矩阵乘法公式得到: Cij=k∑AikBkj
具体而言, 我们有C=[A11B11+A12B21A21B11+A22B21A11B12+A12B22A21B12+A22B22]
注记. 注意到 Aij,Bij 都是一些矩阵块而不再是数字, 公式里每个矩阵块的乘积表达顺序是重要的. 这里我们需要按照乘积顺序把 A 的矩阵块写在前面, B 的矩阵块写在后面. 例如 C11 的矩阵元是 A11B11+A12B21, 而不能写成 B11A11+B21A12. 类似地矩阵乘法公式对于多个分块也是成立的, 具体细节留给读者证明.
例子 2.1.7. 考虑把如下矩阵进行分块: A=⎣⎡[1324][78][56]9⎦⎤B=⎣⎡[1001][45][23]6⎦⎤
按照如上分块计算矩阵乘积 C=ABC11=[1324][1001]+[56][45]=[1324]+[20242530]=[21272734]C12=[1324][23]+[56]6=[818]+[3036]=[3854]C21=[78][1001]+9[45]=[78]+[3645]=[4353]C22=[78][23]+9∗6=38+54=92因此我们得到矩阵 AB 的分块表达AB=⎣⎡[21272734][4353][3854]92⎦⎤
例子 2.1.8. 设 A 是 m×p 矩阵, B 是 p×n 矩阵. 它们的乘积 AB 是 m×n 矩阵. 我们可以通过分块来得到乘积 AB 的行和列的表达.
首先我们把 B 分块成列向量的样子B=[β1β2⋯βn]这里 βj 是 Rp 中的列向量. 则作为分块矩阵, 我们得到如下公式AB=A[β1β2⋯βn]=[Aβ1Aβ2⋯Aβn]即 AB 的第 j 列的列向量为 Aβj.
类似地, 我们把 A 分块成行向量的样子A=⎣⎡α1α1⋮αm⎦⎤这里 αi 是 Rp 中的行向量. 则作为分块矩阵, 我们得到如下公式AB=⎣⎡α1α2⋮αm⎦⎤B=⎣⎡α1Bα2B⋮αmB⎦⎤即 AB 的第 i 行的行向量为 αiB.
上面两个公式也可以直接通过矩阵乘法的定义来验证.