不少同学在初学线性代数时感到迷茫、痛苦,体会不到课程的实际意义。这很大程度上是因为,教材为了由浅入深、循序渐进,须从基础的抽象概念讲起,而真正直观的部分,往往要等到后面的细分领域或具体应用。于是初学者往往知其然,不知其所以然;只见树木,不见森林。希望本文能让你换个视角,以轻松有趣的日常眼光,看到一个不一样的线性代数。

本文是系列文章《N文粗通线性代数》的第二篇,通过矩阵初等变换来引入矩阵的逆及其性质。主要思路是:消元法求解线性方程组→线性方程组的初等变换→矩阵的初等行(列)变换→化矩阵为“标准形”,从而可以轻易地写出解。

撰文|吴进远

上回书说到,某近视宅男,某日下楼到早点铺买早餐。眼镜忘在家里,看不清黑板上写的价目。于是,宅男就一边排队,一边听着前边顾客买早点的品种数量,和服务员小妹报的总价,据此计算各种早点品种的单价。

为了方便读者理解,我们把几位顾客的购买数据列成下面一个表:

打开网易新闻 查看精彩图片

(1)(可逆)矩阵乘法的逆运算

说了半天,该我们的近视宅男登场了。

打开网易新闻 查看精彩图片

他需要根据排队时听到的交易数据,算出每一种食品的单价。这就是说,他要求出一组多元一次方程的解。

打开网易新闻 查看精彩图片

这样一个方程组,也可以写成矩阵的形式,只不过,现在每一种食品的单价是未知数。

换句话说,他要做(可逆)矩阵乘法的逆运算。

(2)单位矩阵

一般而言,做逆运算比做正向的运算要难, (可逆) 矩阵的逆运算也不例外。不过我们可以通过我们的直觉与经验,获得一些启发。

比如赶巧了,前面三个顾客:

第一位买了一个油饼,“3元”——服务员小妹报价;

第二位买了一个茶叶蛋,“4元”;

第三位买了一碗豆腐脑,“7元”。

这样一来,我们不费吹灰之力就知道了三种食品的单价。用矩阵乘法写出来,就是:

这种左上到右下对角线元素为1,其他非对角线元素都为0的矩阵,叫做单位矩阵,有时也称恒等矩阵。单位矩阵通常用字母I表示,也有教科书或文献用E或者U表示的。单位矩阵与任何其他矩阵相乘,结果与原矩阵相等。就像用1乘以任意实数,结果都与原数相同。

(3)对角矩阵

像上面这么巧的事很难碰上,我们可以将条件放宽一些,每个顾客不限定必须买一份食品。

比如一个顾客买了3个茶叶蛋,花了12元,等等。

这种情况也难不倒我们,只要做简单的除法,就能算出茶叶蛋的单价。

这种情形对应的矩阵叫对角矩阵,其中只有对角元素不是0,其他非对角元素都是0。前面谈到的单位矩阵是对角矩阵的特殊情况。

(4)上三角矩阵

实际上,对角矩阵这种情形需要三位顾客都只购买一种食品,这个条件仍然太苛刻。我们可以把条件进一步放宽:设想一位顾客购买了一种食品,另一位购买了两种,再一位购买了三种。

比如,第三位只买了豆腐脑,

第二位买了茶叶蛋和豆腐脑,

而第一位买了所有三种食品。

写成矩阵乘法,就会呈现下面这个样子:

打开网易新闻 查看精彩图片

这个矩阵叫上三角矩阵,它只有对角线以及上部元素可能不是0,而下部的非对角元素都是0。在这个情形下,想计算各个食品的单价也很容易。

从第三笔交易,我们用一次除法,就可以算出豆腐脑的单价。

再看第二笔交易,既然豆腐脑的单价知道了,茶叶蛋的单价也不难算出来。

接着看第一笔交易,虽然顾客买了所有三种食品,但其中两种的单价已经算出来了,因而只剩下一个未知数,也很容易算出来。

(5)消元法

不过,理想丰满现实骨感,在一般的情况下,我们可能碰不到这些容易计算的情况。

因此,我们需要把一般的交易,通过某种运算,变换成上面谈到的这些容易计算的情形,最终得到未知数的解。

比如我们开头谈到前三位顾客实际的交易,构成了三个三元一次方程。一次方程有时也叫线性方程。

我们的任务,是通过解这个线性方程组,求出它的三个未知数。

打开网易新闻 查看精彩图片

根据前面的提示,在求解中,我们应该尽量把非对角的元素,也就是方程组中左边非对角的系数变成0。

我们中学里学过解线性方程组的消元法,就是把一个方程左右两边,同时加减另一个方程的某个倍数,就可以把其中一个未知数的系数消成0。

比如:(2)-2*(1) ,(3)-3*(1),就可以把第二、第三两个方程的第一个系数消掉

打开网易新闻 查看精彩图片

我们再回过头去看一下宅男思考的那张图,就能慢慢体会其中思路。

打开网易新闻 查看精彩图片

注意他把第二行和第三行原来的黑字划掉,写上了对应的蓝字,就反映了这样一个计算过程。

进一步,通过 (3')-(2'),就可以把第三个方程中的第二个系数消掉(对应于图中第三行划掉蓝字,写上紫字):

打开网易新闻 查看精彩图片

到了这一步,方程组的系数构成一个上三角矩阵。由此,我们就可以一步步地把所有未知数算出来了。比如由(3")我们可以算出 x3 = 7,然后利用(2")算出 x2 等等。这个计算过程如果凭空干算,那的确需要学霸级别的心算能力。但如果有草稿纸,普通同学也能算出来。

这种消元的过程,可以看成是根据已知顾客的交易数据,组合出一些虚拟顾客的虚拟交易,以方便我们算出各个食品的单价。

(6)线性组合与线性相关

以上运算是把方程组中的系数拿来乘以一定的倍数再互相加减,我们通常把这种运算叫线性变换。得出的结果叫原来方程的线性组合。而这样得到的新方程与原来的方程组线性相关。过去有句话叫“线性相关,真是一关”。现在我们打怪升级,算是过了这一关的一小半。

线性组合是矩阵乘法的拿手好戏,像我们前面说的消元运算,可以很简单地写成矩阵的乘法。

打开网易新闻 查看精彩图片

我们把线性方程组(1) (2) (3)等号两边的系数拼在一起,构成一个增广矩阵:(A|y)。

然后用一个矩阵P1从 左边去乘这个增广矩阵,得到的乘积为(A'|y')。

P1的第一行 是(1 0 0),表示(A'|y')的第一行就是(A|y)的第一行。

注意这种用左边的向量去乘右边矩阵的操作中,我们是把左边每一横行的元素,竖起来与右边矩阵各个列的元素分别相乘并累加的。

P1的第二 行是(-2 1 0),表示(A'|y')的 第二行等于(A|y) 的第二行减去第一行的2倍。

P1的第三行是(-3 0 1),表示(A'|y')的第三行等于(A|y)的 第三行减去第一行的3倍。

经过这样一番操作之后,我们可以看出,(A'|y')实际上就是方程组(1') (2') (3')的增广矩阵,其中两个元素被消成了0 。

为了把第三行第二列的元素也消成0,我们在P1这个操作的基础上,再引入另一个操作P2。

打开网易新闻 查看精彩图片

这里,P2对方程组的第 一、第二行没有做任何变换,仅仅是从第三行中减去了第二行。至此,我们将方程组的系数矩阵,变换成了上三角矩阵。

不难想象,我们可以进一步做类似的操作,将上三角矩阵上部非对角元素也消成0,从而得到一个对角矩阵。然后从对角矩阵,对每一行简单地乘以 (或除以) 一个常数,把对角线元素都变成1,从而得到单位矩阵I。这 些操作,也可以写成类似的矩阵,我们用P5,P4,P3等表示。

于是,我们就有:

(P5P4P3P2P1)A=I

把 (P5P4P3P2P1) 乘在一起,合并成一个矩阵

B=(P5P4P3P2P1),

我们得到:BA=I

(7)逆矩阵

类似B这种矩阵,它和A相乘,得到单位矩阵I。我们把B称为A的逆矩阵。很多书籍和文献把A的逆矩阵写成A-1,也就是说

A-1A=I

不过,这里提醒读者不要把这个-1的上标与倒数或-1次方混淆,逆矩阵不是通过简单的除法算出来的。

逆矩阵只有正方矩阵可能有。这意味着要求出N个未知数,必须有N个方程,或者说N个约束条件。方程 (约束条件) 多于或少于未知数个数都会给我们的求解运算带来一些麻烦,我们后面会谈到。

不过,并不是所有方阵都有逆矩阵,大家也许学到过,只有满秩的方阵有逆矩阵。方阵满秩等价于它的行列式不等于0。

(8)计算机求解矩阵的逆

近视宅男计算食品单价的过程,实际上是求解线性方程组的过程。而求解线性方程组的过程,可以看成是求解A的逆矩阵的过程。

前面介绍的算法听起来挺麻烦,但现在有了计算机,编好程序让计算机算就非常方便。大家从网上可以搜到很多矩阵求逆的在线计算器,除了算出结果,还可以帮助我们理解计算的过程。作者没有近视宅男那么强的心算能力,于是用网上的在线矩阵求逆计算器试验了一下,结果如下图所示。

打开网易新闻 查看精彩图片

在上面的计算过程中大家可以看到,计算开始时,程序在原矩阵右边贴了一个单位矩阵,二者组成一个增广矩阵。通过消元,把左边变成单位矩阵,于是右边就成了原始矩阵的逆矩阵。

最后的结果是:

类似的运算,有些书上叫高斯消去法,但实际上,这种运算方法并不是高斯首创。在高斯之前,牛顿就已经使用类似的方法了。那么这个方法是不是牛顿发明的呢?好像也没有看到有科学史文献提及是他发明的。我最近在一本教科书Basic Linear Algebra (作者是苏格兰教授T.S. Blyth和E.F. Robertson) 上看到,有一本书“The Nine Chapters on the Mathematical Art”上,就有这样的消元法。我顺着这个线索查了一下,这本书叫《九章算术》,里面确实有。

在人类智力活动中,类似的例子非常多。前人做出某个成果,后人没有读过文献,于是又重新发现一次。就以我自己为例吧,我自己早年就有过一个发明,重复了整整100年前前人的发明。更有意思的是,我过了30多年才知道,前人已经在130多年前做出了这个发明。

(8)逆矩阵的一些性质

一个满秩的方阵A和它的逆矩阵B之间有很多很有用的性质。

比如

AB=I

而且

BA=I

你可能觉得,这有什么可大惊小怪的,就像:

2×0.5=0.5×2=1,

可是问题没有那么简单。一般来说,矩阵乘法是不符合交换律的,只有在一些特殊的情况下,才会有像这样可以交换的情形。

我们这里不做严格的证明,仅仅用买早餐这个事来说明一下这两个关系式是什么意思。我们仍然假设早餐店卖三种食品,三个顾客购买品种的向量互相线性无关,因此购物矩阵A是一个3×3 的满秩矩阵。根据这个矩阵A, 近视宅男可以算出一个逆矩阵B

对于任意的一组价格x,服务员小妹都可以算出三位顾客的购物金额:

y=Ax

而反过来,近视宅男可以根据前面三位顾客的购物金额y,反过来算出三种食品的价格:

x=By

因此:x=B(Ax) = (BA)x。由 于这个关系式对任意的价格向量都成立,我们可以证明BA=I(这里略去500字证明过程) 。

反过来,对于任意的一组购物金额y, 近视宅男都可以算出三种食品的价格:

x=By

而服务员小妹则可以根据三种食品的价格x,算出三位顾客的购物金额:

y=Ax

因此:y=A(By) = (AB)y。由 于这个关系式对任意的购物金额向量y都成立,我们可以证明AB=I(这里略去500字证明过程) 。

AB=I出发,如果在等式两边从左边乘上一个B,我们会得到:

BAB=B

同样,在等式两边从右边乘以一个A,可以得到:

ABA=A

像这样形状的两个关系式,我们今后会多次看到。这里提醒读者注意,ABA=ABAB=B这两个关系式与AB=IBA=I不是等价的。我们只能从AB=IBA=I推出ABA=ABAB=B。但反过来不行。比如,你不能从ABA=A,两边“划掉”一个A,得到AB=I

(9)左逆矩阵与右逆矩阵

对于一个矩阵A,假如另一个矩阵B从左边与它相乘而得到单位矩阵,也就是说:

BA=I

则矩阵BA的左逆矩阵。

而如果从右边乘,得到单位矩阵:

AB=I

BA的右逆矩阵。

对于满秩方 阵,它的逆矩阵既是左逆,也是右逆。但在一般的情况下,比如不是方阵,一个矩阵可能只有左逆或者只有右逆。

为了方便读者理解,我们把几位顾客的购买数据重新列在下表:

打开网易新闻 查看精彩图片

我们这个早餐店卖三种食品,表中有四个顾客。对于给定的单价向量x,根据每位顾客购买数目,服务员小妹可以算出四位顾客购物总价组成的向量y。写成矩阵是:

y=Sx

这里顾客购买数目组成的矩阵S有3列4行,它是一个“瘦高”的矩阵。为了方便读者注意到这是一个瘦高矩阵,我们特意用S这个拼音字母来代表它。

当这个矩阵是列满秩的时候,它存在一个左逆矩阵P。利用这个左逆矩阵,近视宅男可以根据顾客购物总额向量y,反算出单价向 量x,即:

x=Py

这个左逆矩阵P有4列3行,它是一个“矮胖”的矩阵。为了方便读者注意到这是一个胖矩阵,我们特意用P这个字母来代表它。

对于任意价格向量x,服务员小妹算出顾客购物总额Sx,然后近视宅男可以反向算出价格向量:

x=P(Sx)。

因此P这个操作可以逆转抵消S这个操作 ,我们可以证明:

PS=I

PS的左逆。通常情况下左逆P可能不是唯一的,我们可能会根据其他条件从许许多多左逆中挑一个。

另外,左逆不一定同时是右逆,对于任意顾客购物总额向量y1,近视宅男确实可以算出一个价格向量,x1 =Py1,但 这个价格与真实的价格可能完全不同,服务员小妹确实也可以根据这个价格算出顾客购物总额y2 =Sx1,但它可能和开始给的y1 不同,因此S这个操作不一定能逆转抵消P的 作用,因此SP不一定等于I

在服务员小妹算出的顾客购物总额y=S x之中,所有购物额都是靠谱的,没有互相矛盾的情形,以此为基础,宅男才能算出正确的 价格x=P(S x)。但如果基于任意顾客购物总额向量y1 情况就不一定了。比如某个顾客可能信口开河说这顿早餐花了200元,这样一来所有的计算就都乱了。

左逆矩阵与右逆矩阵是更宽范围内的广义逆矩阵中的两种特殊情况,我们后面会讨论到。 (未完待续)

打开网易新闻 查看精彩图片

本文转载自《返朴》微信公众号

 从近视宅男买早餐到彭罗斯逆矩阵(2)逆矩阵|N文粗通线性代数
打开网易新闻 查看更多视频
从近视宅男买早餐到彭罗斯逆矩阵(2)逆矩阵|N文粗通线性代数

《物理》50年精选文章