带有置换矩阵(P)的LU分解(即,PA = LU )

LU分解就是以矩阵的形式记录高斯消元。如果在高斯消元过程中,用到了行交换(碰到了主对角线上的元素为0的情况),则会反应在LU分解的L矩阵中。

简而言之,LU分解中的U矩阵保存的是高斯消元的结果,这是不会变的。但,记录消元过程的L矩阵,要么就是把行交换的部分直接放在L矩阵中,这种做法得到的结果就是:

A=LU

此外,还有一种不用L矩阵记录行交换的方法,那就是用一个个的置换矩阵P去记录行交换操作,这样一来,高斯消元的矩阵表示就是:

PA=LU

在我的笔记本中,出现过两次PA=LU的学习笔记,这是一个比较新的版本,这是一种非常直观的算法,且里面没有说明P矩阵的表示方式:


这是一个早期的笔记记录,虽然,他一口气就写出了L,U,P三个矩阵,但我并不推荐。


下面用Matlab来验证一下上面的计算结果:

1,先把手动计算出来的结果逐一输入Matlab。

2,分别计算PA和LU,看两者计算结果是否相等。其中,PA表示原始矩阵A经过行交换后得到的结果,而LU表示的是经过高斯消元后的结果U,通过左乘还原矩阵L后得到的结果

PxA

LxU

最终得到的等式两端的结果相同,证毕!


现在,我们再来看看Matlab自带函数lu()的计算结果:

1,首先把我们要进行LU分解的原始矩阵A输进去。

2,然后用Matlab自带的LU函数进行分解,并同时得到P,L,U三个矩阵。

注意: matlab的计算结果和我们手动计算的结果不同,两种结果都是对的。 


下面我们再补充一个例子:(同样,不推荐这个算法)

逐一输入L,U,P矩阵:

首先,PA=A,得到经过行交换后的A。

其次,计算LU,理论上LU的结果应该等于PA,(PA,即经过行交换后的A)。

证毕,礼成!

同样,再看看Matlab自带函数lu()的计算结果:

以上为matlab的计算结果,这和我们手算出来的不一样。


直接写出L矩阵的方法:

虽然我在笔记中对EA的计算进行了详细的说明,但是,当我们在手写L矩阵时,还是不希望在经过这种相对复杂的计算,而是,去尝试,用取巧的办法,直接写出EA的乘积。因为,此时E所乘的矩阵A,不是原始的A矩阵,而是始于单位矩阵I的一系列计算。

而取巧的办法就是在计算EA时,比如说EijA,只需把Eij对应位置的值,填在A矩阵中的对应位置即可。例如:

或:

(全文完)

作者 --- 松下J27

格言摘抄:悟道休言天命,修行勿取真经。《遥远的救世主---豆豆》

鸣谢(参考资料):

1,PA=LU 分解 | 線代啟示錄本文的閱讀等級:中級 令 $latex A&fg=000000$ 是一個 $latex n\times n&fg=000000$ 階可逆矩陣。LU 分解 $latex A=LU&fg=000000$ 是高斯消去法的一種表達形式,下三角矩陣 $latex L=[l_{ij}]&fg=000000$ 記錄消元過程使用的乘數,上三角矩陣 $latex U=[u_{ij}]&fg=000000$ 儲存約化結果,其中 $latex L&fg=000000$ 和 $latex U&fg=000000$ 的主對角元分別滿足 $latex l_{jj}=1&fg=000000$ 和 $latex u_{jj}\neq 0&fg=000000$ (見“LU 分解”)。不過,並非每一可逆矩陣都存在 LU 分解。在執行高斯消去法的化簡程序中,若 $latex 0&fg=000000$ 出現在軸元 (pivot) 位置,即 $latex (j,j)&fg=000000$ 元,列取代運算便無法消去軸元底下各元,這時標準 LU 分解不復存在。可逆矩陣 $latex A&fg=000000$ 的軸元總數 (即 $latex \mathrm{rank}A&fg=000000$) 等於 $latex n&fg=000000$,透過列交換運算必能獲得一個 (非零)…https://ccjou.wordpress.com/2012/04/13/palu-%E5%88%86%E8%A7%A3/

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27

线性代数 --- 带有置换矩阵P的LU分解相关推荐

  1. 线性代数导论4——A的LU分解

    线性代数导论4--A的LU分解 一.A=LA分解 消元的目的,只是为了更好正确的认识矩阵的概念,A=LU是最基础的矩阵分解.L是下三角矩阵,U是上三角矩阵.A通过消元最终得到U,L即A与U之间的联系. ...

  2. 线性代数笔记10——矩阵的LU分解

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

  3. MIT线性代数笔记四 矩阵的LU分解

    文章目录 1. 矩阵的LU分解 2. 消元法所需运算量 3. 行互换 Row exchanges   本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的 LLL矩阵,使得矩阵 AAA可以转变为 ...

  4. 两矩阵相乘的秩的性质_MIT—线性代数笔记04 矩阵的LU分解

    第04讲 矩阵的LU分解 Factorization into A=LU 04 A的LU分解​v.youku.com 本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的L矩阵,使得矩阵A可以转 ...

  5. 怎样用matlab做矩阵的LU分解,矩阵LU分解程序实现(Matlab)

    n=4;%确定需要LU分解的矩阵维数 %A=zeros(n,n); L=eye(n,n);P=eye(n,n);U=zeros(n,n);%初始化矩阵 tempU=zeros(1,n);tempP=z ...

  6. 矩阵分解(1)-- 矩阵分解之LU分解

    目录 1. 分类 2. LU分解 2.1 定义 2.2 存在性和唯一性 2.3 实例 2.4 应用 1. 分类 矩阵分解(decomposition, factorization)是多半将矩阵拆解为数 ...

  7. matlab高斯消去法,matlab实现高斯消去法、LU分解

    朴素高斯消去法: function x = GauElim(n, A, b) if nargin < 2 for i = 1 : 1 : n for j = 1 : 1 : n A(i, j) ...

  8. 矩阵LU分解分块算法实现

    本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...

  9. 《数值分析(原书第2版)》—— 2.4 PA=LU分解

    本节书摘来自华章出版社<数值分析(原书第2版)>一 书中的第2章,第2.4节,作者:(美)Timothy Sauer,更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

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

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

最新文章

  1. bootstrap3中关于布局的两种样式
  2. 系列TCP/IP协议-广播与多播(010)
  3. 查看 centos 版本
  4. 九大排序算法,你会几个?
  5. webpack 引入模块import 后面加入{}和不加大括号有什么区别
  6. 计算机机房电力切换演练方案,机房停电应急演练实施具体技术方案.doc
  7. Android设计模式之——抽象工厂模式
  8. npu算力如何计算_异构计算神器来了,它能带来性能革命吗
  9. C和C++的互相调用【原创】
  10. 沟通艺术-善于揣摩对方心思,才能把话说到心坎上
  11. MYSQL—— 启动MYSQL 57 报错“The service MYSQL57 failed the most recent........等”的问题解决方式!...
  12. 中小SAP项目中的人员编制(转)
  13. Linux 之 NTP 服务 服务器
  14. SpringBoot 单元测试——JUnit5
  15. 大数据定价方法的国内外研究综述及对比分析
  16. uniapp 查看图片点击放大预览图片 单张 多张
  17. 企业销售预测实战-为什么要做销售预测
  18. Python内置函数及其用法
  19. 微信小程序 带可拖动进度条和时间显示的音频播放器
  20. Ubuntu 10.10学习笔记

热门文章

  1. redis 获取类似key的所i有的值_高可用 Redis 分布式锁实施方案!
  2. CMU 15-213 Introduction to Computer Systems学习笔记(23) Thread-Level Parallelism
  3. triz矛盾矩阵_怎样利用项目TRIZ矛盾定义法,突破产品“创
  4. java us ascii_java – 为什么US-ASCII编码接受非US-ASCII字符?
  5. JAVA中jspinner设置选中内容_java – 如何在JSpinner中获取所选项的值?
  6. python基本规则语法
  7. Java、OC、C/C++中的null
  8. Git 远程仓库 git remote
  9. php学习五:数组操作
  10. 小强地狱(Bug Hell)——优先级和缺陷修改的平衡