基于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分解。
2.程序设计
2.1.输入合法检验
LU分解需要被分解矩阵A满足如下条件:
1)矩阵A为方阵
2)A的顺序主子式
全故LU分解需先检验A为n阶方阵,然后检验A的n-1个顺序主子式D
k 不为0,才可进行LU分解。而检验主子式D
可以在n-1次循环LU分解中
k
进行,故先检验矩阵是否为方阵。
代码如下