大型矩陣往往含有逐項閱讀時不易看出的簡單結構:前幾列可能代表一組變量,其餘列代表另一組變量,各組行也可能來自不同類型的方程。分塊就是在不改變任何元素的前提下,把這些分組明確記錄下來。
所以,分塊記號只是觀察層次的改變,並不是一種新的矩陣。每一步合法的分塊運算,最終仍須由普通的逐項加法或行乘列法則來說明。它的優點,是在計算變大之前先把結構與維數關係顯示出來。
選擇能顯示結構的分塊
假設線性模型的輸入分成大小為 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並不行等價;缺少的正是兩塊使用同一序列的條件。