一点点数学!开干!
参考书籍:《矩阵分析与计算》李继根 张新发编著
矩阵的LU分解:
LU分解定理:如果n阶方阵A的各阶顺序主子式≠0(K=1、2、3,…,n),即A的各阶顺序主子式矩阵
都可逆,则存在唯一的单位下三角矩阵L与唯一的非奇异上三角矩阵U,使得A=LU
上面这个LU分解定理就是判断一个矩阵是否能LU分解的判断条件
下面用一个实例说明如何对一个矩阵进行LU分解:
一点讲解:也许你会有疑问,为什么?
其实如果你线性代数学的扎实是很容易理解的,因为并起来然后进行行变换,右边这个单位矩阵I实际就相当于记录了A是经过怎样的行变换变成U的,也就是说
那么问题又来了,如果一个矩阵A不满足所有顺序主子式都不等于零,那么它就一定不能LU分解了吗?
一个矩阵A如下
显而易见,这个矩阵A的二阶顺序主子式为0,所以A不能进行LU分解,那么遇见这种情况我们是不是可以交换矩阵A的第二行和第三行,然后再验算一下,是不是就发现A的所有顺序主子式都不为零,可以进行LU分解了!
这就是带行变换矩阵P的LU分解,定义如下
带P的LU分解说白了就是将可逆方阵A重新排列,使其满足LU分解的条件,进行LU分解。
同时我们对带P的LU分解提出一个定理 (因为可以通过矩阵P重新排列行,所以LU分解的条件放宽成了矩阵A可逆)
简单来说只要矩阵A可逆,那么就存在带P的LU分解。那么我们现在对A进行带P的LU分解吧:
如果细心的小朋友估计会对这个带P的LU分解提出疑问,那就是为啥要交换第二行和第三行,交换第一行和第三行不也可以嘛!确实可以,而且基于这个问题我们还提出了一个方法,那就是列选主元法!
什么是列选主元法?
列选主元法:在每一步消元前,在主元所在的一列的对角线以及对角线下方的元素选取绝对值最大的元素作为主元素(就是把第一列绝对值最大的那一行放在第一行)。利用置换矩阵处理行变换。列选主元法可保证消去时的乘子都不超过1,可以抑制数据误差的传播。
所以对于上面这个带P的LU分解如果考虑列选主元法我们应该交换第一行和第三行,而不是交换第二行和第三行!
当然LU分解还有一些推广形式,比如说LDU分解
LDU分解就是通过对角矩阵D将U进一步简化为单位上三角矩阵。这里就不展开了,很简单。
矩阵的LU分解有何用?
LU 分解的意义在于,将矩阵的分解与方程的求解分离。
在解线性方程组的时候Ax=b 与求解LUx=b(L和U都是三角矩阵很容易求解)
两者求解的时间复杂度是不一样的
前者的时间复杂度是0的3次,后者的时间复杂度是0的2次,不是一个数量级的