前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日拱一卒,麻省理工的线性代数课,矩阵乘法和逆矩阵

日拱一卒,麻省理工的线性代数课,矩阵乘法和逆矩阵

作者头像
TechFlow-承志
发布2022-09-21 10:53:42
6370
发布2022-09-21 10:53:42
举报
文章被收录于专栏:TechFlow

作者 | 梁唐

出品 | 公众号: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

只是为了记录消元的每一步操作,通过这种方法我们不用解方程也可以得到逆矩阵,非常方便。

喜欢本文的话不要忘记三连~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 矩阵乘法
    • 行列向量相乘
      • 列向量组合
        • 行向量组合
          • 行列相乘
            • 分块乘法
            • 逆矩阵
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档