作者 | 梁唐
出品 | 公众号:Coder梁(ID:Coder_LT)
大家好,日拱一卒,我是梁唐。
这几天一直在成都办事,每天回来都倒头就睡,实在是没有时间,所以耽误了几天更新。之后会逐渐回到正轨~
这篇是我在机场肝的……看在这么刻苦的份上,忘了之前的鸽吧……
我们继续麻省理工的线性代数公开课,编号18.06。这一节课的内容关于线性代数当中的矩阵乘法和逆矩阵,全程高能,希望大家能耐心看完。
矩阵乘法
当矩阵
A的列数(m x n)和矩阵
B(n x p)的行数相等时,我们可以计算两个矩阵的乘积
AB,得到的结果
C的大小是m x p。
关于矩阵乘法,我们有若干种理解的方式。我们一一来介绍,首先是最基础也是国内线性代数课本上提到的一种:行列向量相乘法:
行列向量相乘
对于矩阵
C中的元素
C_{i, j}而言,它是
A矩阵中第
i行与
B矩阵中第
j列的乘积。即:
C_{i, j} = \sum_{k=1}^nA_{i, k} * B_{k, 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}col1&col2&col3\end{bmatrix}\begin{bmatrix}3 \\ 4 \\ 5\end{bmatrix}=3col1+4col2+5col3
现在两个矩阵相乘可以看成是若干个列向量线性组合的组合。
\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矩阵相乘,构成了结果矩阵中的第
j列。由于
B矩阵一个有
p列,所以相乘之后的矩阵
C也是
p列。
行向量组合
同样,在上节课中,我们也介绍了行向量组合的思想。某个矩阵左乘一个行向量,可以看成是该矩阵所有行向量的线性组合。
\begin{bmatrix}1&2&7\end{bmatrix} \begin{bmatrix}row1\\row2\\row3\end{bmatrix}=1row1+2row2+7row3
进行发散之后,可以将两个矩阵相乘看成是
B矩阵中行向量线性组合的组合。
\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}
在这个例子当中,我们把
B矩阵表示成
n个行向量的组合。它和
A矩阵的第
i行相乘,构成了
C矩阵中的第
i行。由于
A矩阵一共有
n行,所以
C矩阵一共有
n行。
行列相乘
A矩阵的第
i行与
B矩阵的第
j列相乘,一样能得到一个
m * p的矩阵。
我们可以把
AB看成是两矩阵中所有行列组合乘积的加和:
\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}
以上结果中的每一项都是一个
m * p的矩阵,相加之后的结果仍然是
m * 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的逆矩阵存在,记作
A^{-1}。可以得到:
A^{-1}A= I。在课上老师告诉我们,对于方阵它的左逆矩阵和右逆矩阵是一样的,即
A^{-1}A= AA^{-1}。但对于非方阵这不成立。
对于逆矩阵存在的矩阵,我们称其为可逆矩阵或者是非奇异矩阵。
我们先来看看奇异矩阵,老师举了一个例子:
A=\begin{bmatrix}
1 & 2 \\
3 & 6
\end{bmatrix}
如果学过行列式的定义,可以知道这个矩阵的行列式等于0。另外,我们可以利用列向量组合的思路来理解。矩阵
A乘上另外一个矩阵,得到的结果是列向量
\begin{bmatrix}1\\3\end{bmatrix}和
\begin{bmatrix}2\\6\end{bmatrix},这两个向量存在倍数关系,无论它们如何线性组合,得到的结果都在一条直线上。没办法得到
\begin{bmatrix}0\\1\end{bmatrix}或
\begin{bmatrix}1\\0\end{bmatrix}。
另外一种判断方式是,如果能够找到非零向量
x,使得
Ax=0,那么矩阵
A是奇异矩阵。
比如:在上面这个例子当中。
\begin{bmatrix}1&2\\3&6\end{bmatrix}\begin{bmatrix}3\\-1\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}
证明也很简单,我们可以使用反证法。假设矩阵
A有逆矩阵
A^{-1},那么根据
Ax = 0,可以得到
A^{-1}Ax = 0,即
x=0。这和题目中的假设
x是非0向量矛盾。
接下来我们看看如何计算逆矩阵,首先,我们可以使用方程的思路,写出逆矩阵中的各个参数,通过方程组的方式进行求解:
\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}a&b\\c&d\end{bmatrix}=\begin{bmatrix}1&0\\0&1\end{bmatrix}
除此之外,我们还可以使用另外一种方法——高斯-若尔当(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}
我们构造出一个类似增广矩阵的矩阵:
\begin{bmatrix}\begin{array}{cc|cc}1&3&1&0\\2&7&0&1\end{array}\end{bmatrix}
我们利用消元法将它左侧转化成单位矩阵:
\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]
这样我们就从矩阵
\begin{bmatrix}A | I\end{bmatrix}变成了
\begin{bmatrix}I | A^{-1}\end{bmatrix}。
我们可以把矩阵
A变成
I的过程看成是乘上了矩阵
A^{-1},
A^{-1}I=A^{-1}。方法右侧拼接的矩阵
I只是为了记录消元的每一步操作,通过这种方法我们不用解方程也可以得到逆矩阵,非常方便。
喜欢本文的话不要忘记三连~