1.5 Factorization into A = LU 阅读笔记
矩阵的LU分解
reference的内容为唯一教程,接下来的内容仅为本人的课后感悟,对他人或无法起到任何指导作用。
Reference
- Course website: Factorization into A = LU | Unit I: Ax = b and the Four Subspaces | Linear Algebra | Mathematics | MIT OpenCourseWare
- Course video: 麻省理工公开课:线性代数-A的LU分解-网易公开课 (163.com)
- Course summary: Factorization into A = LU (mit.edu)
- Extra reading: Section 2.6 in Introduction to Linear Algebra, Fifth Edition by Gilbert Strang.
前面讲了怎么用矩阵表示线性方程组,怎么用消元法解方程组并用矩阵乘法(初等矩阵左乘)表示,怎么用高斯-若尔当变换求方阵的逆,最重要的是让我们从线性组合和线性变换(我偷看了后面的内容)的角度去理解这些东西。
这一讲算是作为消元法的一个支线补充,从矩阵的角度描述消元的过程,个人感觉这部分内容也没啥大用。
Elementary Matrices for Elimination
假设行变换只包括用行与行之间的加减,不包括置换。
可以把矩阵消元的过程表示为:
通过对矩阵\(\mathbf{A}\)左乘一系列初等矩阵(都是下三角(Lower Triangular)的,对角线为1,仅左下角有元素)会得到一个上三角(Upper Triangular)的矩阵,右侧的向量也相应变化。接着使用回代法求解。之前使用增广矩阵的方式化上三角阵。
A=LU
这时我们可以得到:\(\mathbf{E}_{nn-1}\cdots(\mathbf{E}_{n3}\cdots\mathbf{E}_{43})(\mathbf{E}_{n2}\cdots\mathbf{E}_{32})(\mathbf{E}_{n1}\cdots\mathbf{E}_{31}\mathbf{E}_{21})\mathbf{A}=\mathbf{U}\),即\(\mathbf{EA}=\mathbf{U}\)。由初等行变换矩阵的定义很容易发现 \(\mathbf{E}_{ij}\) ,组合 \(\mathbf{E}\) 都是下三角的,而且 \(\mathbf{E}_{ij}\) 的逆是将非对角线元素取相反数(非对角线 \(e_{ij}\) 表示对矩阵 \(\mathbf{A}\) 第 \(i\) 行加第 \(j\) 行乘这个数字,只有再减去相同的数才能变成单位阵。因此求逆的结果也是个行变换,是下三角的,而且是将非对角线元素取相反数)。用 \(\mathbf{L}_{ij}\) 表示\(\mathbf{E}_{ij}^{-1}\),\(l_{ij}=-e_{ij}\) 表示对矩阵 \(\mathbf{A}\) 第 \(i\) 行减第 \(j\) 行乘这个数字,则有:
Why A=LU instead of EA=U?
为什么呢?无论是矩阵 \(\mathbf{L}\) 还是 \(\mathbf{E}\) 都是下三角的,因为行变换的组合是下三角的。但是矩阵 \(\mathbf{E}\) 的非对角线元素没有意义,因为行变换是把上面行的元素作用到下面的行,非对角线元素的值只和这一列上面的行有关,\(\mathbf{E}\) 的组合顺序是从上面行到下面行,非对角线 \(i\) 行 \(j\) 列的元素和 \(e_{ij},e_{(i-1)j},\cdots,e_{1j}\) 都有关,混淆了。
但是 \(\mathbf{L}\) 的组合顺序是从下面行到上面行,非对角线 \(i\) 行 \(j\) 列的元素只和第 \(j\) 行有关,一图解释:
因此 \(\mathbf{L}\) 非对角线 \(i\) 行 \(j\) 列的元素正好等于 \(l_{ij}\),表示对矩阵 \(\mathbf{A}\) 第 \(j\) 行减第 \(i\) 行乘这个数字。( \(\mathbf{E}\) 由于混淆的缘故非对角线 \(i\) 行 \(j\) 列的元素不是 \(e_{ij}\) )
有时为了让矩阵 \(\mathbf{U}\) 对角线全为 1,单独提取出一个对角阵 \(\mathbf{D}\),使\(\mathbf{A}=\mathbf{LDU}\),其实是一样的。
程序中只需要记录矩阵 \(\mathbf{L}\) 就可以把 \(\mathbf{A}\) 化为 \(\mathbf{U}\),\(\mathbf{b}\) 化为 \(\mathbf{c}\),再利用回代法求解,非常方便。
Computational Cost of Elimination and Substitution
消元:
把一次行变换(乘法和加法)当作一次运算,则对矩阵 \(\mathbf{A}_{n\times n}\) 消元运算的次数为:
可以大概看作平方和然后再大概看成从1到n的积分(教材),也可以参考这个网站。
对向量 \(\mathbf{b}_{n\times 1}\) 消元运算的次数为:
回代:
回代的时候最后一个元素除一次对角线,倒数第二行元素需要多一次减法和一次回代的乘法(系数),倒数第三行再多一次减法和一次回代的乘法,反正是类似 \(1+3+5+7+\cdots\) 之类的等差数列求和,结果肯定是 \(n^2\) 级别的。
总的来说复杂度属于 \(O(n^3)\)。