大型矩阵往往含有逐项阅读时不易看出的简单结构:前几列可能代表一组变量,其余列代表另一组变量,各组行也可能来自不同类型的方程。分块就是在不改变任何元素的前提下,把这些分组明确记录下来。
所以,分块记号只是观察层次的改变,并不是一种新的矩阵。每一步合法的分块运算,最终仍须由普通的逐项加法或行乘列法则来说明。它的优点,是在计算变大之前先把结构与维数关系显示出来。
选择能显示结构的分块
假设线性模型的输入分成大小为 s1,s2 的两组,输出分成大小为
r1,r2 的两组。表示这个模型的矩阵便自然分成四块;位置 (i,j) 的块表示第 j 组输入怎样影响第 i 组输出。
分割线只有反映数学结构时才有帮助。常见选择会分离系数组、单位块、零块、重复模式,或线性变换的不同阶段。任意分割虽然合法,却不一定能简化问题。
每次运算前应问三件事:
- 各分块行的高度及各分块列的宽度是多少?
- 对整体矩阵而言,拟进行的运算是否有定义?
- 若使用分块公式,其中每个乘积与每个和的维数是否相容?
第二与第三问必须分开。整体大小相同的两个矩阵总能逐项相加,即使显示出的分块线不同;此时不能做的,只是把当前两种分块表示中的块直接一一配对。
记录各块的大小
设 A∈Fm×n,并选取正整数使
m=r1+⋯+rp,n=s1+⋯+sq.把行依次分成高度为 r1,…,rp 的组,把列依次分成宽度为
s1,…,sq 的组,就可写成
A=[Aij]1≤i≤p,1≤j≤q,Aij∈Fri×sj.Aij 是第 i 个分块行、第 j 个分块列中的子矩阵。同一分块行内各块都有 ri 行,同一分块列内各块都有 sj 列。
分块网格是附加在原矩阵上的记号;去掉分块线后仍是同一个 m×n 矩阵。增加分块线称为分割的细化,去掉分块线称为粗化。若同一矩阵上的两个分割不同,把双方所有水平与垂直分块线合在一起,就得到一个共同细化。
设
A=[Aij]p×q,B=[Bjk]q×ℓ.若存在正整数 ri,sj,tk,使得
Aij∈Fri×sj,Bjk∈Fsj×tk,就称两个分割对乘法相容。也就是说,A 的第 j 个分块列宽度 sj
必须逐组等于 B 的第 j 个分块行高度。内侧分块线的位置与数目要一致;
A 的外侧行分割和 B 的外侧列分割则不必相同。
标量乘法不涉及第二个矩阵:标量直接乘到每一个已显示的分块即可。
不同分块行的高度不必相等,不同分块列的宽度也不必相等,块本身更不必是方阵,一个矩阵的分块行数与分块列数也不必相同。真正需要的是每条带状区域内维数一致:同一分块行共享一个高度,同一分块列共享一个宽度。把这些行高和列宽明确写出,通常比只凭图中的分块线判断相容性更可靠。
分块运算何时成立
设 A,B∈Fm×n。
- 只要整体维数相同,普通矩阵和 A+B 就有定义,与所用分块线无关。
- 若两者使用相同的行分割 (r1,…,rp) 与列分割
(s1,…,sq),则
A+B=[Aij+Bij]p×q.
- 若两种分块表示不同,可以去掉分块线、把两者重新作同一分块,或加入双方全部分块线形成共同细化;此后便可在共享网格中逐块相加。
- 若 A=[Aij]p×q 且
Aij∈Fri×sj,则转置矩阵位置 (j,i) 的块满足
(AT)ji=AijT,(AT)ji∈Fsj×ri.转置会交换分块行与分块列,并把每一块本身转置。
设
A=[Aij]p×q,Aij∈Fri×sj,以及
B=[Bjk]q×ℓ,Bjk∈Fsj×tk.则普通乘积 AB 有定义,并具有分块
AB=[Cik]p×ℓ,Cik=(AB)ik=j=1∑qAijBjk.固定 i,k 后,每个 AijBjk 都是 ri×tk 矩阵,所以这些项确实可以相加,且
Cik∈Fri×tk。
在 2×2 分块情形,公式就是
AB=[A11B11+A12B21A21B11+A22B21A11B12+A12B22A21B12+A22B22].
它的外观与普通 2×2 乘法相同,却不能因此忽略维数或次序。矩阵块的乘法通常不可交换,每个和中的各项也必须同型。
为什么分组不会改变运算法则
对加法,固定任意元素位置 (a,b),A+B 在该处就是
aab+bab。共享网格只把这些逐项和重新组成长方形,因此 (i,j)
块正是 Aij+Bij。若原分块线不同,双方分块线的并集仍把同一批行与列分成连续小组,故共同细化总能让各块直接配对。
对转置,位置 (a,b) 的元素移到 (b,a)。所以原来位于 (i,j) 的长方形移到 (j,i),且自身的行、列交换,得到 AijT,维数由
ri×sj 变成 sj×ri。
对乘法,固定属于 A 第 i 个分块行的一行,以及属于 B 第 k 个分块列的一列。普通的行乘列点积会对所有公共内坐标求和。把这个和按照
s1,…,sq 分组,第 j 组的贡献恰是 AijBjk 中的对应元素。因此
(AB)ik=Ai1B1k+⋯+AiqBqk.分块乘法没有创造新法则;它只是把普通行乘列之和分组,既不漏项也不重复。
下面的图解把选择分割、检查维数和组合乘积的过程连起来。
分块与分块乘积观看切线如何产生分块矩阵、为什么逐块加法需要相同分割,以及相容区块乘积如何重现普通乘法规则。
先定分割
水平与垂直切线把一个矩阵分成长方形区块 A_ij。若 A_ij 有 m_i 行和 p_j 列,区块标记同时带有大小信息。
加法要同样切线
逐块加法要求相同分割,因此每个 A_ij 都要有同样大小的对应 B_ij。
标量作用每块
数乘保留分割:cA 是以 cA_ij 作为各区块的分块矩阵。
2 x 2 分块乘积
对相容的 2 x 2 分块,AB 的左上区块是 C_11=A_11B_11+A_12B_21,模式与普通矩阵乘法相同。
相容性检查
公式只有在每个 A_ikB_kj 都有定义时才可用。若 A_ik 是 m_i x p_k,而 B_kj 是 p_k x n_j,乘积大小就是 m_i x n_j。
列分块桥接
当 B 被分成多列时,AB=[Ab_1,Ab_2,...,Ab_r]。这就是之后组织多个右端时会用到的同一种簿记想法。
分块矩阵只是把普通矩阵代数提升到较大的观察尺度。必须先固定分割,加法需要相同切线,而乘法只有在公式中每个区块乘积都是普通有定义矩阵乘积时才成立。
从相容大小到分块乘积
例题 3.6.5
(带着维数读 2 × 2 符号公式)
设 A 的分块行高为 (r1,r2)、分块列宽为 (s1,s2),B 的分块列宽为 (t1,t2)。例如
A11∈Fr1×s1,B12∈Fs1×t2,A12∈Fr1×s2,B22∈Fs2×t2.所以 A11B12 与 A12B22 都是 r1×t2,从而
(AB)12=A11B12+A12B22∈Fr1×t2.这就是符号公式背后的维数检查;其他输出块也必须通过同样检查。
例题 3.6.6
(两种分块表示不同,普通加法仍有定义)
考虑
A=1300142−1512−2,B=2−15120041301.把 A 的行、列分别按 1+2、2+2 分割,把 B 的行、列分别按
2+1、1+3 分割。当前左上块分别是 1×2 与 2×1,不能直接配对。但两个原矩阵同为 3×4,所以
A+B=32513423642−1.若要逐块计算,取共同的行分割 1+1+1 和列分割 1+1+2 即可。障碍来自当前记号,而不是矩阵和本身。
把一个 3×5 矩阵的行按 1+2、列按 2+3 分割:
A=15026107−1382493.四块大小依次为 1×2,1×3,2×2,2×3。转置后
AT=120345678901−123.新的行分割是 2+3,列分割是 1+2;原右上 1×3 块成为左下
3×1 块。块不必是方阵,转置只会交换两个维数。
采用外侧行分割 (2,1)、内侧分割 (1,2) 与外侧列分割 (2,1):
A=1322−11045,B=10421−1321.这里 A11 是 2×1,A12 是 2×2,B11 是
1×2,B21 是 2×2。四个输出块为
C11C12C21C22=A11B11+A12B21=[11941],=A11B12+A12B22=[711],=A21B11+A22B21=[220],=A21B12+A22B22=[13].例如右上块的实际计算是
C12=[13][3]+[2−104][21]=[39]+[42]=[711].组合各块便得到
AB=1192241071113.
分块乘法前的维数检查
概念视角代数
内侧分块必须对应同一组坐标
计算输出块 (i,k) 前,先逐项写出
(ri×sj)(sj×tk)=ri×tk.对每个内侧指标 j 都要检查。重复的 sj 保证各乘积有定义;保持不变的
ri,tk 保证所得乘积同型并可相加。最后还要核对:答案的分块行高总和等于
A 的行数,分块列宽总和等于 B 的列数。
对任何符号乘积之和,都要作两项检查:每个乘积须有定义,所有待相加结果须同型。在真正相容的分块网格中,固定的 ri,tk 会自动保证第二项。若只是任意罗列一组不共享相应分块行高与分块列宽的子矩阵,就不能对它套用这个定理。
具体设 A 是 2×4 矩阵,B 是 4×3 矩阵。若 A 的列按 1+3 分组,B 的行却按 2+2 分组,普通乘积仍有定义,但目前的分块不能直接相乘:第一个拟议块乘积的内侧大小分别是一与二,第二个则是三与二,都不匹配。
保留双方的分割位置,把共同的内侧坐标细分成 1+1+2,并把所得分块写为
A=[C1 C2 C3],B=D1D2D3.此时 C1,C2 是 2×1,C3 是 2×2;D1,D2 是 1×3,D3 是 2×3。所以 AB=C1D1+C2D2+C3D3,三个待相加矩阵都是 2×3。细化分割修复了分块计算,却没有改变任何矩阵元素。共同的内侧分组说明哪些坐标一起贡献一个乘积,因而是公式成立的依据之一。
常见错误
只要整体维数相同,不同分块线不会使 A+B 无定义;它们只使当前分块中的块不能直接配对。可去掉分块线、重新作相同分块,或取共同细化。
m×n 矩阵能乘 n×u 矩阵,并不代表任意分块显示都相容。内侧分块边界也须一致,否则应先重新分块。
常见错误
(把同位置的块相乘,而不是分块行乘分块列)
(AB)ik 是对内侧指标 j 求和,不只是 AikBik。必须按原次序让 A 的完整分块行与 B 的完整分块列配对。
即使 AijBjk 与 BjkAij 都有定义,两者也未必相等。定理中的次序继承自普通矩阵乘法,不能任意颠倒。
分块计算的检查要点
- 行分割与列分割共同决定分块;同一分块行有共同高度,同一分块列有共同宽度。
- 相同整体维数足以保证普通加法有定义。只有直接逐块配对才要求分块表示一致;不同分割可改成共同细化。
- 转置交换分块网格并逐块转置:(AT)ji=AijT。
- 若 Aij∈Fri×sj、
Bjk∈Fsj×tk,则
(AB)ik=j∑AijBjk 是 ri×tk 矩阵。
- 分块乘法只是把普通行乘列的内侧求和按连续坐标组整理;实际计算前必须先检查维数。
练习
快速检查
(为什么两个分块矩阵要有相同分割方式,才能逐块相加?)
解答 · 答案
直接逐块相加时,一边的每个块都必须在另一边找到同样大小的对应块。这是对分块表示的要求;只要整体维数相同,原矩阵仍可逐项相加。
快速检查
(四个因子 A11、B12、A12、B22 的大小依次为 2×1、1×4、2×3、3×4。求 A11B12+A12B22 的大小。)
解答 · 答案
两个乘积的大小都是 2×4,各自相乘的内维数分别是 1 和 3。因此它们可以相加,右上输出块的大小为 2×4。
快速检查
(请解释:为什么分块乘法本质上仍然是普通矩阵乘法?)
解答 · 引导解答
分块乘法使用普通乘法的同一条规则;它只按照分块线,把每个行乘列点积中的求和项分组,没有增加、遗漏或改变任何求和项的次序。
快速检查
(两个 4×4 矩阵的行分组分别为 1+3 和 2+2,列分组同为 2+2。求能让两者直接逐块相加的最粗共同行细化。)
解答 · 引导解答
保留第 1 行和第 2 行之后的分割线,共同行分组便是 1+1+2;列分组仍为 2+2。这样两者的对应块大小相同,而所有矩阵元素都没有改变。
设
A11=[12],A12=[−1],B12=[1302],B22=[−21].求 (AB)12=A11B12+A12B22,并写出其维数。
解答 · 引导解答
两个乘积的形状分别为
(1×2)(2×2)=1×2 与
(1×1)(1×2)=1×2,所以可以相加。计算得
A11B12=[74],A12B22=[2−1],从而
(AB)12=[93].答案是 1×2 块。先写维数,正好说明最后的数值加法为何合法。
相关笔记
若普通矩阵乘法的模式仍未稳固,可先回看
3.2 矩阵乘法、单位矩阵与线性方程组。
下一章可接着读
4.1 齐次方程组与零空间。稍后的 5.1 可逆矩阵
会把矩阵结构连到可逆性。
补充练习与完整解答
第 29 题
本题的矩阵及未另行说明的标量参数均取实数。矩阵尺寸为正整数;O 表示相应尺寸的零矩阵。
题目
v1,…,vn∈Rm,λ1,…,λn∈R.
由矩阵相等的定义或其他方法证明 [v1 ⋯ vn](λ1,…,λn)T=j∑λjvj。更一般地,若 Aᵢ 为 m×nᵢ、Bᵢ 为 nᵢ×p(i=1,…,q),则横向分块行乘纵向分块列等于 ΣᵢAᵢBᵢ。也说明该一般结论。
解答
[v1 ⋯ vn]λ1⋮λnr=j=1∑n(vj)rλj=(j=1∑nλjvj)r(1≤r≤m).
[A1 ⋯ Aq]B1⋮Bq=i=1∑qAiBi.
N0=0,Ni=h=1∑inh,k=1∑Nqarkbks=i=1∑qt=1∑ni(Ai)rt(Bi)ts=(i=1∑qAiBi)rs.
第一个公式在每个坐标 r 上成立,因此两列向量相等。备注中所有 AᵢBᵢ 均为 m×p。将内部指标 k 分成互不重叠的连续区间 Nᵢ₋₁+1,…,Nᵢ,再令 k=Nᵢ₋₁+t,得到所列有限和恒等式,逐项证明一般公式。
第 30 题
本题的矩阵及未另行说明的标量参数均取实数。矩阵尺寸为正整数;O 表示相应尺寸的零矩阵。
题目
A∈Mm×n(R),B=[B1 ⋯ Bs],Bi∈Mn×pi(R).
由乘法定义或其他方法证明 AB=[AB₁ … ABₛ]。类似地,若 A 改为 Aᵢ∈Mmi×n 的纵向堆叠,B∈Mn×p,则 AB 是 AᵢB 的纵向堆叠。也说明此类似结论。
解答
P0=0,Pi=h=1∑iph,(AB)r,Pi−1+j=k=1∑nark(Bi)kj=(ABi)rj(1≤j≤pi).
AB=[AB1 ⋯ ABs].
A=A1⋮As,M0=0,Mi=h=1∑imh⟹(AB)Mi−1+r,j=k=1∑n(Ai)rkbkj=(AiB)rj.
AB=A1B⋮AsB.
在横向分块中,Pᵢ₋₁+j 是 Bᵢ 的局部第 j 列对应的整体列号。所列等式覆盖每一行与每一个局部列,故证明第一个结果。纵向分块中,Mᵢ₋₁+r 是 Aᵢ 的局部第 r 行对应的整体行号,第二个等式覆盖全部输出元素,证明备注。各乘积的尺寸均相容。
题 11
设A,A′为m×n矩阵,B,B′为p×n矩阵。若A∼A′且B∼B′,证明[AB]∼[A′B′]。
完整解答
以下在实数上讨论。行替换的源行与目标行不同,缩放系数非零;操作作用于整行,包括所有增广块。有限链中第一步先作用,所以合并左乘矩阵中的初等矩阵按相反次序排列。
取一条把A化为A′的有限操作链,仅在堆叠矩阵的前m行上施行:交换或行相加只使用1,…,m中的行号,缩放也只改变相应顶行。因此下面p行不变,得到[A′;B]。再取把B化为B′的有限链,把其中每个行号i换成m+i后施行。这些都是下方p行之间的合法操作,保持顶块不变,得到[A′;B′]。拼接后的链有限,且始终作用于同样的(m+p)×n尺寸,因而证明结论。任一链为空的情况也包含在内。
题 12
设A,B为m×n矩阵,在前p列后分块为A=[A′∣A′′]、B=[B′∣B′′]。(a) 证明:A∼B当且仅当存在同一行变换序列,同时把A′化为B′、把A′′化为B′′。(b) 对以下断言给出反例并说明:分别有A′∼B′及A′′∼B′′,就足以推出A∼B。
完整解答
以下在实数上讨论。行替换的源行与目标行不同,缩放系数非零;操作作用于整行,包括所有增广块。有限链中第一步先作用,所以合并左乘矩阵中的初等矩阵按相反次序排列。
(a) 每个初等行变换对整行的每一项使用同一规则:交换整整两行,缩放把一行每项乘相同系数,行替换在每一列都加上源行的同一倍数。因此,对水平拼接矩阵施行一步操作,等价于对各块施行同一步操作。对有限序列长度归纳,便知从A到B的序列在两块上分别限制为同一序列。反过来,若同一序列把两块都化为各自目标块,将其作用于整体,就同时得到两个目标块,即B。两个方向均已证明。
(b) 取m=1,n=2,p=1,A=[1∣1]、B=[1∣2]。首块相等,空链就证明行等价;第二块[1]与[2]可由乘2相连,故也行等价。但矩阵只有一行,没有两条不同行可交换或用于行替换;所有合法步骤只有非零数乘这一行。因此任意有限链都把A送到某个[c,c],其中c=0。它不可能等于[1,2],因为首项迫使c=1,第二项却迫使c=2。所以A,B并不行等价;缺少的正是两块使用同一序列的条件。