5.6 KiB
第三讲:乘法和逆矩阵
上一讲大概介绍了矩阵乘法和逆矩阵,本讲就来做进一步说明。
矩阵乘法
-
行列内积:有
m\times n
矩阵A
和n\times p
矩阵B
(A
的总列数必须与B
的总行数相等),两矩阵相乘有AB=C
,C
是一个m\times p
矩阵,对于C
矩阵中的第i
行第j
列元素c_{ij}
,有:$$c_{ij}=row_i\cdot column_j=\sum_{k=i}^na_{ik}b_{k
其中
a_{ik}
是A
矩阵的第i
行第k
列元素,b_{kj}
是B
矩阵的第k
行第j
列元素。可以看出
c_{ij}
其实是A
矩阵第i
行点乘B
矩阵第j
列\begin{bmatrix}&\vdots&\\&row_i&\\&\vdots&\end{bmatrix}\begin{bmatrix}&&\\\cdots&column_j&\cdots\\&&\end{bmatrix}=\begin{bmatrix}&\vdots&\\\cdots&c_{ij}&\cdots\\&\vdots&\end{bmatrix}
-
整列相乘:上一讲我们知道了如何计算矩阵乘以向量,而整列相乘就是使用这种线性组合的思想:
\begin{bmatrix}&&\\A_{col1}&A_{col2}&\cdots&A_{coln}\\&&\end{bmatrix}\begin{bmatrix}\cdots&b_{1j}&\cdots\\\cdots&b_{2j}&\cdots\\\cdots&\vdots&\cdots\\\cdots&b_{nj}&\cdots\\\end{bmatrix}=\begin{bmatrix}&&\\\cdots&\left(b_{1j}A_{col1}+b_{2j}A_{col2}+\cdots+b_{nj}A_{coln}\right)&\cdots\\&&\end{bmatrix}
上面的运算为
B
的第j
个列向量右乘矩阵A
,求得的结果就是C
矩阵的第j
列,即C
的第j
列是A
的列向量以B
的第j
列作为系数所求得的线性组合,C_j=b_{1j}A_{col1}+b_{2j}A_{col2}+\cdots+b_{nj}A_{coln}
。 -
整行相乘:同样的,也是利用行向量线性组合的思想:
\begin{bmatrix}\vdots&\vdots&\vdots&\vdots\\a_{i1}&a_{i2}&\cdots&a_{in}\\\vdots&\vdots&\vdots&\vdots\end{bmatrix}\begin{bmatrix}&B_{row1}&\\&B_{row2}&\\&\vdots&\\&B_{rown}&\end{bmatrix}=\begin{bmatrix}\vdots\\\left(a_{i1}B_{row1}+a_{i2}B_{row2}+\cdots+a_{in}B_{rown}\right)\\\vdots\end{bmatrix}
上面的运算为
A
的第i
个行向量左乘矩阵B
,求得的结果就是C
矩阵的第i
行,即C
的第i
行是B
的行向量以A
的第i
行作为系数所求的的线性组合,C_i=a_{i1}B_{row1}+a_{i2}B_{row2}+\cdots+a_{in}B_{rown}
。 -
列乘以行:用
A
矩阵的列乘以B
矩阵的行,得到的矩阵相加即可:\begin{bmatrix}&&\\A_{col1}&A_{col2}&\cdots&A_{coln}\\&&\end{bmatrix}\begin{bmatrix}&B_{row1}&\\&B_{row2}&\\&\vdots&\\&B_{rown}&\end{bmatrix}=A_{col1}B_{row1}+A_{col2}B_{row2}+\cdots+A_{coln}B_{rown}
注意,
A_{coli}B_{rowi}
是一个m\times 1
向量乘以一个1\times p
向量,其结果是一个m\times p
矩阵,而所有的m\times p
矩阵之和就是计算结果。 -
分块乘法:
\left[\begin{array}{c|c}A_1&A_2\\\hline A_3&A_4\end{array}\right]\left[\begin{array}{c|c}B_1&B_2\\\hline B_3&B_4\end{array}\right]=\left[\begin{array}{c|c}A_1B_1+A_2B_3&A_1B_2+A_2B_4\\\hline A_3B_1+A_4B_3&A_3B_2+A_4B_4\end{array}\right]
在分块合适的情况下,可以简化运算。
逆(方阵)
首先,并不是所有的方阵都有逆;而如果逆存在,则有A^{-1}A=I=AA^{-1}
。教授这里提前剧透,对于方阵,左逆和右逆是相等的,但是对于非方阵(长方形矩阵),其左逆不等于右逆。
对于这些有逆的矩阵,我们称其为可逆的或非奇异的。我们先来看看奇异矩阵(不可逆的):A=\begin{bmatrix}1&2\\3&6\end{bmatrix}
,在后面将要学习的行列式中,会发现这个矩阵的行列式为0
。
观察这个方阵,我们如果用另一个矩阵乘A
,则得到的结果矩阵中的每一列应该都是\begin{bmatrix}1\\2\end{bmatrix}
的倍数,所以我们不可能从AB
的乘积中得到单位矩阵I
。
另一种判定方法,如果存在非零向量x
,使得Ax=0
,则矩阵A
不可逆。我们来用上面的矩阵为例:\begin{bmatrix}1&2\\3&6\end{bmatrix}\begin{bmatrix}3\\-1\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}
。
证明:如果对于非零的x
仍有Ax=0
,而A
有逆A^{-1}
,则A^{-1}Ax=0
,即x=0
,与题设矛盾,得证。
现在来看看什么矩阵有逆,设A=\begin{bmatrix}1&3\\2&7\end{bmatrix}
,我们来求A^{-1}
。\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}a&b\\c&d\end{bmatrix}=\begin{bmatrix}1&0\\0&1\end{bmatrix}
,使用列向量线性组合的思想,我们可以说A
乘以A^{-1}
的第j
列,能够得到I
的第j
列,这时我会得到一个关于列的方程组。
接下来介绍高斯-若尔当(Gauss-Jordan)方法,该方法可以一次处理所有的方程:
-
这个方程组为
\begin{cases}\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}a\\b\end{bmatrix}=\begin{bmatrix}1\\0\end{bmatrix}\\\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}c\\d\end{bmatrix}=\begin{bmatrix}0\\1\end{bmatrix}\end{cases}
,我们想要同时解这两个方程; -
构造这样一个矩阵
\left[\begin{array}{cc|cc}1&3&1&0\\2&7&0&1\end{array}\right]
,接下来用消元法将左侧变为单位矩阵; -
\left[\begin{array}{cc|cc}1&3&1&0\\2&7&0&1\end{array}\right]\xrightarrow{row_2-2row_1}\left[\begin{array}{cc|cc}1&3&1&0\\0&1&-2&1\end{array}\right]\xrightarrow{row_1-3row_2}\left[\begin{array}{cc|cc}1&0&7&-3\\0&1&-2&1\end{array}\right]
-
于是,我们就将矩阵从
\left[\begin{array}{c|c}A&I\end{array}\right]
变为\left[\begin{array}{c|c}I&A^{-1}\end{array}\right]
而高斯-若尔当法的本质是使用消元矩阵E
,对A
进行操作,E\left[\begin{array}{c|c}A&I\end{array}\right]
,利用一步步消元有EA=I
,进而得到\left[\begin{array}{c|c}I&E\end{array}\right]
,其实这个消元矩阵E
就是A^{-1}
,而高斯-若尔当法中的I
只是负责记录消元的每一步操作,待消元完成,逆矩阵就自然出现了。