分块矩阵

作者:追风剑情 发布于:2024-4-1 18:18 分类:Algorithms

基本概念

在处理阶数比较高的矩阵的时候,将其“分割”成一些低阶的矩阵往往能够起到化简计算的作用或者为推理提供新的思路。例如 A=[1000100011245673216540000] 可以表示为 A=[A11A12A21A22] 其中 A11=(100010001),A12=(124567),A21=(321654),A22=(0000)

一般地,我们把矩阵A用一些横线和纵线分成s×t个“小矩阵” Akl(k=1,2,,s;l=1,2,,t) 称为A的子块。于是A可以表示为以这些子块为元素的形式上的矩阵,即 A=(A11A1tAs1Ast) 上式中等号右边的形式上的矩阵称为分块矩阵

常用的分块矩阵

给定一个矩阵,究竟如何分块,要视具体情况而定。

常用的分块方法主要有三种。

(1)按列分块

把矩阵A=(aij)m×n的每一列作为一个子块,依次记为α1,,αn,可以得到如下分块矩阵 A=(α1,,αn) 其中 αj=(α1jαmj) 称为A的列向量(j=1,2,,n)

(2)按行分块

把矩阵B=(bij)m×n的每一行作为一个子块,依次记为β1,,βm,可以得到如下分块矩阵 B=(β1βm) 其中βi=(bi1,,bin)称为B的行向量(i=1,2,,m)

(3)若分块矩阵 (A11Ass)Aii(i=1,2,,s)均为方阵,其余子块均为零矩阵,则称该分块矩阵为分块对角矩阵,简记为diag(A11,,Ass)。注意分块对角矩阵中主对角线上的各子块Aii的阶数可以互不相同。

基本运算

下面介绍分块矩阵的基本运算。

(1)分块矩阵的加法

设分块矩阵A=(Akl)s×tB=(Bkl)s×t的对应子块AklBkl都是同型矩阵(k=1,2,,s;l=1,2,,t),则A+B=(Akl+Bkl)s×t

(2)分块矩阵的数乘

设分块矩阵A=(Akl)s×t,λ是一个数,则λA=(λAkl)s×t

(3)分块矩阵的乘法

设分块矩阵A=(Aij)B=(Bjk),其中Aij的列数等于Bjk的行数(i=1,2,,r; j=1,2,,s; k=1,2,,t),则

AB=(A11A12A1sA21A22A2sAr1Ar2Ars)(B11B12B1tB21B22B2tBs1Bs2Bst)=(Cik) 其中Cik=Ai1B1k+Ai2B2k++AisBsk(i=1,2,,r;k=1,2,,t)

例如,设A=(aij)s×nB=(bjk)n×t,若对B按行分块,即 B=(β1βn),则 AB=(a11a1nas1asn)(β1βn)=(a11β1++a1nβnas1β1++asnβn)

若对B按列分块,即B=(B1,,Bt),则AB=A(B1,,Bt)=(AB1,,ABt)。若对A按列分块,即A=(α1,,αn),则 AB=(α1,,αn)(b11b1tbn1bnt)=(b11α1++bn1αn,,b1tα1++bntαn)

若对A按行分块,即 A=(A1As) ,则 AB=(A1As)B=(A1BAsB)

对线性方程组Ax=b而言,如果对A按列分块,即 A=(α1,,αn) 那么Ax=b等价于x1α1++xnαn=b

(4)分块矩阵的转置

设分块矩阵 A=(A11A12A1tA21A22A2tAs1As2Ast) ,则A的转置矩阵为 AT=(A11TA12TA1tTA21TA22TA2tTAs1TAs2TAstT)

例 1.7 设 A=(1210010100210003) , B=(1031012100230003) ,求AB

解 将矩阵A,B进行分块如下: A=(A11E2O2A22),B=(E2B12O2B22) 其中 A11=(1201),E2=(1001),O2=(0000),A22=(2103),B12=(3121),B22=(2303) ,则 AB=(A11E2O2A22)(E2B12O2B22)=(A11A11B12+B22O2A22B22) 其中 A11B12+B22=(1201)(3121)+(2303)=(5224) A22B22=(2103)(2303)=(4309) 于是可得 AB=(1252012400430009)

  注意上述例子中利用分块矩阵算出来的结果与直接根据矩阵乘法的定义算出来的结果是一致的,但采用分块乘法运算更简便一些。

标签: Algorithms

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号