高斯-约当消元法(转)

转载来源

选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵、解线性方程组(插一句:LM算法求解的一个步骤),等等。它的速度不是最快的,但是它非常稳定(来自网上的定义:一个计算方法,如果在使用此方法的计算过程中,舍入误差得到控制,对计算结果影响较小,称此方法为数值稳定的),同时它的求解过程也比较清晰明了,因而人们使用较多。下面我就用一个例子来告诉你Gauss-Jordan法的求解过程吧。顺便再提及一些注意事项以及扩展话题。

对本文中所提到的“主元”等概念的解释,可以参考此链接。

假设有如下的方程组:

写成矩阵形式就是:AX=B,其中:

且X=(X1, X2, X3)T

文章来源:http://www.codelast.com/

现对矩阵A作初等变换,同时矩阵B也作同样的初等变换,则当A化为单位矩阵的时候,有:

显而易见,我们得到了方程组的解X=(1, 2, 4)T

所以,我们要以一定的策略,对A和B施以一系列的初等变换,当A化为单位矩阵的时候,B就为方程组的解。

选主元的G-J消元法通过这样的方法来进行初等变换:在每一个循环过程中,先寻找到主元,并将主元通过行变换(无需列变换)移动到矩阵的主对角线上,然后将主元所在的行内的所有元素除以主元,使得主元化为1;然后观察主元所在的列上的其他元素,将它们所在的行减去主元所在的行乘以一定的倍数,使得主元所在的列内、除主元外的其他元素化为0,这样就使得主元所在的列化为了单位矩阵的形式。这就是一个循环内做的工作。然后,在第二轮循环的过程中,不考虑上一轮计算过程中主元所在的行和列内的元素,在剩下的矩阵范围内寻找主元,然后(如果其不在主对角线上的话)将其移动到主对角线上,并再次进行列的处理,将列化为单位矩阵的形式。余下的步骤依此类推。具体的计算过程的一个例子,请看下面我举的求逆矩阵的过程。

如果要解系数矩阵相同、右端向量不同的N个方程组,在设计程序的时候,没有必要”解N次方程组“,我们完全可以在程序中,将所有的右端向量以矩阵的数据结构(类似于二维数组)来表示,在系数矩阵作行变换的时候,矩阵里的每一个右端向量也做同样的变换,这样,我们在一次求解运算的过程中,实际上就是同时在解N个方程组了,这是要注意的地方。

文章来源:http://www.codelast.com/

那么,G-J法为什么可以用来求逆矩阵?

假设AX=E,其中,A为n阶系数矩阵(与上面的解线性方程组对照);E为单位矩阵,即E=(e1,e2,…,en),其中e(i=1,2,…,n) 为单位列向量;X为n个列向量构成的矩阵,即X=(x1,x2,…,xn),其中x(i=1,2,…,n) 为列向量。于是,可以把等式AX=E看成是求解n个线性方程组Axi=ei (i=1,2,…,n),求出了所有的xi之后,也即得到了矩阵X。而由AX=E可知,矩阵X是A的逆矩阵,即X=A-1。这样,就求出了A的逆矩阵了。于是,求逆矩阵的过程被化成了解线性方程组的过程,因此我们可以用Gauss-Jordan消元法来求逆矩阵。

求逆矩阵时,系数矩阵A和单位矩阵E可以共用一块存储区,在每一次约化过程中,系数矩阵逐渐被其逆矩阵替代。

在这里,我用一个实际的例子来说明G-J法求逆矩阵的过程:

有如下的方程组:

显而易见,该方程组对应的系数矩阵A和右端向量矩阵B(此处只有一个右端向量)分别为:

其实在求逆矩阵的过程中,矩阵B无关紧要,可以忽略,不过此处还是把它写出来了。下面,把单位矩阵E附在A的右边,构成另一个矩阵(A|E):

文章来源:http://www.codelast.com/

下面,我们就通过矩阵的初等变换,将A化为单位矩阵E,而E则化为了A的逆矩阵。以下是转化步骤:

  • 【Step 01】主元选为3,所以将Row1(第一行)与Row2(第二行)交换:

  • 【Step 02】主元所在行的所有元素除以主元:

  • 【Step 03】Row1 - Row2,Row3 - 2 × Row2:

现在,原来的矩阵A有一列被化为了单位阵的形式。

  • 【Step 04】重新选主元,这一次主元选为5/3,于是Row1 ÷ 5/3(主元所在行的所有元素除以主元):

  • 【Step 05】Row2 - (1/3) × Row1,Row3 - (4/3) × Row1:

现在,原来的矩阵A又有一列被化为了单位阵的形式。

  • 【Step 06】重新选主元,这一次主元选为-1/5,于是Row3 ÷ (-1/5)(主元所在行的所有元素除以主元):

  • 【Step 07】Row1 - (2/5) × Row3,Row2 - (1/5) × Row3:

现在,原来的矩阵A的所有列都被化为了单位阵的形式。

可见,以上过程非常适合于计算机编程求解。

文章来源:http://www.codelast.com/

至此,我们完成了从A到E的转换,这个过程中使用了选主元的方法,但没有使用列交换。于是,原来的单位矩阵E就变成了A-1,即:

有人说,在进行转化的过程中,如果某一步发现选中的主元为0,怎么办?当然,这种情况就进行不下去了(矩阵是奇异的)。

转载于:https://www.cnblogs.com/ZICLEX/p/10226739.html

高斯-约当消元法(转)相关推荐

  1. 4.6 高斯约当消元法

    4.6 高斯约当消元法 高斯消元法把矩阵变换为上三角阵,上三角阵还可以继续变换为对角阵.例如上面增广矩阵 [A,b][A, b][A,b] 变换为上三角阵 [24−2201140048]\left[ ...

  2. 高斯消元法(高斯·约当消元法)(浮点)

    高斯消元法,用于解多元一次方程(几乎类似模拟手动解方程). 思路: 通过等式的乘除,把方程1的x1x1x_1系数a11a11a_{11}分别化为方程2~方程n的x1x1x_1系数,然后将方程2~方程n ...

  3. 高斯-约当消元法(随机程序,UVA 10828)

    就是有一类题目: 就是给你一个图,和一个起始点(可以很抽象,比如UVA 11762需要你自己建模.也可以很具体,比如就是一个网格) 然后每个节点都有一定概率转移到另一些节点. 具体解法就是: 如果是有 ...

  4. python 高斯约当消元法求逆矩阵

    judge函数判断该矩阵该矩阵是否有逆矩阵 calculate计算逆矩阵 import sysclass MatrixInverse:""""求逆矩阵" ...

  5. 高斯消元法(高斯·约当消元法)(整数)

    整数高斯消元作用在于最后得出的解可以判断是否为整数. 首先看高斯消元法(浮点) 整数的高斯消元法,在消元时通过等式乘法,将同一项系数统一成它的最小公倍数,然后再进行消元. 核心代码: int n,A[ ...

  6. 高斯-约当 (Gauss-Jordan) 消元法 [学习笔记]

    朴素高斯消元 program ttdd8; var matrix:array[1..100,1..101] of double;temp:array[1..101] of double;x:array ...

  7. 选主元的高斯-约当(Gauss-Jordan)消元法解线性方程组和求逆矩阵

    选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵.解线性方程组(插一句:LM算法求解的一个步骤),等等.它的速度不是最快的,但是它非常稳定(来自网上的定义 ...

  8. 高斯-约当(Gauss-Jordan)消元法

    选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵.解线性方程组(插一句:LM算法求解的一个步骤),等等.它的速度不是最快的,但是它非常稳定(来自网上的定义 ...

  9. 高斯-约当(Gauss-Jordan)消元法——c++代码实现

    具体算法的详细原理请参照此篇博客:高斯-约当(Gauss-Jordan)消元法 下面是具体c++代码,不保证程序最优化,提供一个可行的程序,供大家改进,同时感谢大家提意见.--大神勿喷呀,我是一个小菜 ...

最新文章

  1. 外部网络如何获取网口打印机的ip地址_网络打印机端口用名称好是还是IP好?...
  2. docker学习笔记(五)docker实战
  3. 来自未来团队伙伴的一封信
  4. 基于python的request库,模拟登录csdn博客
  5. 作为一名Java程序员,你竟然不知道Instrumentation
  6. MSSQL如何在没有主键的表中删除重复数据
  7. 一篇文章带初学者明白:什么是编译器,什么是集成开发环境(IDE)?
  8. 为什么现在的手机不像以前一样可以换电池?
  9. 学会这 6 招,网页搜索一秒就能搜到你想要的【老司机必备神技】
  10. 计算机英语基础课程论文,计算机专业英语结课论文.doc
  11. Maven 梳理 - Maven中的dependencyManagement 意义
  12. HBase下载地址(全)
  13. 撬动世界的支点——《引爆点》读书笔记2900字优秀范文
  14. ExpandableListView
  15. python批量读取tiff文件_Python Pillow批量转换tif格式到jpg
  16. 编码格式检测(中文乱码问题)
  17. DW-概率统计打卡task01
  18. 关于Diy51单片机的趣事
  19. 题解 SP2916 【GSS5 - Can you answer these queries V】
  20. 电脑win10锁屏壁纸获取

热门文章

  1. HTTP 协议之Gzip压缩原理
  2. 再先进的在线教学,也要回归这个本质
  3. java编译和反编译
  4. 视频手势画图python_如何裁剪视频
  5. centos 静态编译MP4box
  6. ubuntu18.04 littlevgl运行环境搭建
  7. java中抓阄_有种取名是让宝宝“抓阄”选,宝妈打开纸条后笑了:你自己选的...
  8. 【深度学习】BioBERT文章翻译及个人感悟
  9. 扫雷html5简单初级,纯原生JS用面向对象class方法实现简易扫雷小游戏
  10. ORACLE存储过程中sleep的使用