从近视宅男买早餐到彭罗斯逆矩阵:线性方程组的无解与无穷多解
本文来自微信公众号:返朴 (ID:fanpu2019),作者:吴进远,原文标题:《从近视宅男买早餐到彭罗斯逆矩阵:线性方程组的无解与无穷多解|N文粗通线性代数》
不少同学在初学线性代数时感到迷茫、痛苦,体会不到课程的实际意义。这很大程度上是因为,教材为了由浅入深、循序渐进,须从基础的抽象概念讲起,而真正直观的部分,往往要等到后面的细分领域或具体应用。于是初学者往往知其然,不知其所以然;只见树木,不见森林。希望本文能让你换个视角,以轻松有趣的日常眼光,看到一个不一样的线性代数。
本文是系列文章《N文粗通线性代数》的第四篇。在上篇文章中,我们讨论了线性方程组的解有三种情况:无解、有唯一解、有无穷多个解;这和矩阵的秩关系密切。有唯一解的情形比较理想,那么碰到无解和有无穷多解的情形,我们又该如何处理呢?
往期文章:
第一篇:矩阵乘法
第二篇:逆矩阵
第三篇:矩阵的秩
撰文|吴进远
上回书说到,某近视宅男,某日下楼到早点铺买早餐。眼镜忘在家里,看不清黑板上写的价目。于是,宅男就一边排队,一边听着前边顾客买早点的品种数量,和服务员小妹报的总价,据此计算各种早点品种的单价。
近视宅男计算食品单价的过程,实际上是求解线性方程组的过程。可是,线性方程组并不一定总有解,也不一定只有唯一解。
(1)“张一刀”和“关一掏”与方程组无解
《三国演义》本来已经是演义了,但老百姓还有更加演义的演义。说是张飞早年卖肉,号称“张一刀”,一刀切下去,是多少斤客官就得买多少斤。而关羽绰号“关一掏”,掏出多少钱,摊贩就得收多少,从不让找零。
这天关羽来张飞这里买肉,看不惯张飞的跋扈,就故意只掏了一个小铜钱。两人吵了起来,多亏卖草鞋的刘备劝解。于是三人桃园结义,留下后面回响千年的英雄史诗。
我们早点铺的服务员小妹当然不是张一刀,可是如果顾客里有那么几位豪爽之士,动不动掏了钱随口说不用找,我们的宅男就无法得到正确的交易数据。这些有误差的数据汇总到一起,构成的线性方程组就会自相矛盾,从而使得方程组无解。
(2)无解也得一知半解?
前面谈到,在rank(A|y)=rank(A)+1的情况下,方程组是自相矛盾的,这种情况下方程组没有解。但人们对于无解这样一个答复通常是不会满意的,这就需要我们从无解的方程组中,尽可能多少获取点一知半解的信息。
一个描述自然现象的方程组出现自相矛盾,通常是在数据获取和传输过程中出现的某些误差导致的。一个方程组中的每一个方程,通常对应于一次测量或者调查,比如宅男听到的每一笔交易的数据。理想的情况下,方程个数与未知数个数相等时,我们会获得足够的约束条件,得到方程组的唯一解。进一步增加方程个数,新的方程并不会提供新的信息,但却能提供一个验算机会,帮助我们验证前面的计算对不对。下面这个图直观地说明了这种理想的情形。
这个图中,每一个平面代表一个方程。考虑方程组有三个未知数,在理想情况下,三个平面可以互相相交,确定一个公共点,这个点就是方程组的解。当我们把第四个方程加进去,如果第四个方程与前面三个没有矛盾,它也会通过这一公共点,这就帮助我们确认前面的数据采集、传输和计算没有错。
可是,如果第四个方程加进去,变成下图这个样子,情况就不同了。
在这里,新加进去的平面与前面三个平面没有公共点,这四个方程构成了一个无解的方程组。这该怎么办呢?
如果我们还有很多方程,我们也许会看到大多数方程交汇于一个公共点而只有少数方程与它们矛盾,这样我们就可以剔除矛盾的这些方程。不过,这仅仅对偶发性的错误有用。
很多情况下,数据采集、测量、传输过程中,会出现常态化的误差。几乎所有数据点,也就是方程组中的每一个方程都可能有这种误差,尽管这些误差也许都不很大。这样,所有测量数据都可能有用,但都不那么严格可靠。
为此,尽管我们无法得到方程组的严格的解,但我们可以对方程组的未知数做一个估计。这种估计出来的一组未知数,可以使方程组尽可能地近似成立。比如图3中,四个平面围出了一个四面体,我们可以相当合理地猜想,四面体中间的某一点,可以使方程组近似成立。
近似的方法有很多,最常用的一个方法是最小二乘法。假定我们找到一组数x,放到方程中未知数的位置,就会得到一串数(Ax-y),这一串数可以看成是每个方程所对应的测量数据与真实世界之间的误差。最小二乘法的操作,是选择x,使得这一组误差的平方和达到最小。
(3)最小二乘法应用的一个应用
最小二乘法应用非常广泛,我们这里举一个数据拟合的例子。
比如我们猜想,两个变量u和v之间存在一个二次函数关系。这个关系式可以写成:
这里注意x0、x1、x2是三个系数,类似我们买早餐时的单价,我们事先不知道,需要通过测量把它们算出来。
假设我们在u=1,4,7三个位置上做了三次测量,测量到的v值标在了下面图中。
图4
根据这三个测量,我们可以建立一个线性方程组
这个方程中右边向量里的值v1,v4,v7我们已经测量到了,解这个线性方程组,就可以算出三个系数,从而拟合出如上面图中虚线所示的一个二次函数。
如果我们做了更仔细的测量,在自变量不同的地方获得了更多的数据,把这些测量数据画出来,如下面图中所示。
图5
由于测量过程存在误差,所以新增加的测量点可能偏离我们拟合的二次函数,如上图中绿色线段所示。更有意思的是,这个现象提示我们,原先测的数据也不一定可靠,也可能存在误差。这就是说原来算出的系数也不一定可靠,函数的形状可能不同。
那么我们应该挑哪三个测量点来计算系数呢?实际上不管挑哪三个,结果都会与其他测量数据矛盾。怎么办呢?我们不妨把所有测量结果都用上,把它们之间的矛盾和个稀泥。
就像下图那样,让拟合的函数从测量点之间经过,让函数与测量点之间的误差都不大不小,中不溜。
图6
那么,这个稀泥怎么和呢?办法之一是用最小二乘法。
第一步,把所有测量点与待定函数之间的误差各自求平方,这样一来,正值的误差和负值的误差都变成正的,因而在下一步相加的时候不会互相抵消。(如果我们的问题中数据和函数是复数,则这个求平方实际上是把误差值与它的共轭复数相乘。为了避免文章内容过分繁杂,我们后面不再重复涉及这个情形。)
第二步,把这些误差的平方值加起来,得到一个总数。
最后,调整我们函数中的系数,让这个总数达到极小。
这里提醒读者,和稀泥的办法其实是不少的,但最小二乘法是数学上研究得比较透彻的方法,也是大家经常用的办法。
用矩阵的语言说,我们把所有测量的结果,放进线性方程组Sx=v。把这个矩阵展开写,如下式所示
注意这个方程组的自变量测量位置矩阵S是一个“高瘦”的矩阵。由于存在测量误差,这个方程组可能是自相矛盾的,但我们可以找到一个“矮胖”的左逆矩阵P,使得PS=I。用这个左逆矩阵去乘线性方程组的两边P(S x)=P v,就可以求得拟合函数中的未知系数:P v=PS x=I x=x。前面提到过,左逆矩阵可能有无数个,每一个算出的x可能是不同的,我们从这些左逆矩阵中挑出一个,使它得到的结果符合最小二乘关系。
同样,我们也完全可以挑一个别的左逆矩阵,虽然它算出的结果可能比最小二乘左逆矩阵略差一点,但我们能够获得其他好处,比如涉及的计算可能会方便很多。因此这样的选择仍然可能是合理的。当然这个话题超纲太多,这里就不多讨论了。
(4)无穷多解的情况怎么办?
我们前面讨论过,如果方程组中方程的个数小于未知数个数,或者是虽然方程的个数够,但有些方程之间线性相关,因而互相线性独立的方程个数不够,这就可能出现方程组有无穷多解的情况。
图7
比如上面图中,我们有三个未知数,三个方程,但三个方程只有两个线性独立。这样一来,方程对应的三个平面相交于一条直线,有无穷多个解。
遇到这种情况,我们对无穷多个解这样一个答案也往往不能满意。我们有时会希望加一些约束,让这个结果变成唯一的。
很多时候,人们使用的这个约束叫最小范数解。也就是说,在Ax=y这个方程组无穷多个解x当中,挑一个范数||x||最小的。
具体到图7中,我们希望在直线上找到一点,它与原点的距离最近。
在买早餐的例子中,假如我们没有足够的线性独立的交易数据,我们就无法算出每个食品的单价,但我们可以知道这些食品单价之间的关系。
为了帮助读者理解,我们把前两位顾客的购买数据重新列成下表:
在上面这个例子中,我们只有前两位顾客的数据,我们由此可以列出下面一组线性方程
上面这两个方程,只要让4*(1)-(2),就可以一下子消掉x2和x3,从而算出油饼单价x1为3元。显然只根据这两个顾客的信息,我们无法算出茶叶蛋和豆腐脑的单价。不过根据这两位顾客的信息,我们可以算出茶叶蛋和豆腐脑的单价之和为11元,这也是非常有价值的信息。
在此基础上,我们希望进一步估计茶叶蛋和豆腐脑的单价。考虑到早餐店一般都是小本生意,顾客也不是富豪,因此食品的定价应该不会有的太贵,有的太便宜。因此我们可以加一个有一定任意性,但也有一定合理性的条件,就是要求解的欧几里得模||x||为最小,欧几里得模也叫范数,具体说就是。这样我们就得到一个最小模解(也叫最小范数解):茶叶蛋和豆腐脑的单价都是5.5元。这的确不是我们事先知道的真实单价,但却是个八九不离十的估计。同时我们需要指出,这一组单价,与前两位顾客的交易数据是没有矛盾的。我们选择的5.5元这一组单价,是在约束条件不够,无法找到真实单价的情况下,从无穷多组不矛盾的解当中,挑选出来的一组。
这里提醒读者,并不是只有方程数少于未知数个数时才会出现无穷多解。有的时候,即使我们有很多方程,也同样会出现无穷多解。正如我们前面讲到,正确的判定方法是看方程组系数矩阵(及其增广矩阵)的秩。
还是用买早餐的例子来说明一下。从事过儿童教育的朋友都知道小朋友喜欢模仿他人,一个班里如果一个小朋友喊叫起来,其他很多小朋友就会跟着喊,教室马上就会成为住满青蛙的池塘。
假定一个小姐姐带着几位小弟弟小妹妹来买早点:
小姐姐买了一个油饼,一个茶叶蛋,一碗豆腐脑。后面一个小妹妹完全模仿姐姐:也买一个油饼,一个茶叶蛋,一碗豆腐脑。则这个新的方程没有提供任何新的信息。后面的小弟弟胃口好,每样食品都要两份:买了两个油饼,两个茶叶蛋,两碗豆腐脑。这个方程其实提供的信息与第一个是一样的。好不容易,下面一位小哥哥不模仿了:他买了两个油饼,四个茶叶蛋,四碗豆腐脑。结果他的弟弟要求买哥哥减去姐姐那么多,也就是:买一个油饼,三个茶叶蛋,三碗豆腐脑。
这样一来,我们虽然有五位顾客,五个方程,但却只有两个线性独立的方程,系数矩阵的秩是2。方程组仍然有无穷多解(如果有解的话)。
此外我们还要提醒读者,最小二乘解和最小范数解这两件事不要混淆。前面提到的最小二乘解不一定是方程组的真实的解,因为方程组可能是无解的,我们利用最小二乘法,选择一个“解”x,使得(Ax-y)这一组误差的平方和达到最小。而这里谈到的最小范数解,讨论的是方程组有解的情形。我们从无穷多组解当中,挑选了欧几里得模||x||最小的解。
(5)无解而且约束不足的情况
我们已经知道,线性方程组系数矩阵A的秩rank(A)A增广成为(A|y),这个增广矩阵的秩提升了,即:rank(A|y)=rank(A)+1,则方程组出现了自相矛盾,因而没有解。这对应于上面表中右下这一格的情形。
我们可以把这个情形用下图来直观地显示。
图8
上面图中显示了一个包含了三个方程的线性方程组,每个方程对应于空间中的一个平面。这三个方程的系数矩阵只有两行是线性独立的,第三行可以写成另外两行的线性组合(更准确地说,是任意一行都可以写成另外两行的线性组合)。但同时这三个方程自相矛盾,没有解。从几何上说,就是不存在三个平面共同的交点。
我们仔细观察,可以看到三个平面围出了一个平直的“隧道”。对这个线性方程组,我们可以估计,它在没有测量数据带来的误差时,它的解应该处在隧道中的某个位置。用最小二乘法,我们可以估计出一个“解”x,使得一组误差(Ax-y)的平方和为最小。注意这个最小二乘法的解并不是一个点,它对应于上图隧道中深蓝色的直线。
在这条蓝线上,任意一点到三个平面的距离都保持不变,因此误差的平方和也维持不变。换句话说,蓝线上所有的点都是方程组的最小二乘解。
在这种情况下,我们可以像前面那样,对这个“解”提出进一步的约束,比如最小范数约束。在要求||Ax-y||为最小的情况下,要求||x||也达到最小。这相当于在上面图中蓝线上,找到与原点距离最近的一点。
前面讨论的这些情况听起来很复杂,但说到底,是对一个任意矩阵求逆的问题。我们需要对不是方形的矩阵求逆,需要不管矩阵是不是满秩,都能找到一个逆。需要对以上这些复杂情况有个一网打尽的解决方案。这个解决方案之一,就是穆尔-彭罗斯广义逆矩阵。我们今后会进一步讨论这个问题。(未完待续)
|小编谨识
无解不妨一知半解,多解宁可不求甚解。即便有点误差,也好过什么都不做。妈妈从小批评我“差不多先生”加“小本生意”思想,但同样思想被数学前辈写成定理,便是一网打尽的大成就。
相关推荐
从近视宅男买早餐到彭罗斯逆矩阵:矩阵的秩
从显卡到人工智能,不可忽视的宅男贡献
宅男之死
爆火的宅男游戏,崛起的男性经济
宅男财经丨专家:华为收取专利费天经地义
米哈游的千亿游戏经:三个宅男打败了丁磊
宅男财经|大批明星已停播!学者建议打击假商品、假数据
近视老花不再怕,极目生物引进“黑科技”
《完蛋!我被美女包围了!》主创:为其貌不扬的宅男造梦
《完蛋!我被美女包围了!》销售破千万,爆火逻辑是“宅男圆梦”?
网址: 从近视宅男买早餐到彭罗斯逆矩阵:线性方程组的无解与无穷多解 http://www.xishuta.com/newsview131322.html
推荐科技快讯
- 1问界商标转让释放信号:赛力斯 94991
- 2人类唯一的出路:变成人工智能 19561
- 3报告:抖音海外版下载量突破1 19300
- 4移动办公如何高效?谷歌研究了 18798
- 5人类唯一的出路: 变成人工智 18666
- 62023年起,银行存取款迎来 10162
- 7网传比亚迪一员工泄露华为机密 8236
- 8五一来了,大数据杀熟又想来, 7158
- 9顶风作案?金山WPS被指套娃 7120
- 10大数据杀熟往返套票比单程购买 7069