第四節 分塊矩陣
在許多工程問題的矩陣計算中,為了利用矩陣所具有的某些特點,常常采用分塊的方法,將大矩陣的運算化為一些小矩陣的運算。特別是對于大型矩陣的計算,當矩陣的規模超過計算機存儲容量時,就必須進行分塊運算。而現代計算機并行算法,在處理矩陣計算時,更離不開矩陣的分塊技術。
一、分塊矩陣的概念
所謂矩陣分塊,就是將矩陣用若干條橫線和縱線分成許多小矩陣,每個小矩陣稱為原來矩陣的子陣或子塊,以這些子塊為元素所構成的矩陣,稱為分塊矩陣(Block matrix或Partitioned matrix)。
例如
若記
A11=(a11a12),A12=(a13a14a15)
A31=(a41a42),A32=(a43a44a45)
那么A可以表示為
(2.14)
這是以子塊A11,A12,A21,A22,A31,A32為元素的分塊矩陣。同樣A也可以表示為如下的分塊矩陣
(2.15)
特別地,還可以按列來分塊
(2.16)
可見,除了劃分矩陣的橫線和縱線必須貫穿整個矩陣外,矩陣的分塊可以是任意的。具體分塊方法的選取,主要取決于矩陣自身的特點和實際問題的需要。
二、分塊矩陣的運算
分塊矩陣有和普通矩陣相類似的運算方法與運算性質。
(1)設矩陣A,B有相同的規模(即行、列數相等),且采用相同的分塊方法,即
式中對任意i,j,Aij與Bij的行數與列數對應相同,則
(2)設k為任意常數,而
則
(3)設A是m×l矩陣,B是l×n矩陣,它們分塊成
式中矩陣A列的分法與矩陣B行的分法相同,即子塊Ai1,Ai2,…,Ais的列數分別等于子塊B1j,B2j,…,Bsj的行數。則
其中
【例2.11】 設矩陣
計算AB。
解 根據矩陣A的特點,將A分塊為
這時矩陣B的行的分法必須與矩陣A的列的分法一致,但矩陣B的列的分法則可以任意。如果再將矩陣B分塊為
這樣就有
因為
所以得
我們可以設想,如果矩陣A,B的階數達到幾百階時,分塊運算不僅減少了存儲量,而且也減少了計算量。
(4)設A是分塊矩陣
則A的轉置矩陣
即分塊矩陣轉置時,既要把整個分塊矩陣轉置,又要把式中每一個子塊轉置。
(5)設A為n階矩陣,如果A的分塊矩陣只有主對角線上有非零的子塊,而其余的子塊都是零矩陣,即
其中Ai(i=1,2,…,r)都是方陣,則稱A為分塊對角矩陣(Block diagonal matrix)。
分塊對角矩陣有下列性質:
①|A|=|A1||A2|…|Ar|;
②設
式中,Ai,Bi是同階的子方陣(i=1,2,…,r),則
③設A是分塊對角矩陣,若A的每個子塊Ai(i=1,2,…,r)都是可逆矩陣,則A可逆,且
【例2.12】 設矩陣
其中a≠0,b≠0,求P-1。
解 直接求一個四階矩陣的逆矩陣工作量稍大,但若將P看作是一分塊對角矩陣,即記
又A,B都可逆,且
從而
三、計算矩陣乘積時常見的分塊方法
接下來,作為本節矩陣分塊運算的最后一個應用,我們給出兩個矩陣分塊相乘時幾種常見的特殊分塊方法。
設有兩個矩陣
現在要通過分塊運算方法求出它們的乘積AB:
(1)若只將矩陣A按行分塊為
則有
(2)又若只將矩陣B按列分塊為
則又有
AB=A(B1B2…Bn)=(AB1AB2…ABn)
(3)若既將矩陣A按行分塊,又同時將矩陣B按列分塊,則還有
在不同的分塊方法之下,矩陣乘積AB的表達形式也有所不同,但這三種不同形式的結論所對應的最終結果一定是相等的。
上面介紹的分塊運算方法與結論,在后面幾章或者在其它涉及矩陣分析的實際問題中常常要用到,大家應該力求去領會其實質。當然也可以通過例舉的方法去體會上述不同分塊運算的具體含意。