本文是Gilbert Strang的线性代数导论课程笔记。课程地址: http://v.163.com/special/opencourse/daishu.html
第三课时:
A的LU分解
一、A=LA分解
消元的目的,只是为了更好正确的认识矩阵的概念,A=LU是最基础的矩阵分解。L是下三角矩阵,U是上三角矩阵。A通过消元最终得到U,L即A与U之间的联系。
先看A矩阵通过初等矩阵消元得到U:
这里要求的是A=LU,L和消元矩阵E是什么联系呢?L与E互为逆矩阵。消元矩阵的逆是比较容易求的
有时我们将U中的主元提取出来,其余的位置设为0,即diagonal对角阵D,可分解得到
LDU,两边各一个三角矩阵,中间一个对角阵。
假设在三维矩阵中,消元步骤中不需要任何行交换,
L是各消元矩阵的逆的反向乘积。
为什么要用逆的形式?即上图中为什么下面的逆的形式的等式要比上面的等式要好?
举下面的例子,两个消元矩阵E21(行2减去2倍行1)和E32(行3减去5倍的新行2)相乘得新的右侧消元矩阵,那么,从右侧结果显示,元素10是我们不喜欢的(但它确实是运算结果),E21(行2减去2倍行1)和E32(行3减去5倍的新行2)这种顺序,行1(元素10)怎么就影响到了行3呢?这是因为,第一步中有2倍行1从行2中减去了,然后在第二步中又乘5倍从行3中减去,因此总共在行3中加上了10倍行1。因此,这种形式不是我们喜欢的,但逆的乘积则不是这样的。
对于“第一步中有2倍行1从行2中减去了,然后在第二步中又乘5倍从行3中减去,因此总共在行3中加上了10倍行1”,我举个例子解释一下:
1 2 0
3 4 1
5 0 5
该矩阵通过以上所描述的进行变换,第一步第二行有:3-2*1 4-2*2 1-2*0
最终第二步第三行有:5-5*(3-2*1) 0-5*(4-2*2) 5-5*(1-2*0)
即:5-5*(3-2*1) 0-5*(4-2*2) 5-5*(1-2*0)= 5-5*3+10*1 0-5*4+10*2 5-5*1+10*0
由这个结果不难看出“总共在行3中加上了10倍行1”的结论了。
现在我们
反向计算,顺序倒过来求逆的积。L中矩阵相乘的顺序非常好,2和5不会冲突,不会得到10。即要求出L,不需要任何运算,只需要把所有消元乘数都写进来,就能得到L。
总结下:A=LU,如果不存在行互换,消元乘数,即消元步骤中的需要乘以并减去的那个倍数,消元乘数可以直接写入L中。即只要步骤正确,可以在得到LU过程中把A抛开。例如,当你完成A第二行的消元时,为了得到LU,你只需要记住U中新的第二行是什么,同时消元所用的乘数也需要记住,至于A是什么不需要管。
二、消元耗费次数
消元共耗费了多少次?A变成U
把消元中的一次加和乘操作看为“一次”操作。100*100的矩阵,第一主元的消元需要接近100*100的操作(第一行不变),第二主元的消元需要接近99*99的操作(第二行不变)。。。。
因此n维矩阵的消元一共需要次数接近1/3 N3,1/3是考虑到求和式子中数字在逐渐减小,如果不减小的话应该是n*n2,这才是n3。这其中有微积分的知识:从1到n对x2dx进行积分,结果得到1/3n3,微积分其实是考虑连续情况下的“求和”(但线性代数式离散的)。
另一个问题:之前是A进行消元得到U,那么加上右侧常数列b,它需要多少次操作?把它放到消元步骤中,然后进行回代,一共需要n square次操作,要比A进行变换的次数少得多。
因此,经常有矩阵A和几个右侧向量,这时对A进行更多次操作,将其分解乘L和U,来完成消元,之后就可以以较少次数处理右侧向量了。这时方程组运算中最基本的运算问题。
三、转置与置换permutations,置换矩阵群
若允许行互换,当主元位置为0时,要进行行互换,置换矩阵可以进行行互换。来看看3维下的所有置换矩阵:
3维下一共3*2*1=6个置换矩阵,他们形成的矩阵群有一些特点:
1)置换矩阵两两相乘结果仍然在该群中
2)取其逆,只用将行换回去,结果也在该群中
3)个别置换矩阵的逆矩阵就是其置换矩阵本身(比如上面的前4个,其转置等于本身),但对于所有的,
总结来说是:置换矩阵的逆是等于其转置。