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

日拱一卒,麻省理工的线性代数课,消元法解线性方程

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

作者 | 梁唐

出品 | 公众号:Coder梁(ID:Coder_LT)

大家好,日拱一卒,我是梁唐。

我们今天继续麻省理工的线性代数,昨天有同学给我留言问我,为什么不选最新版的视频,要选05版的。这里简单解释一下,主要有这么几个原因。

首先是数学相关的知识变化比较小,不像是Python或者是C++等编程语言,一直都在迭代或者更新功能,数学知识很长时间内不会发生大的变化。其次是05版的老师非常好,是著名的《线性代数》书籍的作者,在业内非常权威,并且讲课风趣幽默,鞭辟入里。最后一个原因是,这个视频在B站有成熟的搬运和字幕,方便英语相对不太好的同学学习,并且还有充足的弹幕,比较有乐趣。

虽然画质有点感人,但相信我耐心看下去,一定会有收获的。

消元法

假设我们现在有三元方程组:

\begin{cases}x&+2y&+z&=2\\3x&+8y&+z&=12\\&4y&+z&=2\end{cases}

我们把它写成矩阵形式:

\begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1\\ 0 & 4 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} 2 \\ 12 \\ 2 \end{bmatrix}

我们接下来要使用消元法来完成这个方程组的求解。首先,我们对第一行保持不变,因为它是主元行(privot row)。

通过观察可以知道,我们把第一行乘上3之后减去第二行可以将第2行第1列的系数消除。

\begin{bmatrix}\underline{1}&2&1\\3&8&1\\0&4&1\end{bmatrix}\xrightarrow{row_2-3row_1}\begin{bmatrix}\underline{1}&2&1\\0&2&-2\\0&4&1\end{bmatrix}

这里我们先不管等于号右侧的矩阵,等做完左侧的矩阵部分再去修改右侧的

b

矩阵。这也是MATLAB等编程语言的做法。

下一步,我们要消除第三个方程当中的第二个系数,因为它的第一个系数已经为0了,所以跳过,消除下一个系数。实际上在MATLAB当中这并不会跳过,对于为0的系数依然会执行消元,只不过消元时乘上的倍数为0,所以不会有任何改变,我们认为理解时可以认为这一步被跳过了。

在这一步消元当中,主元变成了第二行的第二个系数。因为第三行的第一个系数已经为0了,所以不能再用第一行去消元。在编程语言当中,通常会采用递归的方式进行消元的过程。

通过观察可以发现,我们将第二行乘上2之后减去第三行,即可消去矩阵位置(3, 2)处的系数:

\begin{bmatrix}1&2&1\\0&\underline2&-2\\0&4&1\end{bmatrix}\xrightarrow{row_3-2row_2}\begin{bmatrix}\underline{1}&2&1\\0&2&-2\\0&0&5\end{bmatrix}

此时我们消元结束,得到了一个上三角矩阵,我们把这个矩阵称为

U

。顺便提一下,当我们完成了消元得到矩阵

U

之后,实际上行列式也已经出来了,就是三个主元的乘积,即

1 * 2 * 5 = 10

消元的过程一定顺利,一定可以保证得到上三角矩阵吗?

其实不一定,首先主元不能为0,如果主元为0,需要交换行,将主元不为0的行交换到主元的位置。如果我们把第三个方程的第三个参数从1改成-4,那么在最后消元的时候会导致最后一行全为0,即第三个主元不存在。这样会导致矩阵不可逆,即方程无解。

完成了消元之后,我们再考虑

b

,我们可以把

b

矩阵放在矩阵

A

后面,相当于添加了一列。这样新得到的矩阵称为增广矩阵(augumented matrix)。

\begin{bmatrix}1&2&1&|&2\\3&8&1&|&12\\0&4&1&|&2\end{bmatrix}\rightarrow\begin{bmatrix}1&2&1&|&2\\0&2&-2&|&6\\0&4&1&|&2\end{bmatrix}\rightarrow\begin{bmatrix}1&2&1&|&2\\0&2&-2&|&6\\0&0&5&|&10\end{bmatrix}

我们把

b

带上之后,可以看出方程的解已经出来了。此时方程组变成:

\begin{cases}x&+2y&+z&=2\\&2y&-2z&=6\\&&5z&=-10\end{cases}

很明显,从最后一个式子可以求出

z=-2

,接着我们带入其余方程,可以求出

x=2, y=-1

消元矩阵

在上一节课当中,我们讲过矩阵的线性组合。比如:

\begin{bmatrix}col1&col2&col3\end{bmatrix}\begin{bmatrix}3 \\ 4 \\ 5\end{bmatrix}=3col1+4col2+5col3

但这节课我们希望表示行操作,我们还是假设某个矩阵,然后在其左侧乘上一个向量,例如:

\begin{bmatrix}1&2&7\end{bmatrix} \begin{bmatrix}row1\\row2\\row3\end{bmatrix}=1row1+2row2+7row3

这里可以发现,我们用一行乘以一个矩阵,得到的结果仍然是一行。我们用矩阵乘以一列,得到的结果仍然是一列,上面的式子其实是对矩阵中的行进行线性组合。

在上面的消元法当中,我们将矩阵中的某一行乘上了一个数从另一行减去,这个过程重复执行了若干次,我们可以考虑将这个消元的过程通过矩阵运算来表达。

在消元法第一步当中,我们将第一行乘上了3,然后从第二行中减去。我们可以通过下面这个矩阵进行矩阵乘法得到,左侧的矩阵称为初等矩阵。

  1. item
\begin{bmatrix}1&0&0\\-3&1&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=\begin{bmatrix}1&2&1\\0&2&-2\\0&4&1\end{bmatrix}

这个矩阵是怎么得到的呢?

我们首先来看单位矩阵

I

的定义,例如一个3x3的单位矩阵为:

\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}

我们把它乘上矩阵

A

的操作堪称是行向量的线性组合,它表示从

A

矩阵当中取第1行作为结果的第一行,取第二行作为结果的第二行,取第三行作为结果的第三行。得到的结果就是

A

本身。

我们第一步消元当中,第一行和第三行不变,第二行由第二行减去三倍的第一行得到,所以第二行元素应该是

\begin{bmatrix}-3&1&0\end{bmatrix}

我们把

\begin{bmatrix}1&0&0\\-3&1&0\\0&0&1\end{bmatrix}

这个矩阵称为

E_{21}

,因为它完成的是第二行第一列的消元。在下一步消元当中,我们需要求

E_{32}

通过刚才对行运算的认识,我们可以很容易写出

E_{32}

的结果:

\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&-2&1 \end{bmatrix}

最后,我们把这两个步骤结合起来,可以写成

E_{32}(E_{21}A)=U

这里需要用到矩阵运算的规则,在矩阵运算当中,交换律不复存在,无法得到

AB \neq BA

。但存在结合律,

A(BC) = (AB)C

。这里我们可以使用结合律,得到

(E_{32}E_{21})A=U

。其中

E_{32}E_{21}

的结果也是一个矩阵,即我们可以通过一次矩阵的乘法得到一个矩阵的上三角矩阵。

除了消元操作之后,初等矩阵也可以完成置换行和列的操作。比如我们要置换两行:

\begin{bmatrix} 0&1\\ 1&0 \end{bmatrix} \begin{bmatrix} a&b\\ c&d \end{bmatrix} = \begin{bmatrix} c&d\\ a&b \end{bmatrix}

置换两列:

\begin{bmatrix} a&b\\ c&d \end{bmatrix} \begin{bmatrix} 0&1\\ 1&0 \end{bmatrix} = \begin{bmatrix} c&d\\ a&b \end{bmatrix}

也就是说初等矩阵进行左乘是对行进行操作,右乘是对列进行操作。本质上矩阵乘法就是对行或者列进行线性组合运算。

逆矩阵

现在我们继续思考一个问题,我们通过矩阵乘法可以将

A

变成

U

,那是否有办法再将

U

变回

A

呢?

为了简化这个过程,我们先关注其中一个初等矩阵,以

E_{21}

为例,我们假设存在一个矩阵

X

,使得:

X\begin{bmatrix} 1&0&0\\ -3&1&0\\ 0&0&1 \end{bmatrix}= \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix}

这里我们只需要反向操作即可,我们想要将第二行变成

\begin{bmatrix}0&1&0\end{bmatrix}

。我们只需要将第一行乘3再加到第二行即可,第一行和第三行无需改动,所以我们就可以求出

X

了:

X=\begin{bmatrix} 1&0&0\\ 3&1&0\\ 0&0&1 \end{bmatrix}

我们把这个矩阵称为矩阵

E_{21}

的逆矩阵,写成

E_{21}^{-1}

注意,并非所有矩阵都有逆矩阵,奇异矩阵没有,在这节课的例子当中,所有矩阵都是非奇异矩阵。

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 消元法
  • 消元矩阵
  • 逆矩阵
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档