线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件
目前我们用于解线性方程组的方法依然是Gauss消元法。在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作,这就默认了对A与b的操作数是相等的且每换一个b就要重复一遍对A的操作。
然而,在实际情况中,右侧向量b经常发生变化。而且,研究发现,Gauss消元法中,对n阶矩阵A的消元操作数正比于n3,而对右侧向量b的回代操作(包括行变换和恢复成代数方程的形式)数仅仅正比于n2。(操作次数上的相对大小可以根据A与b元素数量的差距进行猜想)
在b不变时,两种算法上的复杂度差距不明显,选择同步操作更为方便直观。但是,当b变化时,如果我们将对A和对b的操作进行分隔的话,只需对A完成一次完整的消元操作,再对b进行回代操作。这样可以大大减少操作的次数。
所以,在b变化时,我们先对A单独进行分解操作。其中的一种分解方法是LU分解。这种方法的优势在于分解结果中L(上三角矩阵)和U(下三角矩阵)都是三角形矩阵,后续运算比较简便。而且二者恰好相配,使用计算机进行运算时可以存储在一个数组中,节约存储空间。
利用A的LU分解解线性方程组的过程为将Ax=b等价变形成(LU)x=b,根据结合律有L(Ux)=b,再解Ly=b中的y,最后解Ux=y得到线性方程组的解。
LU分解的步骤如下:
1.求U留E:沿用Gauss消元法,将A化为U,不同的是,变换过程中左边乘上的每一个E都要记录下来;
2.逆E为L:将用到的E各自求逆(取含变换操作的元素的相反数)再逆序相乘(将消元乘数按照原来的位置写到一起,再补齐左上-右下对角线上的1和对角线上方的0),乘积即为L:
E求逆的简便方法和乘积求逆的运算法则在#3中已经提到。
逆序相乘等价于归置消元乘数于下三角矩阵中是一个常用结论,记忆使用可以简化运算。
乘积为L的依据是:假设E为所有E的乘积,EA=U可变形为E-1EA=E-1U=IA=A=LU,其中L=E-1。
什么样的矩阵才能进行LU分解?
具体判定方法没有给出。不过根据分解的过程,我们可以推定消元过程中不进行行交换的矩阵才能进行LU分解,即默认主元位(k行k列)上的元素均非0。
如果必须进行行交换怎么办?
Prof. Strang引入了置换的概念,针对n阶矩阵,其置换矩阵群含有n!个置换矩阵P也即可能的置换操作。这个矩阵群具有许多特殊的性质,比如P-1=PT,P之间的乘积仍属于该矩阵群。
置换将在#5中进行详细介绍。