LU 分解的进一步讨论

可分解的条件

回顾 Gauss 消元法的过程,我们从消元过程当中得到了 分解,但是消元过程当中有一个限制条件是 ,这个条件并不是一开始就能从 当中看出来的. 下面给出一个充要条件.

定理:主元非零的充要条件

主元 的充要条件是 阶顺序主子阵都是非奇异的.

证明: 考虑归纳法,当 时结论是显然的,我们假设 都是非奇异的,现在仅需证明 非奇异的等价条件为 .

现在我们考虑 次消元之后的矩阵:

这相当于将其前 阶主子阵计算了 分解当中的 ,记 为第 个 Gauss 变换阵的前 阶主子阵,于是

取行列式,由于 Gauss 变换阵对角线元素均为 ,从而

由于 已经确定非零,所以剩下两者的等价性证明完毕.

从而根据这个定理有

定理:LU 分解的等价条件

矩阵 存在唯一的 LU 分解当且仅当 的所有顺序主子阵均非奇异.

证明: 仅需证明唯一性,假如存在两个 LU 分解:

那么有

左侧是单位下三角和单位下三角的乘积,右侧是两个上三角的乘积,说明两边应该均为单位阵,从而唯一性成立.

计算量

直接计算三角分解时,我们将加减乘除都放在一起考虑,先给出教材上的三角分解:

for k = 1:n-1
	A(k+1:n,k) = A(k+1:n,k)/A(k,k)
	A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k) * A(k,k+1:n)
end

那么我们首先看到第一步是 次除法,然后发生了 次乘法和 次减法,因此总计算次数为

也就是说,计算复杂度是 的,相比较 Laplace 方法而言把阶乘复杂度变为多项式复杂度,是一个切实的飞跃.

但是可以注意到,LU 分解理应得到两个矩阵,为什么这里我们直接对 作了就地操作?事实上,对 作就地操作后,严格下三角部分是 的严格下三角部分,上三角部分则是 的上三角部分. 这样做的原因在于节省内存空间,当问题规模较大时,少存一个矩阵意味着空闲出相当多的内存空间.

特殊矩阵

特殊矩阵:对角占优矩阵

对角占优矩阵存在唯一的 LU 分解.

这个定理可以直接从下面的问题得到:出自数值分析第十四次作业.

练习 5.6

阶按行严格对角占优矩阵,经 Gauss 消去法一步后 变为如下形式: 试证明: 阶按行严格对角占优矩阵.

即证明:

从左到右有

于是结论成立.

LDU 分解

我们考虑 LU 分解进一步细化为如下形式:

这里的 还是 LU 分解中的单位下三角矩阵, 为单位上三角矩阵, 为对角矩阵,可以看出,我们只不过就是把 的对角线元素提出来了而已.

似乎我们可以到这里就结束对 LDU 分解的讨论了,但是一个有意思的问题在于: 当中的元素到底是什么呢?是 的特征值,还是通过 的某些量计算出来的呢?

首先 的对角线元素并不是 的特征值,考虑

我们可以知道 的特征值为 ,但是可以看到 的对角线元素不是特征值.

考虑从 步的 LDU 分解,取每个矩阵的前 行,前 列,设 的第 个顺序主子式:

于是有

取行列式可得

,因此

由 LU 分解求逆矩阵

从 LU 分解出发,考虑

这就让我们发现一个有意思的现象: 是很容易求逆的,而对 ,它也是一个三角阵,可以用类似的方法对其求逆,这就启发我们通过:

进行求逆. 对三角矩阵求逆是简单的(见第一次作业).

当然,还有一种方案是,如果我们回顾高代当中的初等变换求逆方法:

那么设 当中的第 个列向量为 ,对应单位列向量为 ,则

解共 个线性方程组即可.

列主元 Gauss 消元法

全主元 Gauss 消元法

现在来看 Gauss 消元法没能考虑到的一个方面,假定我们在消元过程中每个主元都非零,但是出现:

这其中的 绝对值较小,换言之,此时作为除数时,它将使得算法极为不稳定,当除数较小时,微小的扰动都将造成巨大的误差.

除此之外,LU 分解的条件也过于严格,我们研究线性方程组是针对全体可逆矩阵的,但是并不一定所有的可逆阵都有这么好的性质.

为解决上述问题,全主元 Gauss 消元法应运而生,它相较于 Gauss 消元法只有一个地方不同,就是在每次消元时,都查找右下角子矩阵当中绝对值最大的元替换到主元位置上.

有了置换过程,我们就能得到如下定理:

定理:推广 LU 分解

,则存在排列矩阵 ,以及单位下三角阵 ,上三角阵 使得

我们只需理解全主元消元法即可知这个定理是显然的,其中

  • 的所有元素均满足 ;这个性质是简单的,因为我们选的主元是较大的,而且其充当除数.
  • 的非零对角元个数正好等于 .

相比于 Gauss 消元法,算法也只多出:

  • 置换矩阵的记录;
  • 主元的查找和置换.

但是,选主元在这里也消耗了大量时间,注意到每个情况下,每次查找主元时都要将右下角的矩阵搜索个遍,这就会多出:

次比较操作.

列主元 Gauss 消元法

列主元是为了解决全主元代价过大的问题的,它的改进就是改为只搜索当列的绝对值最大元,这就使得代价变为:

降低了整整一个数量级.