线性代数——LU(LR)分解
文章目录
- 定义
- 为什么要LU分解
- 为什么能做到LU分解
- 利用LU分解求行列式值
- 利用LU分解求解线性方程组
- 利用LU分解求逆矩阵
- 对角线上元素有0的情况
定义
定义:给定矩阵A,将A表示成下三角矩阵L和上三角矩阵U的乘积,称为LU分解。再进一步,希望L的对角元素都是1,这样利于后面的计算。
此外,形如A=LDU的分解称为LDU分解,L是下三角矩阵,D是对角阵,U是上三角矩阵,其中L和U的对角元素都是1。
对于正方矩阵来说,上面的分解结果L和U的大小显而易见,都和原矩阵A的size相同。那么对于非正方矩阵而言呢?
长矩阵B经过LU分解的结果希望是如下的形式:
宽矩阵C经过LU分解的结果希望是如下的形式:
为什么要LU分解
一旦完成了LU分解,利用L和U的性质,再去求行列式的值或者解线性方程组,计算量就大大减少了。
LU分解作为基本工具在各种数值计算问题中被广泛应用。例如求解线性方程组Ax=b时,只需要做一次A=LU的分解,后面面对不同的b就可以反复使用L和U了。
为什么能做到LU分解
可以先设定最终LU分解的两个矩阵中的所有未知数,之后通过原始矩阵的每个元素反解出L和U中的每个元素,这里可以以任意例子做实验。但是需要注意,如果原始矩阵的对角元素有0,那么情况就另当别论,需要对LU的样子稍作改变再进行分解。
利用LU分解求行列式值
对于方阵A,若已经有形如A=LU的LU分解,则立即可以得到行列式值detA。因为
detA=det(LU)=(detL)(detU)det A = det (LU) = (det L) (det U)detA=det(LU)=(detL)(detU)
所以只需要求出det L和det U即可。而下三角矩阵和上三角矩阵的行列式就是对角元素的乘积。这里det L恰好等于1,于是
detA=U的对角元素的乘积det A = U的对角元素的乘积detA=U的对角元素的乘积
利用LU分解求解线性方程组
这里以有解的情况为例,考虑n阶可逆方阵A和n维向量y,需要求解满足Ax=y的向量x。
将A进行LU分解,解方程的问题就被分为了两个步骤,LUx=y。第一步就是求出满足Lz=y的z;
第二步就是求出满足Ux=z的x。
用数学表达式表述就是
Ax=LUx=L(Ux)=Lz=yA \boldsymbol{x}=L U \boldsymbol{x}=L(U \boldsymbol{x})=L \boldsymbol{z}=\boldsymbol{y}Ax=LUx=L(Ux)=Lz=y
这样有什么好处?其实,由于L和U都是具有特殊形式的矩阵,所以求解过程要简单许多。对于第一步:
(1车 1孙 郑 1李 王 卫 1)(z1z2z3z4)=(子 丑 寅 卯 )\left(\begin{array}{cccc} 1 & & & \\ \text { 车 } & 1 & & \\ \text { 孙 } & \text { 郑 } & 1 & \\ \text { 李 } & \text { 王 } & \text{ 卫 } & 1 \end{array}\right)\left(\begin{array}{l} z_{1} \\ z_{2} \\ z_{3} \\ z_{4} \end{array}\right)=\left(\begin{array}{l} \text { 子 } \\ \text { 丑 } \\ \text { 寅 } \\ \text { 卯 } \end{array}\right)⎝⎜⎜⎛1 车 孙 李 1 郑 王 1 卫 1⎠⎟⎟⎞⎝⎜⎜⎛z1z2z3z4⎠⎟⎟⎞=⎝⎜⎜⎛ 子 丑 寅 卯 ⎠⎟⎟⎞
则求解顺序一目了然,先求得z1z_1z1,再利用已知的z1z_1z1求得z2z_2z2,在利用已知的z1z_1z1,z2z_2z2求得z3z_3z3,最后通过已知的z1z_1z1,z2z_2z2,z3z_3z3求出z4z_4z4。
上三角矩阵也一样,例如
(381−373−12−25)(x1x2x3x4)=(−13410)\left(\begin{array}{cccc} 3 & 8 & 1 & -3 \\ & 7 & 3 & -1 \\ & & 2 & -2 \\ & & & 5 \end{array}\right)\left(\begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \end{array}\right)=\left(\begin{array}{c} -1 \\ 3 \\ 4 \\ 10 \end{array}\right)⎝⎜⎜⎛387132−3−1−25⎠⎟⎟⎞⎝⎜⎜⎛x1x2x3x4⎠⎟⎟⎞=⎝⎜⎜⎛−13410⎠⎟⎟⎞
求解顺序就反过来,先求x4x_4x4,再利用已知的x4x_4x4求x3x_3x3。。。以此类推即可。这样的顺序比一般解法要快非常多。一般的顺序需要不断对A进行线性变换,逐行变更消元。这里的复杂度具体优化了多少,有下表进行统计
利用LU分解求逆矩阵
前面讲解了利用LU分解求线性方程组的问题,其实逆矩阵也可以分解为多个求线性方程组的问题。
记n阶方阵A的逆矩阵为X,将X=(x1,⋯,xn)X=\left(\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{n}\right)X=(x1,⋯,xn)按列分块,则AX=I可以写成
A(x1,⋯,xn)=(e1,⋯,en)A\left(x_{1}, \cdots, x_{n}\right)=\left(e_{1}, \cdots, e_{n}\right)A(x1,⋯,xn)=(e1,⋯,en)
按分量展开写,就是
Ax1=e1,⋯,Axn=enA \boldsymbol{x}_{1}=\boldsymbol{e}_{1}, \quad \cdots, \quad A \boldsymbol{x}_{n}=\boldsymbol{e}_{n}Ax1=e1,⋯,Axn=en
这里每一个等式都对应了一个解线性方程的问题,事先对A进行LU分解,就可以快速求解Ax=b的问题了,这里的b还是有许多个的情况,LU分解就实现了一劳永逸式的求解。
对角线上元素有0的情况
如果要解决这个困难,就需要在计算行列式以及求解线性方程组的过程中用到的选主元的方法。遇到0元素,就需要在同一列的下面寻找非0的元素,找到之后与该行整体进行交换。实现交换的操作就是在原矩阵上左乘一个矩阵S,所有S的累乘结果P就叫做置换矩阵,例如
P=(001000100000000100000010010000000001)P=\left(\begin{array}{cccccc} 0 & 0 & 1 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \end{array}\right)P=⎝⎜⎜⎜⎜⎜⎜⎛010000000010100000001000000100000001⎠⎟⎟⎟⎟⎟⎟⎞
矩阵P中的每一行中恰好有一个1,每一列中也恰好有一个1,其他元素都是0,这样的矩阵称为置换矩阵。之所以有这个名字,是因为将置换矩阵乘以任何向量,所得结果都相当于将向量的各个分量进行重新排列。各个S相乘所得的矩阵一定是置换矩阵。
线性代数——LU(LR)分解相关推荐
- Cholesky和LU矩阵分解
1.Cholesky分解 在线性代数中,矩阵分解是将矩阵分解为矩阵的乘积.有许多不同的矩阵分解.其中之一就是Cholesky分解. Cholesky分解是将Hermitian正定矩阵分解为下三角矩阵及 ...
- python --- 实现LU=PA分解(部分主元的高斯消去)/带行交换的LU分解
题设: Pascal矩阵 进行 LU=PA分解 import numpy as np import random from scipy.linalg import lu#Вычисление знач ...
- 『矩阵论笔记』详细介绍矩阵的三角分解(LR分解)+平方根分解(Cholesky分解)
详细介绍矩阵的三角分解(LR分解)+平方根分解(Cholesky分解)! 文章目录 一. 三角分解(LR分解) 1.1. 方阵的两个重要分解 1.2. 上(下)三角阵的性质 1.3. 三角分解的概念 ...
- 线性代数——LU分解
定义 给定矩阵A,将A表示成下三角矩阵L 和上三角矩阵U 的乘积,称为LU分解 矩阵LU (笔算方法) 如矩阵 A= ,进行LU 分解,则 A=LU= = 则 , , (1) 由 得 ...
- Eigen密集矩阵求解 1 - 线性代数及矩阵分解
简介 这里介绍线性系统的解析,如何进行各种分解计算,如LU,QR,SVD,特征值分解等. 简单线性求解 在一个线性系统,常如下表示,其中A,b分别是一个矩阵,需要求x: Ax=bAx \:= \: b ...
- 【特征向量】——从线性代数角度看分解与合成
概念 本文是在读了黎文科老师神奇的矩阵后,做的一些笔记以及对分解和合成的一点思考,如有问题,欢迎交流. 这里附上一些线性代数中的数学概念. 矩阵:描述运动,本质是在一组基描述下的向量(对象)的线性变换 ...
- 运筹系列70:pinv/inv/LU/SVD分解
1. LU分解 LU分解(LU Factorization)可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积.LU分解非常简单,下图可以直观的看出LU分解的求解方法. LU分解主要应用在数 ...
- GSL 系列 6 — 线性代数 4 — LQ 分解
文章目录 0 写在前面 1 LQ 分解相关函数 1.1 LQ 分解 1.2 LQ 解包 1.2 求解线性方程组 1.3 其他 参考 0 写在前面 关于 LQ 分解的背景知识介绍,参见:GSL 系列 6 ...
- 2-2 LU crout 分解
#include <math.h> #include "..\CommonFiles\nrutil.h" #define TINY 1.0e-20;/* Crout算法 ...
最新文章
- jquery 属性操作
- 编程之美-构造数独方法整理
- 高质量c/c++编程(9)
- 牛客练习赛69 解方程
- mysql启动报错:Another MySQL daemon already running with the same unix socket.
- android studio如何编译测试,Android Studio 进行单元测试完整教程
- windows下安装mongodb服务
- 今天终于有自己的博客了!!!
- 【SSDP 协议介绍】
- Qt编写linux上视频流播放器(支持海康大华宇视等各种网络摄像机)
- 苹果html 闪退,苹果打开软件闪退是怎么回事_苹果手机一打开软件就闪退如何解决-win7之家...
- Ardunio开发实例-简单声音感应控制开关
- IDEA中项目编码格式设置
- 证明:如果向量组A可由向量组B线性表示,那么A的秩小于等于B的秩
- 术业有专攻,数据库的 dba
- 宝宝生活点滴(10.1-10.20)
- 验钞机无法辨识HD90打头百元假钞
- 不卸载升级cmake
- AM335X EDMA3
- 项目实现:电商网站日志分析平台(二:采集日志数据)