矩阵的 LU 分解
睡不醒的鲤鱼 2021-06-28 数学基础 线性代数
本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的 L 矩阵,使得矩阵 A 可以转变为上三角阵 U,即完成 LU 分解得到 A=LU。
首先继续了解一些矩阵乘法和逆矩阵的相关内容。
一、矩阵性质补充
1.1 矩阵乘积的逆矩阵
由于 ABB−1A−1=A(BB−1)A−1=I,比较等式两端可得 (AB)−1=B−1A−1。
1.2 矩阵乘积的转置
矩阵 A 的转置矩阵记为 AT,对矩阵进行转置就是将 A 矩阵的行变为 AT 的列,而完成后 A 的列也就成为了 AT 的行,看起来矩阵如同沿着对角线进行了翻转。
A=[201043],则 AT=⎣⎢⎡214003⎦⎥⎤
其数学表达式为 (AT)ij=Aji,即 AT 的第 i 行第 j 列的元素为原矩阵 A 中第 j 行第 i 列的元素。
由定义可证明,(AB)T=BTAT。
1.3 转置矩阵的逆矩阵
AA−1=I 两边取转置,并应用积的转置公式,得到 (A−1)T(AT)=I,根据逆矩阵定义得到 (AT)−1=(A−1)T。
二、矩阵的 LU 分解
我们已经看到了如何应用消元法将矩阵 A 转变为上三角阵 U,这就引出了矩阵的 LU 分解,它是理解矩阵 A 性质的重要方法。
在没有行交换的情况下,矩阵 A 通过左乘一系列消元矩阵 Eij 可以转化为 U。在二阶矩阵中,进行一次消元操作即可达到这一效果。
[1−401][2817]=[2013]E21AU 在等式两侧左乘 E21−1,得到 E21−1E21A=E21−1U 即 A=E21−1U,就得到了矩阵 A 的 LU 分解结果。
[2817]=[1401][2013]ALU 其中 U 为上三角阵(Upper triangular matrix),主元依次排列于它的对角线上,E21−1 即 L 为下三角阵(Lower triangular matrix)。有时我们也通过分解得到对角阵 D(diagonal matrix),例如
[2817]=[1401][2003][10211]ALDU 对于三阶矩阵不需要换行进行消元的情况则有:
E32(E31(E21A))=U,左乘逆矩阵可得 A=E21−1E31−1E32−1U=LU。
设定一组消元矩阵,其中 E31 为单位阵 I,其它两个消元矩阵如下:
⎣⎢⎡10001−5001⎦⎥⎤⎣⎢⎡1−20010001⎦⎥⎤=⎣⎢⎡1−21001−5001⎦⎥⎤E32E21E 可以看到在消元矩阵 E 的左下角出现了数 10。
而在右侧操作则不会有这种情况发生,运算顺序会发生变化,L=E−1=E21−1E32−1。
⎣⎢⎡120010001⎦⎥⎤⎣⎢⎡100015001⎦⎥⎤=⎣⎢⎡120015001⎦⎥⎤E21−1E32−1L 如果没有行交换操作,则消元矩阵的因子可以直接写入矩阵 L。没有多余的交叉项出现是 LU 分解要优于 EA=U 这种形式的原因之一。
三、消元法所需运算量
在一些应用中我们需要处理超大型矩阵,即使用计算机来处理这一问题,也需要评估所需的计算量。
如果我们把 “先乘后减” 大致记为一次运算,那么对于一个 n×n 矩阵,对于一行进行消元要进行 n 次运算,由于有 n 行所以进行了 n2 次运算,结果得到了第一列除第一主元外都消成 0 的矩阵。随后开始对除第一行第一列之外的剩余部分进行消元,这相当于一个 (n−1)×(n−1) 的矩阵,那么就要进行 (n−1)2 次运算,以此类推。
最后需要的运算次数为 12+22+⋯+n2,利用积分公式可以估算其数值。
12+22+⋯+n2=i=1∑ni2≈∫0nx2dx=31n3 四、行交换
如果主元的位置出现了 0,就需要进行 “行交换”。我们可以通过左乘一个置换矩阵(Permutation Matrix)实现 “行交换” 的操作,例如:
P21=⎣⎢⎡010100001⎦⎥⎤ 可以实现 3×3 矩阵的第一行与第二行的交换。所有的 3×3 的置换矩阵包括:
⎣⎢⎡100010001⎦⎥⎤⎣⎢⎡100001010⎦⎥⎤⎣⎢⎡010100001⎦⎥⎤⎣⎢⎡001100010⎦⎥⎤⎣⎢⎡010001100⎦⎥⎤⎣⎢⎡001010100⎦⎥⎤ 对于 n×n 矩阵存在着 n! 个置换矩阵。
对于某阶的置换矩阵集合而言,置换矩阵的两两乘积仍在这个集合中,置换矩阵的逆矩阵也在此集合中。
置换矩阵的逆矩阵即为它的转置 P−1=PT,证明如下:
P 的第 i 行和 P−1 的第 i 列相乘会得到 1,与其他列相乘都得到 0,所以 P−1 的第 i 列只能是 P 的第 i 行行向量的转置(让分量 1 出现在向量里的相同位置),其他各列以此类推,则 P 的每一个行向量转置就得到 P−1 的列向量,这也就是矩阵转置 PT 的定义。因此可得 P−1=PT。
五、参考资料