矩阵分析之 实矩阵分解(2)LU分解

  • 前言
  • LU分解(Doolittle杜立特解法)
    • 分解条件
    • 分解方法
    • 分解的唯一性
    • 复杂度
  • PLU分解

前言

之前提到了特征分解和奇异值分解两种矩阵分解的方法,其中特征分解要求n阶方阵且具有n个线性无关的特征向量;SVD分解对矩阵没有要求,但是分解的速度很慢。为了提升分解的效率,可以使用LU分解法。

LU分解(Doolittle杜立特解法)

分解条件

对于可逆方阵AAA,可以将其分解为下三角矩阵LLL和上三角矩阵UUU的乘积
A=LUAx=[l11l21l22l31l32l33]A=LU \\ \quad \\ Ax=\begin{bmatrix} l_{11} & \\ l_{21} & l_{22} \\ l_{31} & l_{32} & l_{33} \\ \end{bmatrix} A=LUAx=⎣⎡​l11​l21​l31​​l22​l32​​l33​​⎦⎤​
上下三角矩阵对于方程组求解有良好的求解性质,例如:
Ax=[l11l21l22l31l32l33]x=[b1b2b3]x1=b1/l11x2=(b2−l21x1)/l22x3=(b3−l31x1−l32x2)/l33Ax=\begin{bmatrix} l_{11} & \\ l_{21} & l_{22} \\ l_{31} & l_{32} & l_{33} \\ \end{bmatrix}x = \begin{bmatrix} b_1 \\ b_2 \\ b_3 \\ \end{bmatrix} \\ \quad \\ x_1=b_1/l_{11} \\ x_2=(b_2-l_{21}x_1)/l_{22} \\ x_3=(b3-l_{31}x_1-l_{32}x_2)/l_{33} Ax=⎣⎡​l11​l21​l31​​l22​l32​​l33​​⎦⎤​x=⎣⎡​b1​b2​b3​​⎦⎤​x1​=b1​/l11​x2​=(b2​−l21​x1​)/l22​x3​=(b3−l31​x1​−l32​x2​)/l33​
三角矩阵求解的时间复杂度为O(n2)O(n^2)O(n2)

分解方法

由于矩阵AAA可逆,可通过高斯消元法将AAA化为上三角矩阵,例如:
A=[112211121][100010−101]A=[11221101−1][100−210001][100010−101]A=[1120−1−301−1][100010011][100−210001][100010−101]A=[1120−1−300−4]A=\begin{bmatrix} 1 & 1 & 2\\ 2 & 1 & 1 \\ 1 & 2 & 1 \\ \end{bmatrix} \\ \quad \\ \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0 \\ -1 & 0 & 1 \\ \end{bmatrix}A =\begin{bmatrix} 1 & 1 & 2\\ 2 & 1 & 1 \\ 0 & 1 & -1 \\ \end{bmatrix} \\ \quad \\ \begin{bmatrix} 1 & 0 & 0\\ -2 & 1 & 0 \\ 0& 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0 \\ -1 & 0 & 1 \\ \end{bmatrix}A=\begin{bmatrix} 1 & 1 & 2\\ 0 & -1 & -3 \\ 0 & 1 & -1 \\ \end{bmatrix} \\ \quad \\ \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0 \\ 0& 1 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ -2 & 1 & 0 \\ 0& 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0 \\ -1 & 0 & 1 \\ \end{bmatrix}A= \begin{bmatrix} 1 & 1 & 2\\ 0 & -1 & -3 \\ 0 & 0 & -4 \\ \end{bmatrix} A=⎣⎡​121​112​211​⎦⎤​⎣⎡​10−1​010​001​⎦⎤​A=⎣⎡​120​111​21−1​⎦⎤​⎣⎡​1−20​010​001​⎦⎤​⎣⎡​10−1​010​001​⎦⎤​A=⎣⎡​100​1−11​2−3−1​⎦⎤​⎣⎡​100​011​001​⎦⎤​⎣⎡​1−20​010​001​⎦⎤​⎣⎡​10−1​010​001​⎦⎤​A=⎣⎡​100​1−10​2−3−4​⎦⎤​
可以看出,AAA经过几次行变换后,就化为了上三角矩阵,可记为:
L3L2L1A=UA=L1−1L2−1L3−1UL_3L_2L_1A=U \\ \quad \\ A=L_1^{-1}L_2^{-1}L_3^{-1}U L3​L2​L1​A=UA=L1−1​L2−1​L3−1​U
于是,AAA就可以写成行变换矩阵乘积的逆与上三角矩阵的乘积了。行变换矩阵的逆还是行变换矩阵,因此行变换矩阵乘积的逆仍然是行变换矩阵,并且是下三角矩阵。

因此,LU分解实际上就是通过初等行变换将矩阵变为上三角矩阵,并将行变换的乘积取逆的过程。

分解的唯一性

如果矩阵AAA可以进行LU分解,则可能分解出多种L,UL,UL,U矩阵组合;但是如果LLL是单位下三角矩阵,或UUU是单位上三角矩阵,则LU分解的结果是唯一的。

唯一性的证明可以这么考虑:在高斯消元时,依次将每列在对角线上的元素考虑为主元,那么行变换就是固定的,则矩阵LLL就是唯一的。

此外,L,UL,UL,U矩阵的对角线元素必然不为零,证明方法也很简单:AAA可逆,∣A∣=∣L∣∣U∣≠0|A|=|L||U|\ne 0∣A∣=∣L∣∣U∣​=0,则∣L∣≠0,∣U∣≠0|L|\ne0,|U|\ne0∣L∣​=0,∣U∣​=0,则对角线必没有零元素。

复杂度

可以看出,将第一列化为主元列时,需要对每行(n)的每个元素(n)进行操作,n列都要化为主元列,则时间复杂度为O(n3)O(n^3)O(n3)

PLU分解

上面的示例中,矩阵AAA通过行变换进行分解,采用的是高斯消元的思想。然而,如果有这么一个可逆矩阵:
A=[011−201001]A=\begin{bmatrix} 0 & 1 & 1\\ -2 & 0 & 1 \\ 0& 0 & 1 \\ \end{bmatrix} A=⎣⎡​0−20​100​111​⎦⎤​
按照上面所说,AAA可逆则可LU分解,然而在高斯消元时,默认第一列的主元值为0,这样就没法通过行增减变换消元了。这时候,需要使用行置换的方法,将第一列的主元换为-2。这就是PLU分解:
A=PLUA=PLU A=PLU
其中,P是一个行置换矩阵(也是初等行变换),L是下三角矩阵,U是上三角矩阵。

具体的分解方法与LU分解非常类似,在此就不重复记录了。

PLU分解的稳定性明显优于LU分解,因此在实际中使用LU方法时,往往默认采用PLU矩阵分解

矩阵分析之 实矩阵分解(2)LU,PLU分解相关推荐

  1. 矩阵分析之 实矩阵分解(5)矩阵分解法总结

    矩阵分析之 实矩阵分解(5)总结 前言 特征分解(谱分解) SVD分解 LU和PLU分解 Cholesky分解(LLT,LDLT分解) 满秩分解 QR分解 使用场景推荐 前言 之前的四篇内容分别介绍了 ...

  2. 李保滨矩阵分析大作业2022:LU、QR、URV分解、Householder、Givens变换的程序实现

    介绍 本文为2022年秋季学期国科大李保滨老师的矩阵分析与应用课程大作业实现,编程语言使用python 具体作业要求: 完成课堂上讲的关于矩阵分解的LU.QR(Gram-Schmidt).正交规约(H ...

  3. 用MATLAB实现plu分解,编制计算给定矩阵 A 的 LU 分解和 PLU 分解的通用程序

    用VB编写一个程序,计算出给定的10*10矩阵(存放在二维数组A中)每行元素的最大值和每列元素的最小值 ModuleModule1SubMain()DimA(,)AsInteger={{1,2,3,4 ...

  4. 矩阵分析之 实矩阵分解(1)特征分解与奇异值分解SVD

    矩阵分析之 实矩阵分解(1)特征分解与奇异值分解 前言 特征分解(又称谱分解.对角化) 奇异值分解SVD SVD的进一步理解 前言 本篇开始学习记录矩阵分解内容.需要说明的是,目前我所触及的矩阵基本上 ...

  5. Python解决矩阵的PLU分解及求矩阵的逆

    Python解决矩阵的PLU分解及求矩阵的逆 关于PLU的分解基础知识就不叙述了,可以自己去看矩阵分析的书,大体上和高斯消去法差不多. PLU分解被经常用在Ax=bAx=bAx=b的求解上 在这里xx ...

  6. 矩阵的LU分解,LU分解的推广,LU分解有什么意义,为什么要用LU分解。

    一点点数学!开干! 参考书籍:<矩阵分析与计算>李继根 张新发编著 矩阵的LU分解: LU分解定理:如果n阶方阵A的各阶顺序主子式≠0(K=1.2.3,-,n),即A的各阶顺序主子式矩阵都 ...

  7. 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...

    线性代数导论 - #4 矩阵分解之LU分解的意义.步骤和成立条件 目前我们用于解线性方程组的方法依然是Gauss消元法.在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作 ...

  8. c# lu分解的代码_LU分解(1)

    1/6 LU 分解 LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU - LU deco ...

  9. 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

    学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...

最新文章

  1. 深度学习前人精度很高了,该怎么创新?
  2. C语言编写DFT计算程序, 并绘制幅度谱
  3. 光子 量子 DNA计算机的发展情况,科研萌新关于非冯诺依曼结构计算机的一些知识mewo~~...
  4. AcWing - 171 送礼物(双向dfs)
  5. Hills And Valleys CodeForces - 1467B 思维
  6. python求和_Python程序查找特殊求和系列的解决方案
  7. python调用node_在node中执行python脚本
  8. 如何识别新加的计算机硬盘,图文解说win10系统无法识别新加的机械硬盘的具体技巧...
  9. Deformable ConvNets自己的理解
  10. 3dmax 导出 fbx文件, 模型 到Unity中 贴图丢失
  11. ISIS协议基础知识
  12. Android ID谷歌认证,GSF ID KEY(谷歌服务框架ID)作为Android设备唯一标识符
  13. ajax不执行回调函数的原因
  14. XSS 扫描器成长记
  15. java ffmpeg 视频水印_java 实现视频转换通用工具类:视频加水印-Ffmpeg(五-1)
  16. iOS 苹果官方Demo合集
  17. windows下安装PHP的swoole拓展
  18. 【架构风格】架构风格演进和领域架构分类
  19. 学习笔记2011.11.8-张飞-硬件开发与设计实战-门控开关设计
  20. ios移动端input以及中文键盘和阴影效果问题

热门文章

  1. css3动画制作转动相册
  2. 学习翻译中英文词典工具
  3. 香港理工大学林婉瑜博士实验室招收全奖博士生/博士后
  4. 拉普拉斯滤波实现图像增强
  5. 搜狗高速浏览器4.2正式版发布
  6. html 实现下拉菜单
  7. 国内黑客团队“盘古”再出手,最新iPhone XS已被成功越狱
  8. JavaScript实用功能代码片段
  9. bjfu oj 1011 将浮点数转换为分数相除的形式
  10. 准确率、召回率和F值的概念和计算