线性代数——LU(LR)分解

article/2025/8/23 19:56:10

文章目录

  • 定义
    • 为什么要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。因为
d e t A = d e t ( L U ) = ( d e t L ) ( d e t U ) det A = det (LU) = (det L) (det U) detA=det(LU)=(detL)(detU)
所以只需要求出det L和det U即可。而下三角矩阵和上三角矩阵的行列式就是对角元素的乘积。这里det L恰好等于1,于是
d e t A = U 的 对 角 元 素 的 乘 积 det A = U的对角元素的乘积 detA=U

利用LU分解求解线性方程组

这里以有解的情况为例,考虑n阶可逆方阵A和n维向量y,需要求解满足Ax=y的向量x。

将A进行LU分解,解方程的问题就被分为了两个步骤,LUx=y。第一步就是求出满足Lz=y的z;
第二步就是求出满足Ux=z的x。
用数学表达式表述就是
A x = L U x = L ( U x ) = L z = y A \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 ) ( z 1 z 2 z 3 z 4 ) = ( 子  丑  寅  卯  ) \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  1z1z2z3z4=        
则求解顺序一目了然,先求得 z 1 z_1 z1,再利用已知的 z 1 z_1 z1求得 z 2 z_2 z2,在利用已知的 z 1 z_1 z1 z 2 z_2 z2求得 z 3 z_3 z3,最后通过已知的 z 1 z_1 z1 z 2 z_2 z2 z 3 z_3 z3求出 z 4 z_4 z4
上三角矩阵也一样,例如
( 3 8 1 − 3 7 3 − 1 2 − 2 5 ) ( x 1 x 2 x 3 x 4 ) = ( − 1 3 4 10 ) \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) 3871323125x1x2x3x4=13410
求解顺序就反过来,先求 x 4 x_4 x4,再利用已知的 x 4 x_4 x4 x 3 x_3 x3。。。以此类推即可。这样的顺序比一般解法要快非常多。一般的顺序需要不断对A进行线性变换,逐行变更消元。这里的复杂度具体优化了多少,有下表进行统计
在这里插入图片描述

利用LU分解求逆矩阵

前面讲解了利用LU分解求线性方程组的问题,其实逆矩阵也可以分解为多个求线性方程组的问题。

记n阶方阵A的逆矩阵为X,将 X = ( x 1 , ⋯ , x n ) X=\left(\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{n}\right) X=(x1,,xn)按列分块,则AX=I可以写成
A ( x 1 , ⋯ , x n ) = ( e 1 , ⋯ , e n ) A\left(x_{1}, \cdots, x_{n}\right)=\left(e_{1}, \cdots, e_{n}\right) A(x1,,xn)=(e1,,en)

按分量展开写,就是
A x 1 = e 1 , ⋯ , A x n = e n A \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 = ( 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 ) 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相乘所得的矩阵一定是置换矩阵。


http://chatgpt.dhexx.cn/article/vmujj0fr.shtml

相关文章

LU分解Matlab算法分析

最近矩阵分析老师出了一道题目作为作业,是一道程序题,题目是对A矩阵做LU分解,要求能对A实现PALU的分解,并最终输出L,U,P矩阵。 先来解读下题目,寥寥几句话,里面囊括的信息量却不少&a…

LU分解,LDLT分解,Cholesky分解

LU分解 如果方阵是非奇异的,即的行列式不为0,LU分解总是存在的。 ALU,将系数矩阵A转变成等价的两个矩阵L和U的乘积,其中L和U分别是下三角和上三角矩阵,而且要求L的对角元素都是1,形式如下: 本…

矩阵的直接LU分解法

上篇博文由高斯消去法的矩阵形式推出了矩阵的LU分解:矩阵的三角分解法; 实际上,可以直接处理矩阵,得到矩阵的LU分解,这就是矩阵的直接LU分解;直接通过矩阵的元素得到计算LU元素的递推公式,不需…

LU分解、LDLT分解和Cholesky分解

LU分解 概念:假定我们能把矩阵A写成下列两个矩阵相乘的形式:ALU,其中L为下三角矩阵,U为上三角矩阵。这样我们可以把线性方程组Ax b写成 Ax (LU)x L(Ux) b。令Ux y,则原线性方程组Ax b可首先求解向量y 使Ly b&am…

A的LU分解

前面我们曾经通过高斯消元将矩阵A最终转化成了上三角阵U,那么今天我们就继续深入探索A和U之间到底有什么样的联系。在开始之前,先交代一些需用到的基础理论。假设A是可逆阵,则有AA-1I,两边同时转置,根据乘积的转置等于…

LU分解(matlab实现)

LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。 主要的算法思路是从下至上地对矩阵A做初等行变换,将对角线左下方的元素变成零,这些行变换的效果等同于左乘一系列单位下三角矩阵&…

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

一点点数学!开干! 参考书籍:《矩阵分析与计算》李继根 张新发编著 矩阵的LU分解: LU分解定理:如果n阶方阵A的各阶顺序主子式≠0(K1、2、3,…,n),即A的各阶…

LU分解(图解)

三角分解(LU分解) 在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线…

矩阵系列:LU分解

1矩阵LU分解模块 1.1 LU分解数学表达 首先要明确的是,矩阵的LU分解是有局限性的,即LU分解只针对非奇异矩阵。那么什么是非奇异矩阵呢?即各阶顺序主子式不为零。 (1)高斯消去法 LU分解的思想来源于高斯消去法&#xff…

LU分解(图解与应用举例)

三角分解(LU分解) 在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线…

矩阵分解入门——LU分解

文章目录 LU分解LU分解简介LU分解与高斯分解的对比LU的主要用途使用LU矩阵的注意事项初等矩阵与消元LU分解与配方法实际效果对比(matlab)使用LU分解中的一些特例 A A A矩阵中主元(位于第一行第一列的元素)为0LU分解后 U U U为非满秩 LU分解的推广1——LD…

C语言,折半查找法

折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。 问题分析: 二分查找法(也叫折半查找)其本质是分治算法的一…

利用数组进行数据查找---折半查找法(二分法)

二分法查找: 1.适用情况:在一批有序数据中查找某数。 2.基本思想:选定这批数据中居中间位置的一个数与查找数比较,看是否为所找之数,若不是,利用数据的有序性,可以决定所找的数是在选定数之前还…

查找算法之折半查找

查找算法之折半查找 折半查找算法的思路 首先查找的关键字在有序的查找表内, 这是折半查找的前提.(我们假设查找表内元素升序排列)确定查找表中的范围,一般用两个下标来表示范围: left 0,right length -1利用给定的关键字和查找表中的中间位置(mid (leftright)/2)的元素比较…

数据结构-折半查找法的ASL计算

(1)通常用查找过程中对关键字的比较次数 作为衡量算法效率优劣的标准。 (2)平均查找长度—ASL,相当于时间复杂度分析时的f(n)函数。 (3)考研的一个考点。 (4)ASL求解的关…

用折半查找法(二分查找),实现查询数组中的元素

折半查找法 折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查…

算法篇——二分查找法(折半查找法)

二分查找法(折半查找法):查找数组中是否包含指定元素。如果包含指定元素,则返回指定元素的index(从0开始);如果不包含指定元素,则返回-1; 前提:数组中的元素必须是有序的。 原理&…

经典算法之折半查找法

活动地址:21天学习挑战赛 目录 一、 算法 概述 算法过程 二、代码实践 三、复杂度分析 时间复杂度 空间复杂度 四、优缺点分析 优点 缺点 一、 算法 概述 折半查找( Binary Search )也称二分查找,它是一种效率较高的查找方法。但是&#xff…

查找——1、折半查找法

1、折半查找又称为二分查找,是一种效率较高的查找方法。 2、折半查找的前提条件: 查找表中的所有记录是按关键字有序(升序或降序) 。 查找过程中,先确定待查找记录在表中的范围,然后逐步缩小范围(每次将待查记录所在区间缩小一半…

折半查找

一、定义: 折半查找也称二分法查找,是一种在有序数组中查找某一特定元素的搜索算法。这种方法要求待查找的表顺序存储而且必须是有序的。 二、查找过程 首先计算表中间的位置,将表中间位置处的关键字与查找的关键字进行比较,如果相…