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

2022-09-21 10:56:42 浏览数 (1)

作者 | 梁唐

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

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

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

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

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

消元法

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

begin{cases}x& 2y& z&=2\3x& 8y& z&=12\&4y& z&=2end{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&1end{bmatrix}xrightarrow{row_2-3row_1}begin{bmatrix}underline{1}&2&1\0&2&-2\0&4&1end{bmatrix}

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

b

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

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

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

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

begin{bmatrix}1&2&1\0&underline2&-2\0&4&1end{bmatrix}xrightarrow{row_3-2row_2}begin{bmatrix}underline{1}&2&1\0&2&-2\0&0&5end{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&|&2end{bmatrix}rightarrowbegin{bmatrix}1&2&1&|&2\0&2&-2&|&6\0&4&1&|&2end{bmatrix}rightarrowbegin{bmatrix}1&2&1&|&2\0&2&-2&|&6\0&0&5&|&10end{bmatrix}

我们把

b

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

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

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

z=-2

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

x=2, y=-1

消元矩阵

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

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

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

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

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

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

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

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

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

我们首先来看单位矩阵

I

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

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

我们把它乘上矩阵

A

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

A

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

A

本身。

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

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

我们把

begin{bmatrix}1&0&0\-3&1&0\0&0&1end{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

,使得:

Xbegin{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&0end{bmatrix}

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

X

了:

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

我们把这个矩阵称为矩阵

E_{21}

的逆矩阵,写成

E_{21}^{-1}

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

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

0 人点赞