基于Matlab的n阶方阵的LDU分解实现1
引言矩阵的LDU分解是“矩阵理论与方法”课程中非常重要的一部分
LDU分解在实际工程应用中也非常广泛
LDU分解可以将一个矩阵分解为一个下三角矩阵和一个对角矩阵和一个上三角矩阵的乘积
LDU分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式
将系数矩阵A转变成等价两个矩阵L和U和对角矩阵的乘积,其中L和U分别是下三角和上三角矩阵,D为对角矩阵
当A的所有顺序主子式都不为0时,矩阵A可以分解为A=LDU
即:Matlab是很好的处理矩阵的工具
它的功能非常强大,包括创建矩阵,对矩阵求逆,转置等操作非常简单,使其成为图像处理,信号分析等领域常用的工具
Matlab官方已经包括了对非奇异矩阵的LU分解函数[L,U]=lu(A),为了加深对矩阵分解的理解,本文不采用Matlab官方的LU分解函数对矩阵A进行LDU分解,而是根据理论推导和编程实现LDU分解
输入合法检验LU分解需要被分解矩阵A满足如下条件:1)矩阵A为方阵2)A的顺序主子式故LU分解需先检验A为n阶方阵,然后检验A的n-1个顺序主子式全不为0,才可进行LU分解
而检验主子式可以在n-1次循环LU分解中进行,故先检验矩阵是否为方阵
n-1次循环LDU分解LDU分解本质上是高斯消元法
实质上是将A通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵
从下至上地对矩阵A做初等行变换,将对角线左下方的元素变成零,然后再证明这些行变换的效果等同于左乘一系列单位下三角矩阵,这一系列单位下三角矩阵的乘积的逆就是L矩阵,它也是一个单位下三角矩阵
LDU分解主要分为两步:1根据高斯消元法对消元,消元矩阵为;2计算以产生下一步迭代的
根据构造高斯消元,使第i+1列从第i+2行至n行都为0
构造消元矩阵
首先判断是否为0