您的位置:首页 > 其它

MIT18.06线性代数课程笔记4a:矩阵的LU分解

2017-10-13 16:12 941 查看

课程简介

18.06是Gilbert Strang教授在MIT开的线性代数公开课,课程视频以及相关资料请见https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/index.htm

课程笔记

Strang先说了两个逆元的性质:(AB)−1=B−1A−1以及(AT)−1=(A−1)T。证明都很简单,直接验证A−1A=I即可。

然后对高斯消元法做了矩阵化理解,从而引入A=LU分解,其中U是上三角矩阵。

1. 高斯消元法的矩阵化理解

MIT18.06线性代数课程笔记3b:矩阵的逆元中所述,高斯消元法用于求解线性方程组Ax=b,通过把增广矩阵A¯=[A,b]进行行变换使得A的部分变为上三角矩阵U,然后做反向代换即可对方程进行求解。其中行变换只有两种方法:1. 交换行i和行j的位置,变换矩阵Pij 2. 从第i行减去第j行的k倍,目的是使得ij位置上为0,变换矩阵为Eij。(其中P代表permutation,E代表elimination)Pij很简单,就是交换单位阵的第i行和第j行,即

Pnm=⎧⎩⎨⎪⎪1 iff. n=m and n≠i and n≠j1 iff. n=i and m=j1 iff. n=j and m=i0 otherwise

Eij也很简单,即[Eij]ij=−k,[Eij]nn=1 for all n=1,2,⋯

对矩阵做行变换等价于左乘变换矩阵。

综上高斯消元的结果是EA=U,其中E为Eij和Pij的乘积。

2. 对E的分析

在分析之前,先对E做一些限制:E中不包括行交换操作,即E为Eij的乘积。

同时,因为E是从上向下的操作,所以Eij的顺序是固定的,例如对于A3×3,有E=E32E31E21。

因为Eij是为了使得A′ij变为0,而变换的目标是使得A变为上三角矩阵U,故必然有i>j,所以Eij必然是下三角矩阵,而下三角矩阵相乘依旧是下三角矩阵,故E也是下三角矩阵。但是E的一个不好性能是E32E31E21中E32的操作和E21是耦合在一起的,即E32是第3行减去第2行的倍数,而第二行的结果受E21控制。

回忆最初的目的:对A做分解使得A=LU,而我们已知EA=U,故有L=E−1。

若直接对E求逆,使用标准的求逆算法(Gauss-Jordan法),需要额外的O(N3)时间。

3. 求解A=LU

这里就要用到前面所述的矩阵逆元的性质:(AB)−1=B−1A−1. 例如上诉A3×3的例子,我们有E−1=E−121E−131E−132。而对消除矩阵求逆的操作非常简单,直接对[Eij]ij取反,其他位置不变。进而求取E−1等价于对I做一系列行变换。

进一步,记得我们对E做的限制:不包括行交换操作。于是将对E−1的求导转换为一系列消除矩阵逆元的乘积还有一个好处:当我们依次(从右到左)执行消除矩阵逆元乘法的时候发现,我们是从下向上进行操作,每个操作之间都不耦合,E−1=E−121+E−131+E−132−2I。

具体地,计算E−1的操作等价于:

L=I

for i=n⋯1

​ for j=i−1⋯1

​ L=E−1ijL ,即L的第i行加上第j行

return L

分析循环体内的操作,L的第i行加上第j行[Eij]ij倍,而j<i,所以第j行没有改变,仍然是I的第j行,从而L=E−1ij+L−I。

综上,求解L的过程转换为对[Eij]ij取反相加的过程,每次的复杂度是O(1),而最多有O(N2)次消除操作,故最终求解L的复杂度为O(N2)。

这里还可以分析一下高斯消元的复杂度,因为衡量单元是矩阵维度N,所以考虑缩减矩阵的操作数,最后再整合。缩减矩阵维度的标准是第1列只有第一行为1其他均为0,从而需要执行N−1次消元操作,而每次操作需要O(N)的乘法和减法,故有T(N)=T(N−1)+O(N2)。将公式展开可得T(N)=∑Ni=1i2≈N3/3=O(N3)。所以高斯消元的整体复杂度是O(N3),进而A=LU分解也是O(N3)。对于上诉级数求和,Strang说那个1/3的系数大致上是从对N3求导得到3N2中的3得来,然后类比了级数求和和积分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息