在预习线性代数的过程中遇到了一个比较有趣的思维设计,记录于此。
在MIT的线代公开课上,老师讲到对于矩阵
,通过几个变换矩阵将其化为上三角矩阵(假设消元过程不需要任何行交换),式子是这样的:
如此,则有:
这似乎是很自然的逻辑,然而问题就出在这里,为什么我们通常采用(2)的形式来表示而不是采用(1)的形式呢?通过初等变换矩阵将
化为
,与
可以表示成一些初等变换矩阵逆与
的积,这两者本质上似乎是没有区别的。
问题就出在计算上,从设计的角度出发,后一种形式上的设计比前一种设计要好。
为什么?老师在视频中通过一个例子说明了这一点,我想在这里不妨重复一下,再给出我对于一般情况本质的理解。
首先我们来看两个初等变换矩阵的情况,
比如取
,
。
那么有
这并不是我们想要看到的设计,因为我们发现两个初等行变换矩阵相乘得到的新矩阵其它位置基本都是原矩阵对应位置的乘数项,只有第三行第一列的那个“10”显得格格不入,虽然这的确是正确结果。
其实仔细想来也能理解“10”出现的原因,对于矩阵
,
表示将
的第二行减去2倍的第一行,
表示将
的第三行减去5倍被
处理过的
的第二行(相对于最开始
的第二行已经减去了5倍的第一行)。那么很明显,如果用一个矩阵来表示
、
共同对
起到的作用的话,这两次操作的效果总和就是将
的第二行减去2倍的第一行,
的第三行减去5倍的第二行然后加上10倍的第一行。所以问题就出现在
处理的不是
,而是
,而在这个过程中,
对矩阵的操作对矩阵中被作用过的行起到了效果。
那么有没有什么办法可以避免这个“副作用”呢?换言之,有没有一种设计,在表达这个等式的同时,也能做到几个初等行变换矩阵相乘得到的新矩阵的每一项是各矩阵对应的乘数项呢?
我们考虑此时的
,
。
那么有
这样的确避免了“副作用”,也起到了我们想要的效果。
也许你可能会觉得有点难以置信,而且从形式上,(1)(2)两式并无显著区别,只不过一个是从开始变换,一个从结果反演。只是过程倒了一下,两者的运算过程就会有这样显著的区别么?如果我抛开时间的单向性,考虑开始与结果的因果置换(对称性),那么这两个过程不是一样的么?上面的例子可能只是侥幸?
但是事实上并非如此,这对于一般情况也是正确的。原因也很简单,这样的过程并不是对称的,也就是说因果不能颠倒。一切源头在于我们的目标——上三角矩阵和我们采用的方法——高斯消元法,以及我们的两个假设(不存在行交换以及不需要消元参数,也就是说消元的过程只涉及到加乘运算)。由于目标和方法都是不对称的,我们在通过(1)式那样的各种变换矩阵将
化为上三角矩阵
的时候,每一次的变换都建立在此前变换得到的结果上,其中难免会出现对于同一行变换叠加的现象。
而对于像(2)那样的写成逆的形式为什么就不存在这种问题呢?因为如果从变换的角度思考,此时要变换的对象是一个上三角矩阵(相比此前变换对应的对象
而言十分有规律),我通过若干个初等变换矩阵将它逐渐还原成
,此时考虑高斯消元法的逆过程——无非是从最后一行开始,加上倒数第二行的倍数,然后最后两行都加上倒数第三行的倍数,然后最后三行加上倒数第四行的倍数(如果存在倒数第四行的话)……如此,很显然可以看到,每次加的都是“新”行,也就是原有的行,因此不会出现变换叠加的现象。换言之,在进行这样的运算时完全可以抛开
不管而直接计算出
,而
可以通过写入所有变换矩阵的对应乘数项得到,因而整个计算过程就十分的简便,这也十分符合我们对数学美的需求。
总的来说,此次学习感悟就是:有步骤地打乱一个有规律的系统比整理好一个不规律的系统,在形式上要简单的多。