作者 | 梁唐
出品 | 公众号:Coder梁(ID:Coder_LT)
大家好,日拱一卒,我是梁唐。
我们今天继续麻省理工的线性代数,昨天有同学给我留言问我,为什么不选最新版的视频,要选05版的。这里简单解释一下,主要有这么几个原因。
首先是数学相关的知识变化比较小,不像是Python或者是C 等编程语言,一直都在迭代或者更新功能,数学知识很长时间内不会发生大的变化。其次是05版的老师非常好,是著名的《线性代数》书籍的作者,在业内非常权威,并且讲课风趣幽默,鞭辟入里。最后一个原因是,这个视频在B站有成熟的搬运和字幕,方便英语相对不太好的同学学习,并且还有充足的弹幕,比较有乐趣。
虽然画质有点感人,但相信我耐心看下去,一定会有收获的。
消元法
假设我们现在有三元方程组:
我们把它写成矩阵形式:
我们接下来要使用消元法来完成这个方程组的求解。首先,我们对第一行保持不变,因为它是主元行(privot row)。
通过观察可以知道,我们把第一行乘上3之后减去第二行可以将第2行第1列的系数消除。
这里我们先不管等于号右侧的矩阵,等做完左侧的矩阵部分再去修改右侧的
矩阵。这也是MATLAB等编程语言的做法。
下一步,我们要消除第三个方程当中的第二个系数,因为它的第一个系数已经为0了,所以跳过,消除下一个系数。实际上在MATLAB当中这并不会跳过,对于为0的系数依然会执行消元,只不过消元时乘上的倍数为0,所以不会有任何改变,我们认为理解时可以认为这一步被跳过了。
在这一步消元当中,主元变成了第二行的第二个系数。因为第三行的第一个系数已经为0了,所以不能再用第一行去消元。在编程语言当中,通常会采用递归的方式进行消元的过程。
通过观察可以发现,我们将第二行乘上2之后减去第三行,即可消去矩阵位置(3, 2)处的系数:
此时我们消元结束,得到了一个上三角矩阵,我们把这个矩阵称为
。顺便提一下,当我们完成了消元得到矩阵
之后,实际上行列式也已经出来了,就是三个主元的乘积,即
。
消元的过程一定顺利,一定可以保证得到上三角矩阵吗?
其实不一定,首先主元不能为0,如果主元为0,需要交换行,将主元不为0的行交换到主元的位置。如果我们把第三个方程的第三个参数从1改成-4,那么在最后消元的时候会导致最后一行全为0,即第三个主元不存在。这样会导致矩阵不可逆,即方程无解。
完成了消元之后,我们再考虑
,我们可以把
矩阵放在矩阵
后面,相当于添加了一列。这样新得到的矩阵称为增广矩阵(augumented matrix)。
我们把
带上之后,可以看出方程的解已经出来了。此时方程组变成:
很明显,从最后一个式子可以求出
,接着我们带入其余方程,可以求出
。
消元矩阵
在上一节课当中,我们讲过矩阵的线性组合。比如:
但这节课我们希望表示行操作,我们还是假设某个矩阵,然后在其左侧乘上一个向量,例如:
这里可以发现,我们用一行乘以一个矩阵,得到的结果仍然是一行。我们用矩阵乘以一列,得到的结果仍然是一列,上面的式子其实是对矩阵中的行进行线性组合。
在上面的消元法当中,我们将矩阵中的某一行乘上了一个数从另一行减去,这个过程重复执行了若干次,我们可以考虑将这个消元的过程通过矩阵运算来表达。
在消元法第一步当中,我们将第一行乘上了3,然后从第二行中减去。我们可以通过下面这个矩阵进行矩阵乘法得到,左侧的矩阵称为初等矩阵。
- item
这个矩阵是怎么得到的呢?
我们首先来看单位矩阵
的定义,例如一个3x3的单位矩阵为:
我们把它乘上矩阵
的操作堪称是行向量的线性组合,它表示从
矩阵当中取第1行作为结果的第一行,取第二行作为结果的第二行,取第三行作为结果的第三行。得到的结果就是
本身。
我们第一步消元当中,第一行和第三行不变,第二行由第二行减去三倍的第一行得到,所以第二行元素应该是
我们把
这个矩阵称为
,因为它完成的是第二行第一列的消元。在下一步消元当中,我们需要求
。
通过刚才对行运算的认识,我们可以很容易写出
的结果:
最后,我们把这两个步骤结合起来,可以写成
。
这里需要用到矩阵运算的规则,在矩阵运算当中,交换律不复存在,无法得到
。但存在结合律,
。这里我们可以使用结合律,得到
。其中
的结果也是一个矩阵,即我们可以通过一次矩阵的乘法得到一个矩阵的上三角矩阵。
除了消元操作之后,初等矩阵也可以完成置换行和列的操作。比如我们要置换两行:
置换两列:
也就是说初等矩阵进行左乘是对行进行操作,右乘是对列进行操作。本质上矩阵乘法就是对行或者列进行线性组合运算。
逆矩阵
现在我们继续思考一个问题,我们通过矩阵乘法可以将
变成
,那是否有办法再将
变回
呢?
为了简化这个过程,我们先关注其中一个初等矩阵,以
为例,我们假设存在一个矩阵
,使得:
这里我们只需要反向操作即可,我们想要将第二行变成
。我们只需要将第一行乘3再加到第二行即可,第一行和第三行无需改动,所以我们就可以求出
了:
我们把这个矩阵称为矩阵
的逆矩阵,写成
。
注意,并非所有矩阵都有逆矩阵,奇异矩阵没有,在这节课的例子当中,所有矩阵都是非奇异矩阵。
喜欢本文的话不要忘记三连~