Evanalysis
3.6預計閱讀時間: 20 分鐘

3.6 分塊矩陣

把大矩陣分割成較小的分塊,並以這些分塊為單位進行熟悉的運算。

課程目錄

大型矩陣往往含有逐項閱讀時不易看出的簡單結構:前幾列可能代表一組變量, 其餘列代表另一組變量,各組行也可能來自不同類型的方程。分塊就是在不改變 任何元素的前提下,把這些分組明確記錄下來。

所以,分塊記號只是觀察層次的改變,並不是一種新的矩陣。每一步合法的分塊 運算,最終仍須由普通的逐項加法或行乘列法則來說明。它的優點,是在計算變大 之前先把結構與維數關係顯示出來。

選擇能顯示結構的分塊

假設線性模型的輸入分成大小為 s1,s2s_1,s_2 的兩組,輸出分成大小為 r1,r2r_1,r_2 的兩組。表示這個模型的矩陣便自然分成四塊;位置 (i,j)(i,j) 的塊 表示第 jj 組輸入怎樣影響第 ii 組輸出。

分割線只有反映數學結構時才有幫助。常見選擇會分離係數組、單位塊、零塊、重複 模式,或線性變換的不同階段。任意分割雖然合法,卻不一定能簡化問題。

每次運算前應問三件事:

  1. 各分塊行的高度及各分塊列的寬度是多少?
  2. 對整體矩陣而言,擬進行的運算是否有定義?
  3. 若使用分塊公式,其中每個乘積與每個和的維數是否相容?

第二與第三問必須分開。整體大小相同的兩個矩陣總能逐項相加,即使顯示出的 分塊線不同;此時不能做的,只是把目前兩種分塊表示中的分塊直接一一配對。

記錄各塊的大小

定義

矩陣的分塊

設 A∈Fm×nA \in \mathbb F^{m\times n},並選取正整數使

m=r1+⋯+rp,n=s1+⋯+sq.m=r_1+\cdots+r_p, \qquad n=s_1+\cdots+s_q.

把行依次分成高度為 r1,…,rpr_1,\ldots,r_p 的組,把列依次分成寬度為 s1,…,sqs_1,\ldots,s_q 的組,就可寫成

A=[Aij]1≤i≤p, 1≤j≤q,Aij∈Fri×sj.A=[A_{ij}]_{1\leq i\leq p,\,1\leq j\leq q}, \qquad A_{ij}\in\mathbb F^{r_i\times s_j}.

AijA_{ij} 是第 ii 個分塊行、第 jj 個分塊列中的子矩陣。同一分塊行內 各塊都有 rir_i 行,同一分塊列內各塊都有 sjs_j 列。

分塊網格是附加在原矩陣上的記號;移除分塊線後仍是同一個 m×nm\times n 矩陣。 增加分塊線稱為分割的細化,移除分塊線稱為粗化。若同一矩陣上的兩個 分割不同,把雙方所有水平與垂直分塊線合在一起,就得到一個共同細化。

定義

乘法相容的分塊

設

A=[Aij]p×q,B=[Bjk]q×ℓ.A=[A_{ij}]_{p\times q}, \qquad B=[B_{jk}]_{q\times \ell}.

若存在正整數 ri,sj,tkr_i,s_j,t_k,使得

Aij∈Fri×sj,Bjk∈Fsj×tk,A_{ij}\in\mathbb F^{r_i\times s_j}, \qquad B_{jk}\in\mathbb F^{s_j\times t_k},

就稱兩個分割對乘法相容。換句話說,AA 的第 jj 個分塊列寬度 sjs_j 必須逐組等於 BB 的第 jj 個分塊行高度。內側分塊線的位置與數目要一致; AA 的外側行分割和 BB 的外側列分割則不必相同。

純量乘法不涉及第二個矩陣:純量直接乘到每一個已顯示的分塊即可。

不同分塊行的高度不必相等,不同分塊列的寬度也不必相等,分塊本身更不必是方陣, 一個矩陣的分塊行數與分塊列數也不必相同。真正需要的是每條帶狀區域內維數一致: 同一分塊行共享一個高度,同一分塊列共享一個寬度。把這些行高和列寬明確寫出, 通常比只憑圖中的分塊線判斷相容性更可靠。

分塊運算何時成立

定理

分塊加法與轉置的相容性

設 A,B∈Fm×nA,B\in\mathbb F^{m\times n}。

  • 只要整體維數相同,普通矩陣和 A+BA+B 就有定義,與所用分塊線無關。
  • 若兩者使用相同的行分割 (r1,…,rp)(r_1,\ldots,r_p) 與列分割 (s1,…,sq)(s_1,\ldots,s_q),則
A+B=[Aij+Bij]p×q.A+B=[A_{ij}+B_{ij}]_{p\times q}.
  • 若兩種分塊表示不同,可以移除分塊線、把兩者重新作同一分塊,或加入雙方全部 分塊線形成共同細化;此後便可在共享網格中逐塊相加。
  • 若 A=[Aij]p×qA=[A_{ij}]_{p\times q} 且 Aij∈Fri×sjA_{ij}\in\mathbb F^{r_i\times s_j},則轉置矩陣位置 (j,i)(j,i) 的塊滿足
(AT)ji=AijT,(AT)ji∈Fsj×ri.(A^T)_{ji}=A_{ij}^T, \qquad (A^T)_{ji}\in\mathbb F^{s_j\times r_i}.

轉置會交換分塊行與分塊列,並把每一塊本身轉置。

定理

分塊乘法定理

設

A=[Aij]p×q,Aij∈Fri×sj,A=[A_{ij}]_{p\times q}, \qquad A_{ij}\in\mathbb F^{r_i\times s_j},

以及

B=[Bjk]q×ℓ,Bjk∈Fsj×tk.B=[B_{jk}]_{q\times \ell}, \qquad B_{jk}\in\mathbb F^{s_j\times t_k}.

則普通乘積 ABAB 有定義,並具有分塊

AB=[Cik]p×ℓ,Cik=(AB)ik=∑j=1qAijBjk.AB=[C_{ik}]_{p\times\ell}, \qquad C_{ik}=(AB)_{ik}=\sum_{j=1}^{q}A_{ij}B_{jk}.

固定 i,ki,k 後,每個 AijBjkA_{ij}B_{jk} 都是 ri×tkr_i\times t_k 矩陣, 所以這些項確實可以相加,且 Cik∈Fri×tkC_{ik}\in\mathbb F^{r_i\times t_k}。

在 2×22\times2 分塊情形,公式就是

AB=[A11B11+A12B21A11B12+A12B22A21B11+A22B21A21B12+A22B22].AB= \begin{bmatrix} A_{11}B_{11}+A_{12}B_{21} & A_{11}B_{12}+A_{12}B_{22}\\ A_{21}B_{11}+A_{22}B_{21} & A_{21}B_{12}+A_{22}B_{22} \end{bmatrix}.

它的外觀與普通 2×22\times2 乘法相同,卻不能因此忽略維數或次序。矩陣塊的 乘法通常不可交換,每個和中的各項也必須同型。

為甚麼分組不會改變運算法則

證明

為甚麼分塊公式就是普通矩陣公式

對加法,固定任意元素位置 (a,b)(a,b),A+BA+B 在該處就是 aab+baba_{ab}+b_{ab}。共享網格只把這些逐項和重新組成長方形,因此 (i,j)(i,j) 分塊正是 Aij+BijA_{ij}+B_{ij}。若原分塊線不同,雙方分塊線的並集仍把同一批行與列 分成連續小組,故共同細化總能讓各分塊直接配對。

對轉置,位置 (a,b)(a,b) 的元素移到 (b,a)(b,a)。所以原來位於 (i,j)(i,j) 的 長方形移到 (j,i)(j,i),且自身的行、列交換,得到 AijTA_{ij}^T,維數由 ri×sjr_i\times s_j 變成 sj×ris_j\times r_i。

對乘法,固定屬於 AA 第 ii 個分塊行的一行,以及屬於 BB 第 kk 個 分塊列的一列。普通的行乘列點積會對所有公共內座標求和。把這個和按照 s1,…,sqs_1,\ldots,s_q 分組,第 jj 組的貢獻恰是 AijBjkA_{ij}B_{jk} 中的對應 元素。因此

(AB)ik=Ai1B1k+⋯+AiqBqk.(AB)_{ik}=A_{i1}B_{1k}+\cdots+A_{iq}B_{qk}.

分塊乘法沒有創造新法則;它只是把普通行乘列之和分組,既不漏項也不重複。

下面的圖解把選擇分割、檢查維數和組合乘積的過程連起來。

分塊與分塊乘積

觀看切線如何產生分塊矩陣、為何逐塊加法需要相同分割,以及相容區塊乘積如何重現普通乘法規則。

  1. 先定分割

    水平與垂直切線把一個矩陣分成長方形區塊 A_ij。若 A_ij 有 m_i 行和 p_j 列,區塊標記同時帶有大小資訊。

  2. 加法要同樣切線

    逐塊加法要求相同分割,因此每個 A_ij 都要有同樣大小的對應 B_ij。

  3. 純量作用每塊

    純量乘法保留分割:cA 是以 cA_ij 作為各區塊的分塊矩陣。

  4. 2 x 2 分塊乘積

    對相容的 2 x 2 分塊,AB 的左上區塊是 C_11=A_11B_11+A_12B_21,模式與普通矩陣乘法相同。

  5. 相容性檢查

    公式只有在每個 A_ikB_kj 都有定義時才可用。若 A_ik 是 m_i x p_k,而 B_kj 是 p_k x n_j,乘積大小就是 m_i x n_j。

  6. 列分塊橋接

    當 B 被分成多列時,AB=[Ab_1,Ab_2,...,Ab_r]。這就是之後組織多個右端時會用到的同一種簿記想法。

分塊矩陣只是把普通矩陣代數提升到較大的觀察尺度。必須先固定分割,加法需要相同切線,而乘法只有在公式中每個區塊乘積都是普通有定義矩陣乘積時才成立。

由相容大小到分塊乘積

例題

帶着維數讀 2 × 2 符號公式

設 AA 的分塊行高為 (r1,r2)(r_1,r_2)、分塊列寬為 (s1,s2)(s_1,s_2),BB 的 分塊列寬為 (t1,t2)(t_1,t_2)。例如

A11∈Fr1×s1,B12∈Fs1×t2,A12∈Fr1×s2,B22∈Fs2×t2.A_{11}\in\mathbb F^{r_1\times s_1}, \quad B_{12}\in\mathbb F^{s_1\times t_2}, \quad A_{12}\in\mathbb F^{r_1\times s_2}, \quad B_{22}\in\mathbb F^{s_2\times t_2}.

所以 A11B12A_{11}B_{12} 與 A12B22A_{12}B_{22} 都是 r1×t2r_1\times t_2,從而

(AB)12=A11B12+A12B22∈Fr1×t2.(AB)_{12}=A_{11}B_{12}+A_{12}B_{22} \in\mathbb F^{r_1\times t_2}.

這就是符號公式背後的維數檢查;其他輸出塊也必須通過同樣檢查。

例題

兩種分塊表示不同,普通加法仍有定義

考慮

A=[102131−12045−2],B=[2103−12405011].A= \begin{bmatrix} 1&0&2&1\\3&1&-1&2\\0&4&5&-2 \end{bmatrix}, \qquad B= \begin{bmatrix} 2&1&0&3\\-1&2&4&0\\5&0&1&1 \end{bmatrix}.

把 AA 的行、列分別按 1+21+2、2+22+2 分割,把 BB 的行、列分別按 2+12+1、1+31+3 分割。目前左上塊分別是 1×21\times2 與 2×12\times1, 不能直接配對。但兩個原矩陣同為 3×43\times4,所以

A+B=[31242332546−1].A+B= \begin{bmatrix} 3&1&2&4\\2&3&3&2\\5&4&6&-1 \end{bmatrix}.

若要逐塊計算,取共同的行分割 1+1+11+1+1 和列分割 1+1+21+1+2 即可。障礙來自 目前記號,而不是矩陣和本身。

例題

不同尺寸的矩形分塊及其轉置

把一個 3×53\times5 矩陣的行按 1+21+2、列按 2+32+3 分割:

A=[120345678901−123].A=\left[ \begin{array}{cc|ccc} 1&2&0&3&4\\ \hline 5&6&7&8&9\\ 0&1&-1&2&3 \end{array}\right].

四塊大小依次為 1×2,1×3,2×2,2×31\times2,1\times3,2\times2,2\times3。轉置後

AT=[15026107−1382493].A^T=\left[ \begin{array}{c|cc} 1&5&0\\ 2&6&1\\ \hline 0&7&-1\\ 3&8&2\\ 4&9&3 \end{array}\right].

新的行分割是 2+32+3,列分割是 1+21+2;原右上 1×31\times3 塊成為左下 3×13\times1 塊。分塊不必是方陣,轉置只會交換兩個維數。

例題

完整的數值分塊乘法

採用外側行分割 (2,1)(2,1)、內側分割 (1,2)(1,2) 與外側列分割 (2,1)(2,1):

A=[1203−14215],B=[1230124−11].A=\left[ \begin{array}{c|cc} 1&2&0\\3&-1&4\\ \hline 2&1&5 \end{array}\right], \qquad B=\left[ \begin{array}{cc|c} 1&2&3\\ \hline 0&1&2\\4&-1&1 \end{array}\right].

這裏 A11A_{11} 是 2×12\times1,A12A_{12} 是 2×22\times2,B11B_{11} 是 1×21\times2,B21B_{21} 是 2×22\times2。四個輸出塊為

C11=A11B11+A12B21=[14191],C12=A11B12+A12B22=[711],C21=A21B11+A22B21=[220],C22=A21B12+A22B22=[13].\begin{aligned} C_{11}&=A_{11}B_{11}+A_{12}B_{21} =\begin{bmatrix}1&4\\19&1\end{bmatrix},\\ C_{12}&=A_{11}B_{12}+A_{12}B_{22} =\begin{bmatrix}7\\11\end{bmatrix},\\ C_{21}&=A_{21}B_{11}+A_{22}B_{21} =\begin{bmatrix}22&0\end{bmatrix},\\ C_{22}&=A_{21}B_{12}+A_{22}B_{22}=\begin{bmatrix}13\end{bmatrix}. \end{aligned}

例如右上塊的實際計算是

C12=[13][3]+[20−14][21]=[39]+[42]=[711].C_{12} =\begin{bmatrix}1\\3\end{bmatrix}[3] +\begin{bmatrix}2&0\\-1&4\end{bmatrix} \begin{bmatrix}2\\1\end{bmatrix} =\begin{bmatrix}3\\9\end{bmatrix} +\begin{bmatrix}4\\2\end{bmatrix} =\begin{bmatrix}7\\11\end{bmatrix}.

組合各塊便得到

AB=[1471911122013].AB= \begin{bmatrix} 1&4&7\\19&1&11\\22&0&13 \end{bmatrix}.

分塊乘法前的維數檢查

概念視角代數

內側分塊必須對應同一組座標

計算輸出塊 (i,k)(i,k) 前,先逐項寫出

(ri×sj)(sj×tk)=ri×tk.(r_i\times s_j)(s_j\times t_k)=r_i\times t_k.

對每個內側指標 jj 都要檢查。重複的 sjs_j 保證各乘積有定義;保持不變的 ri,tkr_i,t_k 保證所得乘積同型並可相加。最後還要核對:答案的分塊行高總和等於 AA 的行數,分塊列寬總和等於 BB 的列數。

對任何符號乘積之和,都要作兩項檢查:每個乘積須有定義,所有待相加結果須同型。 在真正相容的分塊網格中,固定的 ri,tkr_i,t_k 會自動保證第二項。若只是任意列出 一組不共享相應分塊行高與分塊列寬的子矩陣,就不能對它套用這個定理。

具體設 AA 是 2×42\times4 矩陣,BB 是 4×34\times3 矩陣。若 AA 的列按 1+31+3 分組,BB 的行卻按 2+22+2 分組,普通乘積仍有定義,但目前的分塊不能直接相乘:第一個擬議塊乘積的內側大小分別是一與二,第二個則是三與二,都不匹配。

保留雙方的分割位置,把共同的內側座標細分成 1+1+21+1+2,並把所得分塊寫為

A=[C1 C2 C3],B=[D1D2D3].A=[C_1\ C_2\ C_3],\qquad B=\begin{bmatrix}D_1\\D_2\\D_3\end{bmatrix}.

此時 C1,C2C_1,C_2 是 2×12\times1,C3C_3 是 2×22\times2;D1,D2D_1,D_2 是 1×31\times3,D3D_3 是 2×32\times3。所以 AB=C1D1+C2D2+C3D3AB=C_1D_1+C_2D_2+C_3D_3,三個待相加矩陣都是 2×32\times3。細化分割修復了分塊計算,卻沒有改變任何矩陣元素。共同的內側分組說明哪些座標一起貢獻一個乘積,因而是公式成立的依據之一。

常見錯誤

常見錯誤

混淆矩陣和與一種特定的分塊表示

只要整體維數相同,不同分塊線不會使 A+BA+B 無定義;它們只使目前分塊中的各塊 不能直接配對。可移除分塊線、重新作相同分塊,或取共同細化。

常見錯誤

只檢查整體矩陣的維數

m×nm\times n 矩陣能乘 n×un\times u 矩陣,並不代表任意分塊顯示都相容。 內側分塊邊界也須一致,否則應先重新分塊。

常見錯誤

把同位置的塊相乘,而不是分塊行乘分塊列

(AB)ik(AB)_{ik} 是對內側指標 jj 求和,不只是 AikBikA_{ik}B_{ik}。必須按原次序 讓 AA 的完整分塊行與 BB 的完整分塊列配對。

常見錯誤

誤以為分塊乘積可以交換次序

即使 AijBjkA_{ij}B_{jk} 與 BjkAijB_{jk}A_{ij} 都有定義,兩者也未必相等。定理中的 次序繼承自普通矩陣乘法,不能任意顛倒。

分塊計算的檢查要點

  • 行分割與列分割共同決定分塊;同一分塊行有共同高度,同一分塊列有共同寬度。
  • 相同整體維數足以保證普通加法有定義。只有直接逐塊配對才要求分塊表示一致; 不同分割可改成共同細化。
  • 轉置交換分塊網格並逐塊轉置:(AT)ji=AijT(A^T)_{ji}=A_{ij}^T。
  • 若 Aij∈Fri×sjA_{ij}\in\mathbb F^{r_i\times s_j}、 Bjk∈Fsj×tkB_{jk}\in\mathbb F^{s_j\times t_k},則 (AB)ik=∑jAijBjk(AB)_{ik}=\sum_jA_{ij}B_{jk} 是 ri×tkr_i\times t_k 矩陣。
  • 分塊乘法只是把普通行乘列的內側求和按連續座標組整理;實際計算前必須先檢查維數。

練習

思考檢查

為甚麼兩個分塊矩陣要有相同分割方式,才能逐塊相加?

請在答案中使用「對應分塊」一詞。

解答 · 答案

直接逐塊相加時,一邊的每個分塊都必須在另一邊找到同樣大小的對應分塊。這是對 分塊表示的要求;只要整體維數相同,原矩陣仍可逐項相加。

思考檢查

四個因子 A11A_{11}、B12B_{12}、A12A_{12}、B22B_{22} 的大小依次為 2×12\times1、1×41\times4、2×32\times3、3×43\times4。求 A11B12+A12B22A_{11}B_{12}+A_{12}B_{22} 的大小。

先檢查兩個乘積,再判斷它們能否相加。

解答 · 答案

兩個乘積的大小都是 2×42\times4,各自相乘的內維數分別是 11 和 33。因此它們可以相加,右上輸出塊的大小為 2×42\times4。

思考檢查

請解釋:為甚麼分塊乘法本質上仍然是普通矩陣乘法?

答案中請用到「同一條規則」。

解答 · 引導解答

分塊乘法使用普通乘法的同一條規則;它只按照分塊線,把每個行乘列點積中的求和項 分組,沒有增加、遺漏或改變任何求和項的次序。

思考檢查

兩個 4×44\times4 矩陣的行分組分別為 1+31+3 和 2+22+2,欄分組同為 2+22+2。求能讓兩者直接逐塊相加的最粗共同行細化。

在同一個四行表格中標出雙方的行分割位置。

解答 · 引導解答

保留第 11 行和第 22 行之後的分割線,共同行分組便是 1+1+21+1+2;欄分組仍為 2+22+2。這樣兩者的對應塊大小相同,而所有矩陣元素都沒有改變。

思考檢查

根據給出的分塊,計算乘積的右上塊。

設

A11=[12],A12=[−1],B12=[1032],B22=[−21].A_{11}=\begin{bmatrix}1&2\end{bmatrix}, \quad A_{12}=\begin{bmatrix}-1\end{bmatrix}, \quad B_{12}=\begin{bmatrix}1&0\\3&2\end{bmatrix}, \quad B_{22}=\begin{bmatrix}-2&1\end{bmatrix}.

求 (AB)12=A11B12+A12B22(AB)_{12}=A_{11}B_{12}+A_{12}B_{22},並寫出其維數。

解答 · 引導解答

兩個乘積的形狀分別為 (1×2)(2×2)=1×2(1\times2)(2\times2)=1\times2 與 (1×1)(1×2)=1×2(1\times1)(1\times2)=1\times2,所以可以相加。計算得

A11B12=[74],A12B22=[2−1],A_{11}B_{12}=\begin{bmatrix}7&4\end{bmatrix}, \qquad A_{12}B_{22}=\begin{bmatrix}2&-1\end{bmatrix},

從而

(AB)12=[93].(AB)_{12}=\begin{bmatrix}9&3\end{bmatrix}.

答案是 1×21\times2 塊。先寫維數,正好說明最後的數值加法為甚麼合法。

相關筆記

若普通矩陣乘法的模式仍未穩固,可先回看 3.2 矩陣乘法、單位矩陣與線性方程組。

下一章可接着讀 4.1 齊次方程組與零空間。 稍後的 5.1 可逆矩陣 會把矩陣結構連到可逆性。

本單元重點詞彙