分块矩阵
作者:追风剑情 发布于:2024-4-1 18:18 分类:Algorithms
基本概念
在处理阶数比较高的矩阵的时候,将其“分割”成一些低阶的矩阵往往能够起到化简计算的作用或者为推理提供新的思路。例如 $$ \begin{flalign} & A=\left[ \begin{array}{c|c} \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{array} & \begin{array}{cc} 1 & 2 \\ 4 & 5 \\ 6 & 7 \\ \end{array} \\ \hline \begin{array}{ccc} 3 & 2 & 1 \\ 6 & 5 & 4 \\ \end{array} & \begin{array}{cc} 0 & 0 \\ 0 & 0 \\ \end{array} \end{array} \right] &\\ \end{flalign} $$ 可以表示为 $$ \begin{flalign} &A= \left[ \begin{array}{cc} A_{11} & A_{12} \\ A_{21} & A_{22} \end{array} \right] &\\ \end{flalign} $$ 其中 $ A_{11}= \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{pmatrix} , A_{12}= \begin{pmatrix} 1 & 2 \\ 4 & 5 \\ 6 & 7 \\ \end{pmatrix} , A_{21}= \begin{pmatrix} 3 & 2 & 1 \\ 6 & 5 & 4 \\ \end{pmatrix} , A_{22}= \begin{pmatrix} 0 & 0 \\ 0 & 0 \\ \end{pmatrix} $
一般地,我们把矩阵A用一些横线和纵线分成s×t个“小矩阵” $$ A_{kl} \quad (k=1,2,\cdots,s; \quad l=1,2,\cdots,t) $$ 称为A的子块。于是A可以表示为以这些子块为元素的形式上的矩阵,即 $$ A=\begin{pmatrix} A_{11} & \cdots & A_{1t} \\ \vdots & \quad & \vdots \\ A_{s1} & \cdots & A_{st} \end{pmatrix} $$ 上式中等号右边的形式上的矩阵称为分块矩阵。
常用的分块矩阵
给定一个矩阵,究竟如何分块,要视具体情况而定。
常用的分块方法主要有三种。
(1)按列分块
把矩阵$A=(a_{ij})_{m×n}$的每一列作为一个子块,依次记为$α_1,\cdots,α_n$,可以得到如下分块矩阵 $$ A=(α_1,\cdots,α_n) $$ 其中 $ α_j=\begin{pmatrix} α_{1j} \\ \vdots \\ α_{mj} \\ \end{pmatrix} $ 称为A的列向量$(j=1,2,\cdots,n)$
(2)按行分块
把矩阵$B=(b_{ij})_{m×n}$的每一行作为一个子块,依次记为$β_1,\cdots,β_m$,可以得到如下分块矩阵 $$ B=\begin{pmatrix} β_1 \\ \vdots \\ β_m \end{pmatrix} $$ 其中$β_i=(b_{i1},\cdots,b_{in})$称为B的行向量$(i=1,2,\cdots,m)$
(3)若分块矩阵 $ \begin{pmatrix} A_{11} & \quad & \quad \\ \quad & \ddots & \quad \\ \quad & \quad & A_{ss} \end{pmatrix} $ 中$A_{ii}(i=1,2,\cdots,s)$均为方阵,其余子块均为零矩阵,则称该分块矩阵为分块对角矩阵,简记为$diag(A_{11},\cdots,A_{ss})$。注意分块对角矩阵中主对角线上的各子块$A_{ii}$的阶数可以互不相同。
基本运算
下面介绍分块矩阵的基本运算。
(1)分块矩阵的加法
设分块矩阵$A=(A_{kl})_{s×t}$与$B=(B_{kl})_{s×t}$的对应子块$A_{kl}$和$B_{kl}$都是同型矩阵$(k=1,2,\cdots,s;l=1,2,\cdots,t)$,则$A+B=(A_{kl}+B_{kl})_{s×t}$
(2)分块矩阵的数乘
设分块矩阵$A=(A_{kl})_{s×t}$,λ是一个数,则$λA=(λA_{kl})_{s×t}$
(3)分块矩阵的乘法
设分块矩阵$A=(A_{ij}),B=(B_{jk})$,其中$A_{ij}$的列数等于$B_{jk}$的行数(i=1,2,$\cdots$,r; j=1,2,$\cdots$,s; k=1,2,$\cdots$,t),则
$$ AB= \begin{pmatrix} A_{11} & A_{12} & \cdots & A_{1s} \\ A_{21} & A_{22} & \cdots & A_{2s} \\ \vdots & \vdots & \quad & \vdots \\ A_{r1} & A_{r2} & \cdots & A_{rs} \\ \end{pmatrix} \begin{pmatrix} B_{11} & B_{12} & \cdots & B_{1t} \\ B_{21} & B_{22} & \cdots & B_{2t} \\ \vdots & \vdots & \quad & \vdots \\ B_{s1} & B_{s2} & \cdots & B_{st} \\ \end{pmatrix} = (C_{ik}) $$ 其中$C_{ik}=A_{i1}B_{1k}+A_{i2}B_{2k}+\cdots+A_{is}B_{sk}(i=1,2,\cdots,r;k=1,2,\cdots,t)$例如,设$A=(a_{ij})_{s×n}$,$B=(b_{jk})_{n×t}$,若对B按行分块,即 $B=\begin{pmatrix} β_1 \\ \vdots \\ β_n \\ \end{pmatrix}$,则 $$ AB= \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \quad & \vdots \\ a_{s1} & \cdots & a_{sn} \\ \end{pmatrix} \begin{pmatrix} β_1 \\ \vdots \\ β_n \\ \end{pmatrix} = \begin{pmatrix} a_{11}β_1+\cdots+a_{1n}β_n \\ \vdots \\ a_{s1}β_1+\cdots+a_{sn}β_n \\ \end{pmatrix} $$
若对B按列分块,即$B=(B_1,\cdots,B_t)$,则$AB=A(B_1,\cdots,B_t)=(AB_1,\cdots,AB_t)$。若对A按列分块,即$A=(α_1,\cdots,α_n)$,则 $$ \begin{aligned} AB &=(α_1,\cdots,α_n) \begin{pmatrix} b_{11} & \cdots & b_{1t} \\ \vdots & \quad & \vdots \\ b_{n1} & \cdots & b_{nt} \\ \end{pmatrix} &\\ &=(b_{11}α_1+\cdots+b_{n1}α_n,\cdots,b_{1t}α_1+\cdots+b_{nt}α_n) \end{aligned} $$
若对A按行分块,即 $ A= \begin{pmatrix} A_1 \\ \vdots \\ A_s \\ \end{pmatrix} $ ,则 $ AB= \begin{pmatrix} A_1 \\ \vdots \\ A_s \\ \end{pmatrix} B = \begin{pmatrix} A_1B \\ \vdots \\ A_sB \\ \end{pmatrix} $
对线性方程组Ax=b而言,如果对A按列分块,即 $$ A=(α_1,\cdots,α_n) $$ 那么Ax=b等价于$x_1α_1+\cdots+x_nα_n=b$
(4)分块矩阵的转置
设分块矩阵 $ A=\begin{pmatrix} A_{11} & A_{12} & \cdots & A_{1t} \\ A_{21} & A_{22} & \cdots & A_{2t} \\ \vdots & \vdots & \quad & \vdots \\ A_{s1} & A_{s2} & \cdots & A_{st} \\ \end{pmatrix} $ ,则A的转置矩阵为 $ A^T=\begin{pmatrix} A^T_{11} & A^T_{12} & \cdots & A^T_{1t} \\ A^T_{21} & A^T_{22} & \cdots & A^T_{2t} \\ \vdots & \vdots & \quad & \vdots \\ A^T_{s1} & A^T_{s2} & \cdots & A^T_{st} \\ \end{pmatrix} $
例 1.7 设 $ A=\begin{pmatrix} 1 & 2 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 0 & 0 & 2 & 1 \\ 0 & 0 & 0 & 3 \\ \end{pmatrix} $ , $ B=\begin{pmatrix} 1 & 0 & 3 & 1 \\ 0 & 1 & 2 & -1 \\ 0 & 0 & -2 & 3 \\ 0 & 0 & 0 & -3 \\ \end{pmatrix} $ ,求AB
解 将矩阵A,B进行分块如下: $$ A=\begin{pmatrix} A_{11} & E_2 \\ O_2 & A_{22} \\ \end{pmatrix} ,\quad B=\begin{pmatrix} E_2 & B_{12} \\ O_2 & B_{22} \\ \end{pmatrix} $$ 其中 $ A_{11}=\begin{pmatrix} 1 & 2 \\ 0 & 1 \\ \end{pmatrix} ,\; E_2=\begin{pmatrix} 1 & 0 \\ 0 & 1 \\ \end{pmatrix} ,\; O_2=\begin{pmatrix} 0 & 0 \\ 0 & 0 \\ \end{pmatrix} ,\; A_{22}=\begin{pmatrix} 2 & 1 \\ 0 & 3 \\ \end{pmatrix} ,\; B_{12}=\begin{pmatrix} 3 & 1 \\ 2 & -1 \\ \end{pmatrix} ,\; B_{22}=\begin{pmatrix} -2 & 3 \\ 0 & -3 \\ \end{pmatrix} $ ,则 $$ \begin{flalign} &AB= \begin{pmatrix} A_{11} & E_2 \\ O_2 & A_{22} \\ \end{pmatrix} \begin{pmatrix} E_2 & B_{12} \\ O_2 & B_{22} \\ \end{pmatrix} = \begin{pmatrix} A_{11} & A_{11}B_{12}+B_{22} \\ O_2 & A_{22}B_{22} \\ \end{pmatrix} &\\ \end{flalign} $$ 其中 $$ \begin{flalign} &A_{11}B_{12}+B_{22}= \begin{pmatrix} 1 & 2 \\ 0 & 1 \\ \end{pmatrix} \begin{pmatrix} 3 & 1 \\ 2 & -1 \\ \end{pmatrix} + \begin{pmatrix} -2 & 3 \\ 0 & -3 \\ \end{pmatrix} = \begin{pmatrix} 5 & 2 \\ 2 & -4 \\ \end{pmatrix} &\\ \end{flalign} $$ $$ \begin{flalign} &A_{22}B_{22}= \begin{pmatrix} 2 & 1 \\ 0 & 3 \\ \end{pmatrix} \begin{pmatrix} -2 & 3 \\ 0 & -3 \\ \end{pmatrix} = \begin{pmatrix} -4 & 3 \\ 0 & -9 \\ \end{pmatrix} &\\ \end{flalign} $$ 于是可得 $ AB=\begin{pmatrix} 1 & 2 & 5 & 2 \\ 0 & 1 & 2 & -4 \\ 0 & 0 & -4 & 3 \\ 0 & 0 & 0 & -9 \\ \end{pmatrix} $
注意上述例子中利用分块矩阵算出来的结果与直接根据矩阵乘法的定义算出来的结果是一致的,但采用分块乘法运算更简便一些。
标签: Algorithms
日历
最新文章
随机文章
热门文章
分类
存档
- 2024年11月(3)
- 2024年10月(5)
- 2024年9月(3)
- 2024年8月(3)
- 2024年7月(11)
- 2024年6月(3)
- 2024年5月(9)
- 2024年4月(10)
- 2024年3月(11)
- 2024年2月(24)
- 2024年1月(12)
- 2023年12月(3)
- 2023年11月(9)
- 2023年10月(7)
- 2023年9月(2)
- 2023年8月(7)
- 2023年7月(9)
- 2023年6月(6)
- 2023年5月(7)
- 2023年4月(11)
- 2023年3月(6)
- 2023年2月(11)
- 2023年1月(8)
- 2022年12月(2)
- 2022年11月(4)
- 2022年10月(10)
- 2022年9月(2)
- 2022年8月(13)
- 2022年7月(7)
- 2022年6月(11)
- 2022年5月(18)
- 2022年4月(29)
- 2022年3月(5)
- 2022年2月(6)
- 2022年1月(8)
- 2021年12月(5)
- 2021年11月(3)
- 2021年10月(4)
- 2021年9月(9)
- 2021年8月(14)
- 2021年7月(8)
- 2021年6月(5)
- 2021年5月(2)
- 2021年4月(3)
- 2021年3月(7)
- 2021年2月(2)
- 2021年1月(8)
- 2020年12月(7)
- 2020年11月(2)
- 2020年10月(6)
- 2020年9月(9)
- 2020年8月(10)
- 2020年7月(9)
- 2020年6月(18)
- 2020年5月(4)
- 2020年4月(25)
- 2020年3月(38)
- 2020年1月(21)
- 2019年12月(13)
- 2019年11月(29)
- 2019年10月(44)
- 2019年9月(17)
- 2019年8月(18)
- 2019年7月(25)
- 2019年6月(25)
- 2019年5月(17)
- 2019年4月(10)
- 2019年3月(36)
- 2019年2月(35)
- 2019年1月(28)
- 2018年12月(30)
- 2018年11月(22)
- 2018年10月(4)
- 2018年9月(7)
- 2018年8月(13)
- 2018年7月(13)
- 2018年6月(6)
- 2018年5月(5)
- 2018年4月(13)
- 2018年3月(5)
- 2018年2月(3)
- 2018年1月(8)
- 2017年12月(35)
- 2017年11月(17)
- 2017年10月(16)
- 2017年9月(17)
- 2017年8月(20)
- 2017年7月(34)
- 2017年6月(17)
- 2017年5月(15)
- 2017年4月(32)
- 2017年3月(8)
- 2017年2月(2)
- 2017年1月(5)
- 2016年12月(14)
- 2016年11月(26)
- 2016年10月(12)
- 2016年9月(25)
- 2016年8月(32)
- 2016年7月(14)
- 2016年6月(21)
- 2016年5月(17)
- 2016年4月(13)
- 2016年3月(8)
- 2016年2月(8)
- 2016年1月(18)
- 2015年12月(13)
- 2015年11月(15)
- 2015年10月(12)
- 2015年9月(18)
- 2015年8月(21)
- 2015年7月(35)
- 2015年6月(13)
- 2015年5月(9)
- 2015年4月(4)
- 2015年3月(5)
- 2015年2月(4)
- 2015年1月(13)
- 2014年12月(7)
- 2014年11月(5)
- 2014年10月(4)
- 2014年9月(8)
- 2014年8月(16)
- 2014年7月(26)
- 2014年6月(22)
- 2014年5月(28)
- 2014年4月(15)
友情链接
- Unity官网
- Unity圣典
- Unity在线手册
- Unity中文手册(圣典)
- Unity官方中文论坛
- Unity游戏蛮牛用户文档
- Unity下载存档
- Unity引擎源码下载
- Unity服务
- Unity Ads
- wiki.unity3d
- Visual Studio Code官网
- SenseAR开发文档
- MSDN
- C# 参考
- C# 编程指南
- .NET Framework类库
- .NET 文档
- .NET 开发
- WPF官方文档
- uLua
- xLua
- SharpZipLib
- Protobuf-net
- Protobuf.js
- OpenSSL
- OPEN CASCADE
- JSON
- MessagePack
- C在线工具
- 游戏蛮牛
- GreenVPN
- 聚合数据
- 热云
- 融云
- 腾讯云
- 腾讯开放平台
- 腾讯游戏服务
- 腾讯游戏开发者平台
- 腾讯课堂
- 微信开放平台
- 腾讯实时音视频
- 腾讯即时通信IM
- 微信公众平台技术文档
- 白鹭引擎官网
- 白鹭引擎开放平台
- 白鹭引擎开发文档
- FairyGUI编辑器
- PureMVC-TypeScript
- 讯飞开放平台
- 亲加通讯云
- Cygwin
- Mono开发者联盟
- Scut游戏服务器引擎
- KBEngine游戏服务器引擎
- Photon游戏服务器引擎
- 码云
- SharpSvn
- 腾讯bugly
- 4399原创平台
- 开源中国
- Firebase
- Firebase-Admob-Unity
- google-services-unity
- Firebase SDK for Unity
- Google-Firebase-SDK
- AppsFlyer SDK
- android-repository
- CQASO
- Facebook开发者平台
- gradle下载
- GradleBuildTool下载
- Android Developers
- Google中国开发者
- AndroidDevTools
- Android社区
- Android开发工具
- Google Play Games Services
- Google商店
- Google APIs for Android
- 金钱豹VPN
- TouchSense SDK
- MakeHuman
- Online RSA Key Converter
- Windows UWP应用
- Visual Studio For Unity
- Open CASCADE Technology
- 慕课网
- 阿里云服务器ECS
- 在线免费文字转语音系统
- AI Studio
- 网云穿
- 百度网盘开放平台
- 迅捷画图
- 菜鸟工具
- [CSDN] 程序员研修院
- 华为人脸识别
- 百度AR导航导览SDK
- 海康威视官网
- 海康开放平台
- 海康SDK下载
- git download
交流QQ群
-
Flash游戏设计: 86184192
Unity游戏设计: 171855449
游戏设计订阅号