矩阵分析之 实矩阵分解(2)LU,PLU分解
矩阵分析之 实矩阵分解(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=⎣⎡l11l21l31l22l32l33⎦⎤
上下三角矩阵对于方程组求解有良好的求解性质,例如:
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=⎣⎡l11l21l31l22l32l33⎦⎤x=⎣⎡b1b2b3⎦⎤x1=b1/l11x2=(b2−l21x1)/l22x3=(b3−l31x1−l32x2)/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=⎣⎡121112211⎦⎤⎣⎡10−1010001⎦⎤A=⎣⎡12011121−1⎦⎤⎣⎡1−20010001⎦⎤⎣⎡10−1010001⎦⎤A=⎣⎡1001−112−3−1⎦⎤⎣⎡100011001⎦⎤⎣⎡1−20010001⎦⎤⎣⎡10−1010001⎦⎤A=⎣⎡1001−102−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 L3L2L1A=UA=L1−1L2−1L3−1U
于是,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−20100111⎦⎤
按照上面所说,AAA可逆则可LU分解,然而在高斯消元时,默认第一列的主元值为0,这样就没法通过行增减变换消元了。这时候,需要使用行置换的方法,将第一列的主元换为-2。这就是PLU分解:
A=PLUA=PLU A=PLU
其中,P是一个行置换矩阵(也是初等行变换),L是下三角矩阵,U是上三角矩阵。
具体的分解方法与LU分解非常类似,在此就不重复记录了。
PLU分解的稳定性明显优于LU分解,因此在实际中使用LU方法时,往往默认采用PLU矩阵分解。
矩阵分析之 实矩阵分解(2)LU,PLU分解相关推荐
- 矩阵分析之 实矩阵分解(5)矩阵分解法总结
矩阵分析之 实矩阵分解(5)总结 前言 特征分解(谱分解) SVD分解 LU和PLU分解 Cholesky分解(LLT,LDLT分解) 满秩分解 QR分解 使用场景推荐 前言 之前的四篇内容分别介绍了 ...
- 李保滨矩阵分析大作业2022:LU、QR、URV分解、Householder、Givens变换的程序实现
介绍 本文为2022年秋季学期国科大李保滨老师的矩阵分析与应用课程大作业实现,编程语言使用python 具体作业要求: 完成课堂上讲的关于矩阵分解的LU.QR(Gram-Schmidt).正交规约(H ...
- 用MATLAB实现plu分解,编制计算给定矩阵 A 的 LU 分解和 PLU 分解的通用程序
用VB编写一个程序,计算出给定的10*10矩阵(存放在二维数组A中)每行元素的最大值和每列元素的最小值 ModuleModule1SubMain()DimA(,)AsInteger={{1,2,3,4 ...
- 矩阵分析之 实矩阵分解(1)特征分解与奇异值分解SVD
矩阵分析之 实矩阵分解(1)特征分解与奇异值分解 前言 特征分解(又称谱分解.对角化) 奇异值分解SVD SVD的进一步理解 前言 本篇开始学习记录矩阵分解内容.需要说明的是,目前我所触及的矩阵基本上 ...
- Python解决矩阵的PLU分解及求矩阵的逆
Python解决矩阵的PLU分解及求矩阵的逆 关于PLU的分解基础知识就不叙述了,可以自己去看矩阵分析的书,大体上和高斯消去法差不多. PLU分解被经常用在Ax=bAx=bAx=b的求解上 在这里xx ...
- 矩阵的LU分解,LU分解的推广,LU分解有什么意义,为什么要用LU分解。
一点点数学!开干! 参考书籍:<矩阵分析与计算>李继根 张新发编著 矩阵的LU分解: LU分解定理:如果n阶方阵A的各阶顺序主子式≠0(K=1.2.3,-,n),即A的各阶顺序主子式矩阵都 ...
- 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...
线性代数导论 - #4 矩阵分解之LU分解的意义.步骤和成立条件 目前我们用于解线性方程组的方法依然是Gauss消元法.在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作 ...
- c# lu分解的代码_LU分解(1)
1/6 LU 分解 LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU - LU deco ...
- 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解
学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...
最新文章
- 深度学习前人精度很高了,该怎么创新?
- C语言编写DFT计算程序, 并绘制幅度谱
- 光子 量子 DNA计算机的发展情况,科研萌新关于非冯诺依曼结构计算机的一些知识mewo~~...
- AcWing - 171 送礼物(双向dfs)
- Hills And Valleys CodeForces - 1467B 思维
- python求和_Python程序查找特殊求和系列的解决方案
- python调用node_在node中执行python脚本
- 如何识别新加的计算机硬盘,图文解说win10系统无法识别新加的机械硬盘的具体技巧...
- Deformable ConvNets自己的理解
- 3dmax 导出 fbx文件, 模型 到Unity中 贴图丢失
- ISIS协议基础知识
- Android ID谷歌认证,GSF ID KEY(谷歌服务框架ID)作为Android设备唯一标识符
- ajax不执行回调函数的原因
- XSS 扫描器成长记
- java ffmpeg 视频水印_java 实现视频转换通用工具类:视频加水印-Ffmpeg(五-1)
- iOS 苹果官方Demo合集
- windows下安装PHP的swoole拓展
- 【架构风格】架构风格演进和领域架构分类
- 学习笔记2011.11.8-张飞-硬件开发与设计实战-门控开关设计
- ios移动端input以及中文键盘和阴影效果问题