2.7 矩阵分块及矩阵乘法的四种方式

矩阵分块

为了简化矩阵运算或从不同角度看矩阵乘法,把矩阵分成多块,每块是子矩阵,子矩阵可“看作”一个数,只要满足形状要求,就可进行形式上的矩阵运算。

矩阵乘法实质就是矩阵乘以向量,把向量看成列向量,矩阵乘以向量就是矩阵乘以矩阵,以这个最基础构建来说明矩阵分块运算。矩阵乘以向量是向量组的线性组合,必须从这个根源说起!
A x = x 1 a 1 + ⋯ + x n a n = ( x 1 a 1 + ⋯ + x k a k ) + ( x k + 1 a k + 1 + ⋯ + x n a n ) = A 1 x 1 k + A 2 x k n = [ A 1 , A 2 ] [ x 1 k x k n ] A = [ a 1 , ⋯   , a n ] A 1 = [ a 1 , ⋯   , a k ] A 2 = [ a k + 1 , ⋯   , a n ] x = ( x 1 , ⋯   , x n ) x 1 k = ( x 1 , ⋯   , x k ) x k n = ( x k + 1 , ⋯   , x n ) k ∈ [ 1 , n ) A\mathbf{x} = x_1\mathbf{a_1}+\cdots+x_n\mathbf{a_n} \\ = (x_1\mathbf{a_1}+\cdots+x_k\mathbf{a_k}) + (x_{k+1}\mathbf{a_{k+1}}+\cdots+x_n\mathbf{a_n}) \\ = A_1 \mathbf{x_{1k}} + A_2 \mathbf{x_{kn}} \\ = \left[A_1, A_2\right]\left[ \begin{matrix} \mathbf{x_{1k}} \\ \mathbf{x_{kn}} \\ \end{matrix} \right] \\ A = \left[ \mathbf{a_1},\cdots,\mathbf{a_n}\right] \\ A_1 = \left[ \mathbf{a_1},\cdots,\mathbf{a_k}\right] \\ A_2 = \left[ \mathbf{a_{k+1}},\cdots,\mathbf{a_n}\right] \\ \mathbf{x} = ({x_1},\cdots,{x_n}) \\ \mathbf{x_{1k}} = ({x_1},\cdots,{x_k}) \\ \mathbf{x_{kn}} = ({x_{k+1}},\cdots,{x_n}) \\ k \in [1,n) Ax=x1a1++xnan=(x1a1++xkak)+(xk+1ak+1++xnan)=A1x1k+A2xkn=[A1,A2][x1kxkn]A=[a1,,an]A1=[a1,,ak]A2=[ak+1,,an]x=(x1,,xn)x1k=(x1,,xk)xkn=(xk+1,,xn)k[1,n)
上面公式意思是,把矩阵 A A A 和向量 x \mathbf{x} x 任意分成两组,对每组进行矩阵乘以向量,然后矩阵写成分块形式,得到分块计算形式
[ A 1 , A 2 ] [ x 1 k x k n ] = A 1 x 1 k + A 2 x k n \left[A_1, A_2\right]\left[ \begin{matrix} \mathbf{x_{1k}} \\ \mathbf{x_{kn}} \\ \end{matrix} \right] = A_1 \mathbf{x_{1k}} + A_2 \mathbf{x_{kn}} [A1,A2][x1kxkn]A1x1k+A2xkn
矩阵分块运算用向量理论解释的话,就是空间的直和分解。

子矩阵和子向量看成一个数,进行形式上的矩阵乘法,上式就是形式上的行向量乘以列向量得内积!

矩阵其它形式的分块运算道理和这个一样,本书不给出证明。特别强调一点,子矩阵只要满足形状要求,就可进行形式上的矩阵运算,但由于矩阵乘法不满足交换律,一定要注意矩阵相乘的顺序,这个特别容易出错,因为我们太习惯实数的代数运算,经常不自觉地交换变量的前后位置,但矩阵不能交换!

矩阵乘法的四种方式

以矩阵分块看待矩阵,矩阵可以看作是列向量的分块, A = [ a 1 , a 2 , ⋯   , a n ] A = \left[ \mathbf{a_1},\mathbf{a_2},\cdots,\mathbf{a_n}\right] A=[a1,a2,,an] ,前面一直是这么看待矩阵,这是最重要的看待方式。矩阵还可以看作是行向量的分块, A = [ a r 1 T a r 2 T ⋮ a r n T ] A = \left[ \begin{matrix} \mathbf{a^T_{r1}} \\ \mathbf{a^T_{r2}} \\ \vdots \\ \mathbf{a^T_{rn}} \end{matrix} \right] A=ar1Tar2TarnT ,这也是一种重要的看待方式。为了区分,行向量下标有字母 r r r 。此时一定要注意, a r i \mathbf{a_{ri}} ari 表示列向量,但不是矩阵 A A A 的列向量,而是矩阵 A A A 的行向量旋转后变换成的列向量。例如
A = [ 0 2 1 3 ] a r 1 T = [ 0 2 ] a r 2 T = [ 1 3 ] a r 1 = [ 0 2 ] a r 2 = [ 1 3 ] A = \left[ \begin{matrix} 0 & 2 \\ 1 & 3 \end{matrix} \right] \quad \mathbf{a^T_{r1}} = \left[0 \quad 2\right] \quad \mathbf{a^T_{r2}} = \left[1 \quad 3\right] \quad \mathbf{a_{r1}} = \left[ \begin{matrix} 0 \\ 2 \end{matrix} \right] \quad \mathbf{a_{r2}} = \left[ \begin{matrix} 1 \\ 3 \end{matrix} \right] \quad A=[0123]ar1T=[02]ar2T=[13]ar1=[02]ar2=[13]
有四种矩阵分块方式进行矩阵相乘。

  1. 最常用的,几何意义最明显的,就是定义矩阵乘法的方式, A B = [ A b 1 , ⋯   , A b p ] AB=\left[ A\mathbf{b_1},\cdots,A\mathbf{b_p}\right] AB=[Ab1,,Abp] ,即把矩阵 A A A 作为整体,矩阵 B B B 看作列向量的分块。积矩阵每列是矩阵 A A A 列向量组的线性组合。

  2. 矩阵 A A A 看作列向量的分块, A = [ a 1 , a 2 , ⋯   , a n ] A = \left[ \mathbf{a_1},\mathbf{a_2},\cdots,\mathbf{a_n}\right] A=[a1,a2,,an] ,矩阵 B B B 看作行向量的分块, B = [ b r 1 T b r 2 T ⋮ b r n T ] B = \left[ \begin{matrix} \mathbf{b^T_{r1}} \\ \mathbf{b^T_{r2}} \\ \vdots \\ \mathbf{b^T_{rn}} \end{matrix} \right] B=br1Tbr2TbrnT ,矩阵相乘就是形式上的内积,得 A B = a 1 b r 1 T + a 2 b r 2 T + ⋯ + a n b r n T AB = \mathbf{a_1}\mathbf{b^T_{r1}}+\mathbf{a_2}\mathbf{b^T_{r2}}+\cdots+\mathbf{a_n\mathbf{b^T_{rn}}} AB=a1br1T+a2br2T++anbrnT ,就是对应列向量与行向量的外积之和。这种看法十分重要,表明积矩阵可以分解为 n n n 个简单矩阵之和。

  3. 矩阵 A A A 看作行向量的分块, A = [ a r 1 T a r 2 T ⋮ a r n T ] A = \left[ \begin{matrix} \mathbf{a^T_{r1}} \\ \mathbf{a^T_{r2}} \\ \vdots \\ \mathbf{a^T_{rn}} \end{matrix} \right] A=ar1Tar2TarnT ,矩阵 B B B 作为整体。 A B = [ a r 1 T a r 2 T ⋮ a r n T ] B = [ a r 1 T B a r 2 T B ⋮ a r n T B ] AB = \left[ \begin{matrix} \mathbf{a^T_{r1}} \\ \mathbf{a^T_{r2}} \\ \vdots \\ \mathbf{a^T_{rn}} \end{matrix} \right] B = \left[ \begin{matrix} \mathbf{a^T_{r1}}B \\ \mathbf{a^T_{r2}}B \\ \vdots \\ \mathbf{a^T_{rn}}B \end{matrix} \right] AB=ar1Tar2TarnTB=ar1TBar2TBarnTB 。积矩阵每行是矩阵 B B B 行向量组的线性组合。

  4. 矩阵 A A A 看作行向量的分块, A = [ a r 1 T a r 2 T ⋮ a r n T ] A = \left[ \begin{matrix} \mathbf{a^T_{r1}} \\ \mathbf{a^T_{r2}} \\ \vdots \\ \mathbf{a^T_{rn}} \end{matrix} \right] A=ar1Tar2TarnT ,矩阵 B B B 看作列向量的分块, B = [ b 1 , b 2 , ⋯   , b n ] B = \left[ \mathbf{b_1},\mathbf{b_2},\cdots,\mathbf{b_n}\right] B=[b1,b2,,bn] ,矩阵相乘就是形式上的外积,得 A B = [ a r 1 T b 1 a r 1 T b 2 ⋯   , a r 1 T b n ⋮ a r n T b 1 a r n T b 2 ⋯   , a r n T b n ] AB = \left[ \begin{matrix} \mathbf{a^T_{r1}}\mathbf{b_1} & \mathbf{a^T_{r1}}\mathbf{b_2} \cdots, \mathbf{a^T_{r1}}\mathbf{b_n}\\ \vdots \\ \mathbf{a^T_{rn}}\mathbf{b_1} & \mathbf{a^T_{rn}}\mathbf{b_2} \cdots, \mathbf{a^T_{rn}}\mathbf{b_n} \end{matrix} \right] AB=ar1Tb1arnTb1ar1Tb2,ar1TbnarnTb2,arnTbn ,这种看法用来计算积矩阵每个位置的数值,即第 i i i 行第 j j j 列的数值是矩阵 A A A 的第 i i i 个行向量与矩阵 B B B 的第 j j j 个列向量的内积。这种看法计算矩阵数值比较方便。国内教材基本采用这种方式定义矩阵乘法,把矩阵看成数的表格,掩盖了几何图像。

你可能感兴趣的:(#,线性代数)