理论参考:
LU分解、LDLT分解和Cholesky分解 https://blog.csdn.net/zhouliyang1990/article/details/21952485
Doolittle分解法(LU分解)详细分析以及matlab的实现 https://blog.csdn.net/lol_IP/article/details/78491457
在线性代数中,LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。
LU分解在本质上是高斯消元法的一种表达形式。实质上是将A通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵。这正是所谓的杜尔里特算法(Doolittle algorithm):从下至上地对矩阵A做初等行变换,将对角线左下方的元素变成零,然后再证明这些行变换的效果等同于左乘一系列单位下三角矩阵,这一系列单位下三角矩阵的乘积的逆就是L矩阵,它也是一个单位下三角矩阵。这类算法的复杂度一般在(三分之二的n三次方) 左右。
伪代码:
算法 LU Decomposition
//输入矩阵A[1…n,1…n],并且A的所有顺序主子式都不为0
//输出下三角矩阵L和上三角矩阵U
L←n阶zero矩阵 //初始化一个n阶zero矩阵
U←n阶zero矩阵
for i ← 1 to n do
L[i][i] ← 1 //L的主对角线元素全为1
if i==0 do //分别利用A的第一行元素第一列元素,确定L的第一列元素和U的第一行元素
U[0][0] ← A[0][0]
for j ← 1 to n do
U[0][j] ←A[0][j]
L[j][0] ←A[j][0]/U[0][0]
else
for j ← i to n do //计算矩阵U
for k ← 1 to i-1 do
temp ←