LU分解
LU分解是矩阵分解的一种,将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,有时需要再乘上一个置换矩阵。
LU分解可以被视为高斯消元法的矩阵形式。在数值计算上,LU分解经常被用来解线性方程组、且在求逆矩阵和计算行列式中都是一个关键的步骤。
一、定义
对于方阵 ,
的LU分解是将它分解成一个下三角矩阵 L 与上三角矩阵 U 的乘积,也就是
。
举例来说一个的矩阵
,其 LU 分解会写成下面的形式:
LDU 分解
方阵 A 的LDU分解是是将它分解成一个单位下三角矩阵 L、对角矩阵 D 与单位上三角矩阵 U 的乘积,即
其中单位上、下三角矩阵是指对角线上全是 1 的上、下三角矩阵。事实上,LDU 分解可以推广到 A 是一般的矩阵,而非方阵。
存在性和唯一性
- 一个可逆矩阵可以进行LU分解当且仅当它的所有子式都非零。
- 如果要求其中的L矩阵(或U矩阵)为单位三角矩阵,那么分解是唯一的。
- 即使矩阵不可逆,LU仍然可能存在。实际上,如果一个秩为k的矩阵的前k个顺序主子式不为零,那么它就可以进行LU分解,但反之则不然。
二、算法
LU分解在本质上是高斯消元法的一种表达形式。实质上是将A通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵。这正是所谓的杜尔里特算法(Doolittle algorithm),从下至上地对矩阵A做初等行变换,将对角线左下方的元素变成零,然后再证明这些行变换的效果等同于左乘一系列单位下三角矩阵,这一系列单位下三角矩阵的乘积的逆就是L矩阵,它也是一个单位下三角矩阵。
杜尔里特算法
对给定的N × N矩阵有
然后定义对于 的情况如下:
在第n步,消去矩阵的第n列主对角线下的元素:将
的第n行乘以
之后加到第
行上去。其中
。这相当于在
的左边乘上一个单位下三角矩阵:
于是,设经过N-1轮操作后,所有在主对角线下的系数都为0了,于是我们得到了一个上三角矩阵A(N-1),这时就有:
这时,矩阵 就是U,
。 下三角矩阵
的逆依然是下三角矩阵,而且下三角矩阵的乘积仍是下三角矩阵,所以
是下三角矩阵。 于是我们得到分解:
。
显然,要是算法成立,在每步操作时必须有。如果这一条件不成立,就要将第n行和另一行交换,由此就会出现一个置换矩阵P。这就是为什么一般来说LU分解里会带有一个置换矩阵的原因。
例子:
将一个简单的3×3矩阵A进行LU分解:
先将矩阵第一列元素中以下的所有元素变为0,即
再将矩阵第二列元素中以下的所有元素变为0,即
















