Gauss消元的部分主元法和完全主元法(补充)

本文主要是对下文的补充,而补充的主要内容就是如何直接求出(手动)部分主元法的P矩阵和L矩阵

线性代数 --- Gauss消元的部分主元法和完全主元法_松下J27的博客-CSDN博客_高斯消元的主元是什么Gauss消元的部分主元法和完全主元法https://blog.csdn.net/daduzimama/article/details/124797212

在我之前写的文章中,我留下了一个问题。那就是,在高斯消元的过程中,如果使用了行交换(或者列交换),怎么才能像不选主元法那样直接写出标准的下三角L矩阵呢?以及如何直接写出P矩阵,使得:PA=LU呢?后面,分别有两个热心的网友留言,并进行了答复。其中有一个网友的留言,我已经做了验证,并把他所说的算法补充到了原文中。后来,又有一位网友留言,同时推荐了一本书(如下图):

这里面详细介绍了直接写出标准下三角矩阵L和置换矩阵P的办法。且,这本书里的方法和我前文中的方法不完全一样(可以说更好),但也有相似之处,现在我就把数中的方法写出来。由于那本书中对矩阵的命名和我前文的命名有很大的不同,这里我依然沿用原书中的命名。


Part I: Lloyd书中不选主元法的表示方式

1,首先,为了便于比较,我们依然沿用原来的例子:

就不选主元法而言,这本书没有使用基本消元矩阵E来记录高斯消元的过程。而是把主元下面所有元素的消元过程都放在一个矩阵中(或者说是用一个矩阵来记录一整列的消元过程),书中用带有下标的矩阵表示。

为了便于比较,我这里也把用消元矩阵来表示的做法用书中的方式画下来了:

前者是用来表示(或记录)消元的过程,而后者是用来表示消元的过程。而且,从上面的列子,我们可以看出对于4x4的矩阵而言:

2,此外,书中的L矩阵同样用到了基本消元矩阵的两个性质:

2.1,若要计算基本消元矩阵的逆,只需改变矩阵中第x行,第y列元素的符号即可。

例如(这不是本文起始处Ax=b所对应的消元矩阵):

6个消元矩阵的逆(只需改变对应元素的符号即可)

2.2,要求多个的消元矩阵(例子中为消元矩阵的逆)的乘积,只需在单位矩阵I中,逐一填入对应位置的值即可。

例如:

只不过,在这个作者的书中,他是以整列为单位操作的(即,以矩阵为单位处理的),如下:

并且,他在书中把上文中提到的消元矩阵的两个特性称为两个LUCK“ two stroke of luck”。

Luck 1(20.4):等同于消元矩阵E的第一条属性,即,逆矩阵只需改变对应元素的符号即可:

Luck 2(20.5):等同于消元矩阵E的第二个属性,即,要求多个E的乘积,只需把E中的元素逐一填入单位矩阵I中对应的位置即可。

把L1,L2和L3中用红色方框框出来的元素(改变符号后,因为下图中为L的逆),逐一放在单位矩阵I中对应的位置,即可生成L矩阵。

按照这位作者Lloyd N. Trefethen的做法,我也把用多个消元矩阵相乘的表示方式和用文中多个矩阵相乘的表示方式做了一个类比:

相当于是Lloyd所使用的每一个都恰好是第n列所对应的全部E矩阵相乘的结果。


Part II: Lloyd书中部分主元法的表示方式

不选主元法,并不是本文的重点。下面我们看看在他的书中,如果遇到了行交换的问题,他是怎么直接写出L矩阵的。

1,首先,他在这里也是用P表示置换矩阵。

2, 和用消元矩阵E+置换矩阵P的表示方式一样,他也是按照从A到U的消元过程,按照消元的顺序,把整个消元过程用若干个置换矩阵P和消元矩阵L的乘积表示。(唯一不同的就是在我的方法中用的是E矩阵,而在他的方法中用的是L矩阵

我们先看看书中的一个例子,以便更好的理解他的做法,尤其要注意他的L'矩阵:

(下图中的L1应为L2)

最终,按照从A到U的消元顺序得到:

注意:这里L3P3L2P2L1P1逐一相乘后的结果和前面不选主元法的例子中得到的L3L2L1可不一样,由于置换矩阵P的存在,他得到的不是一个标准的下三角矩阵,但后者(L3L2L1)是,且后者的逆也是。

不选主元法中L3L2L1的结果:

L3L2L1和他的逆都是下三角矩阵,且他的逆可以直接根据L1,L2和L3写出来

而L3P3L2P2L1P1的结果这样的:

注意,因为P矩阵的引入,L3P3L2P2L1P1的乘积不是下三角矩阵

更重要的是,在有P矩阵的情况下,你无法按照原来的方法直接写出标准的下三角矩阵L。

但,这本书的作者提到了一个可以直接写出标准下三角矩阵L的办法,并称之为第三个luck:

用他的话说就是,我们最终想得到的PA=LU中的P和L,他们分别由:

给出。

举个例子吧,如果是用部分主元法对一个4x4的矩阵消元,则我们所需要的L1',L2'和L3'分别是:

而最终的L等于:

分别代入上面的L1',L2'和L3'得到:

我们按照书中的说法做一遍,看看最终的结果:

最后,我用他的这个方法来计算本文最开始的那个例子,有兴趣的读者可以和我原文中用消元矩阵E+置换矩阵P的算法算法做个对比:(尤其是要注意PnLn左乘和LnPn右乘的区别,以及右乘对最终L矩阵的影响,我想这就是作者所说的第三个Luck吧)

这里我们要注意两点:

1,在计算Ln'矩阵时要注意:Ln'等于若干个置换矩阵P左乘Ln和若干置换矩阵P的逆右乘Ln。

当我们自己手算时(也许包括编程时),如果注意到Ln后面所乘的一系列的置换矩阵P的逆,都只是为了把前面PPPP...PLn的结果变成下三角矩阵而已的话。

且,我们在写L矩阵时也只是用到了Ln'中的第n列主元下面的值(要改变符号),完全不需要考虑他究竟是不是标准的下三角矩阵,也就是说大可不需要Ln后面的一系列的列交换操作,依然也能写出L矩阵。

这样一来我们在计算Ln'时,可以选择一种取巧的办法,不去管Ln后面的P,只需把PPPP...PLn乘起来即可。

2,私以为,他的这种表示方法,有一个地方可以改进,那就是把P1,P2。。。的命名方式改成P14(交换14行),P23(交换23行)可能会更好,这样更直观一些。但,似乎又不利于计算Ln时的排序。。。


(全文完)

作者 --- 松下J27

古诗词赏析

《破阵子·为陈同甫赋壮词以寄》

---辛弃疾

醉里挑灯看剑,梦回吹角连营。八百里分麾下炙,五十弦翻塞外声,沙场秋点兵。
马作的卢飞快,弓如霹雳弦惊。了却君王天下事,赢得生前身后名。可怜白发生!

参考文献(鸣谢):

《Numerical Linear Algebra》---Lloyd N. Trefethen, David Bau

(配图与本文无关)

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

线性代数 --- Gauss消元的部分主元法和完全主元法(补充)相关推荐

  1. 线性代数 --- Gauss消元的部分主元法和完全主元法

    Gauss消元的部分主元法和完全主元法 心怀二意的人,在他一切所行的路上都没有定见.----雅各书1章8节 笔者的一些话:刚开始写这篇文章的时候,我觉得高斯消元很简单.因为,这时的我已经完成了我一直想 ...

  2. C#--Gauss消元之完全主元法

    Gauss完全主元法 在k次消元的基础上加了换列操作,其他都一样. 主要部分换行换列: public double Findikjk(int k, ref int ik, ref int jk){do ...

  3. 线性代数 矩阵消元与回代

    determinants(行列式) elimination(消元法) 通过消元法我们可以知道一个矩阵什么时候是好的矩阵,什么时候是坏的矩阵 x+2y+z=2x+2y+z=2x + 2y + z = 2 ...

  4. 51nod1446 Kirchhoff矩阵+Gauss消元+容斥+折半DFS

    思路: //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using ...

  5. 关灯游戏 Lights out (三)(线性代数+高斯消元,搜索全部解)

    关灯游戏和线性代数联系紧密,对于一个 的灯阵,用线性方程组+高斯消元法求解,时间复杂度为O(m×n)^3.相对于首行枚举算法复杂度O(2^n) ,线代算法的时间复杂度低很多.用线性代数求解关灯游戏是个 ...

  6. 【C++】高斯消元算法

    矩阵初等行变换法则 任一行可以与另一行进行加减. 任一行可以乘或除以一个非零常数(除其实就是乘一个倒数). 任两行可以交换位置. 线性方程组 形如 a1,1x1+a1,2x2+⋯+a1,nxn=b1a ...

  7. 高斯消元 AcWing 883. 高斯消元解线性方程组

    高斯消元 AcWing 883. 高斯消元解线性方程组 原题链接 AcWing 883. 高斯消元解线性方程组 算法标签 线性代数 高斯消元 思路 代码 #include<bits/stdc++ ...

  8. Matrix 高斯消元Gaussian elimination 中的complete pivoting和partial pivoting

    首先科普下Pivoting的含义 一般翻译为"主元",在对矩阵做某种算法时,首先进行的部分元素.在线性规划的单纯形法中常见. wiki的解释如下: Pivot element (t ...

  9. Gauss完全主元法(C#实现)——计算方法

    Gauss完全主元法(C#实现)--计算方法 代码思路: Gauss完全主元法是在高斯消元法的基础上增加了找主元,换行,换列这三个方法,因此它可以继承高斯消元法类,如有需要可以看我在计算方法分类专栏写 ...

  10. 高斯消元简单线性代数线性基学习记录

    线性代数,唉 高斯消元 P4035 [JSOI2008]球形空间产生器 题目描述 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标 ...

最新文章

  1. Sql Server系列:数据库操作
  2. 第十七届智能车竞赛LOGO设计
  3. QT 4.8.5支持电容触摸屏 和 鼠标
  4. 2019-2020年度总结
  5. ZABBIX2.4.8监控 Windows Mysql数据库
  6. 404 NOT FOUND!
  7. [转帖]我们是OIer、
  8. Python人脸识别考勤打卡系统
  9. YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5的发展(1)
  10. mysql监控工具:zabbix+MPM(Performance Monitor for MySQL)
  11. 如何对自己定义的目标进行分解
  12. 计算机系单身率排行榜,今天6一波~单身率特高的那些大学专业排行榜!
  13. jQuery使用ajaxSubmit()提交表单示例
  14. 知名图床程序chevereto双十一半价促销,手把手教你如何搭建一个属于自己的无限存储图床
  15. revers-integer
  16. STM32 10进制转16进制,16进制转10进制 超简单
  17. 计算机登录其他用户,限制用户登录到其他计算机
  18. android多渠道打包插件,Android几种多渠道打包的步骤详解
  19. Kotlin_高阶函数详解
  20. fpga的jtag接口扫不到器件_FPGA中AS和JTAG接口的使用

热门文章

  1. CSS backdrop-filter 实现毛玻璃效果 无需定位裁剪图片
  2. 个人作业2——集大通APP案例分析
  3. nginx配置反向路由代理
  4. 模具设计经典案例:汽车门板下本体模具的设计
  5. DCPP系列衍生物Cz-DCPP,Cz-Ph-DCPP,DPA-DCPP,DPA-Ph-DCPP,DMAC-DCPP,DMAC-Ph-DCPP
  6. 大数据算法工程师知识点大全
  7. Rhino学习教程——1.4
  8. 跨境电商战略发展中,流星汇聚分析未来跨境电商发展趋势
  9. java tire树_谢特——后缀数组+tire 树(示例代码)
  10. 【Jupyter Notebook】添加目录--Table of Contents