LU分解
LU、LUP分解
LUP求解线性方程组


LU矩阵分解

LU分解可以将一个矩阵 A\mathbf AA 分解为一个单位下三角矩阵 L\mathbf LL 和一个上三角矩阵 U\mathbf UU 的乘积。单位下三角单位矩阵主对角线上的元素为 1 。有如下关系:
A=LU(1)\mathbf A = \mathbf L \mathbf U \tag1A=LU(1)

该分解可以采用高斯消元法来进行计算。若想将给定矩阵 A\mathbf AA 分解为下三角矩阵 L\mathbf LL 和上三角矩阵 U\mathbf UU ,一个思路就是通过一系列的初等变换将 (1)式 化为上三角矩阵,且保证这些变换的乘积是一个下三角。

在程序实现上,(1)式中的矩阵 依次对应到下方三个矩阵 以及 两个三角矩阵相乘后元素之间的关系:

图1. LU分解过程

核心代码
算法如下:

for (int i = 0; i < N - 1; i++)
{double u = U[i * N + i];for (int j = i + 1; j < N; j++){U[j * N + i] /= u;for (int k = i + 1; k < N; k++){U[j * N + k] -= U[i * N + k] * U[j * N + i];}//Of for k}// Of for j
}

数组 U 初始存储矩阵 A\mathbf AA, 经过计算后存储上三角矩阵 和 除主对角线以外的下三角矩阵 的元素。

在代码的实现上和 图1 的过程有一些区别。代码实现更像是一点一点地把矩阵 A\mathbf AA 给稀释的感觉。

第一行 u11:u14u_{11} : u_{14}u11​:u14​ 可以直接解出。例如在第一轮外循环后,下三角矩阵第一列被解出,上三角第二行被解出。数组 U 中 存储的矩阵元素为:
[u11u12u13u14l21u22u23u24l31l32u22l32u23+u33l32u24+u34l41l42u22l42u23+l43u33l42u24+l43u34+u44]\begin{bmatrix} u_{11} & u_{12} & u_{13} & u_{14}\\ l_{21} & u_{22} & u_{23} & u_{24}\\ l_{31} & l_{32}u_{22} & l_{32}u_{23}+u_{33} &l_{32}u_{24}+u_{34}\\ l_{41} & l_{42}u_{22} &l_{42}u_{23}+l_{43}u_{33} & l_{42}u_{24}+l_{43}u_{34}+u_{44} \end{bmatrix}⎣⎢⎢⎡​u11​l21​l31​l41​​u12​u22​l32​u22​l42​u22​​u13​u23​l32​u23​+u33​l42​u23​+l43​u33​​u14​u24​l32​u24​+u34​l42​u24​+l43​u34​+u44​​⎦⎥⎥⎤​

第二轮外循环后,下三角矩阵第二列被解出,上三角矩阵第三行被解出。数组 U 中 存储的矩阵元素为:
[u11u12u13u14l21u22u23u24l31l32u33u34l41l42l43u33l43u34+u44]\begin{bmatrix} u_{11} & u_{12} & u_{13} & u_{14}\\ l_{21} & u_{22} & u_{23} & u_{24}\\ l_{31} & l_{32} & u_{33} & u_{34}\\ l_{41} & l_{42} &l_{43}u_{33} & l_{43}u_{34}+u_{44} \end{bmatrix}⎣⎢⎢⎡​u11​l21​l31​l41​​u12​u22​l32​l42​​u13​u23​u33​l43​u33​​u14​u24​u34​l43​u34​+u44​​⎦⎥⎥⎤​

第三轮外循环…

直到解出 L,U\mathbf L, \mathbf UL,U 矩阵。

LUP矩阵分解

LUP分解是在LU分解的基础上增加主元的选取。

相对于LU分解,LUP分解增加了置换矩阵 P\mathbf PP , 有如下关系:
PA=LU(2)\mathbf P \mathbf A = \mathbf L \mathbf U \tag{2}PA=LU(2)

算法如下:

图2. LUP算法

如 图2 所示,3~6行增加了对矩阵 L,U,P\mathbf L, \mathbf U, \mathbf PL,U,P 的换行,7~12行算法与LU分解相同。

为什么增加了置换矩阵 P\mathbf PP?其实我也是糊涂的(嘿嘿…

大概有以下几个原因:
1.被分解的矩阵 A\mathbf AA 其实被要求是非奇异矩阵。再有,如果主元直接为0,LU算法的在计算过程中会出现分母为0的情况。
2.如果主元不为 0 但是接近 0 呢?为了避免除数过小引起精度问题,所以会尽量选择大的主元。

经过行变换后的矩阵再经过LU分解就能尽量避免以上问题。

利用LUP分解对矩阵求逆

由(2)式,有:

P−1A−1=L−1U−1\mathbf P^{-1} \mathbf A^{-1} = \mathbf L^{-1} \mathbf U^{-1}P−1A−1=L−1U−1

L,U\mathbf L, \mathbf UL,U 为三角矩阵,P\mathbf PP 为置换矩阵,到这里其实就已经容易求出逆矩阵了。

LUP分解方法,矩阵求逆相关推荐

  1. 从易到难,针对复杂问题的无监督式问题分解方法

    论文标题: Unsupervised Question Decomposition for Question Answering 论文作者: Ethan Perez (FAIR,NYU), Patri ...

  2. 运用经验模态分解方法(EMD)对实测探地雷达数据进行处理

    运用经验模态分解方法(EMD)对实测探地雷达数据进行处理 经验模态分解(EMD)是一种新型自适应信号时频处理方法,特别适用于非线性非平稳信号的分析处理.探地雷达实测数据存在干扰,因此运用经验模态分解( ...

  3. matlab 重叠峰分解 算法,一种基于粒子群算法的光谱重叠峰分解方法与流程

    本发明涉及一种基于粒子群算法的光谱重叠峰分解方法. 背景技术: 由于探测器能量分辨率等原因,峰位接近且峰宽较大的不同谱峰之间常常出现严重重叠干扰的现象,要对光谱作进一步较为准确.全面的成分定量和定性分 ...

  4. 史上最全的整数分解方法(包含经典的分苹果问题)

    [华为OD机试真题 2022&2023]真题目录 @点这里@ [华为OD机试真题]信号发射和接收 &试读& @点这里@ [华为OD机试真题]租车骑绿道 &试读& ...

  5. 小酌重构系列[4]——分解方法

    概述 "分解方法"的思想和前面讲到的"提取方法"."提取方法对象"基本一致. 它是将较大个体的方法不断的拆分,让每个"方法&quo ...

  6. 性别收入差距=歧视?Oaxaca-Blinder分解方法

    原文链接:https://www.lianxh.cn/news/628d565acfb49.html 目录 1. Oaxaca - Blinder 分解方法简介 2. Oaxaca - Blinder ...

  7. “高效的隐私保护的张量分解方法研究”学习笔记(上)

    高效的隐私保护的张量分解方法研究 张量理论基础 张量分解 CP分解 TUCKER分解 Bi-Lanczos 算法 张量链分解 同态加密相关基础 这个笔记是学习张荣皓的"高效的隐私保护的张量分 ...

  8. 一个数据块影响的数据范围的查询方法/ROWID分解方法

    1.ROWID分解方法. select rowid,dbms_rowid.rowid_object(rowid) obj#,dbms_rowid.rowid_block_number(rowid) b ...

  9. 类EMD的“信号分解方法”及MATLAB实现(第七篇)——EWT

    这是"类EMD"方法系列的第7篇,前几篇分别是EEMD.CEEMD.CEEMDAN.VMD.ICEEMDAN.LMD,想要看前几种方法的点击链接可以跳转. 经验小波变换(empir ...

  10. 常见矩阵分解方法及其应用

    1.LU分解 可以说是最简单的矩阵分解方法,将矩阵A分解成L(下三角)矩阵和U(上三角)矩阵的乘积.其实就是高斯消元法的体现,U矩阵就是利用高斯消元法得到的,而消元过程用到的初等变换矩阵乘积就是L矩阵 ...

最新文章

  1. php类退出魔术方法,php类中常用的魔术方法
  2. 每天一个linux命令(36):diff 命令
  3. logstash mysql日期_logstash-input-jdbc取mysql数据日期格式处理
  4. 2019手卫生定义_2021年卫生资格考试部分科目大纲和教材变化归总!
  5. html5布局总结,HTML5网页布局的总结
  6. 快速排序和快速选择(quickSort and quickSelect)算法
  7. 专有网络(VPC)的六大应用场景
  8. idea导入servlet包还是显示红色_还是从servlet 开始吧,hello servlet
  9. C语言集合的排序方法,排序集合 c语言.doc
  10. lambda表达式可以用来声明_lambda表达式可以用来创建包含多个表达式的匿名函数...
  11. 读书笔记----《平凡的世界》第四篇
  12. JAVA藏宝阁游戏交易系统计算机毕业设计Mybatis+系统+数据库+调试部署
  13. 如何使用idea把自己的项目打包jar包发给别人使用
  14. python:ImportError: cannot import name ‘xx‘ from ‘xxxx‘
  15. 计算机应用技术机测,[计算机应用技术]阶段测评1(2016年版)(13页)-原创力文档...
  16. “刘知远实验室”的关系抽取实验复现
  17. 利用JavaScript计算圆的面积
  18. Joomla禁用google字体
  19. 求微分方程用c语言怎么表达,使用C语言解常微分方程 C ODE
  20. 求空间点沿平面法向量与平面交点的坐标

热门文章

  1. win10隐藏登入界面时的administrator账户
  2. Win11隐藏文件怎么取消隐藏
  3. hdu11601087
  4. 【句库】英语论文写作之好词好句积累
  5. bzoj4199 [Noi2015]品酒大会
  6. 2018年江苏高考数学填空题14的一般思路
  7. 江苏计算机对口高考分数线,单招好还是高考好|江苏省对口单招 历年分数线是多少?...
  8. Vray材质学习笔记04——磨砂金属材质
  9. chrome浏览器视频加速插件安装教程
  10. python图片处理大全_python图像处理:怎么给图片加框?