Loading [MathJax]/jax/output/HTML-CSS/jax.js
0%

【线性代数】矩阵消元-高斯消元法

一、高斯消元法

能使用消元法的情况:每次消元过程中,对角线元素始终不能为0,即矩阵可逆

我们一般利用高斯消元法进行矩阵的消元。下面我们通过举例说明:

x+2y+z=23x+8y+z=120x+4y+z=2

如果按照我们初中所学的解法,一般是先用第三个方程将zy表示,然后代入到第二个方程就可以用x来表示yz,最后代入第一个方程就可以求得x,y,z。这个算法的核心就是消元!下面我们看看矩阵形式的消元法。

​ 首先将上面的三元一次方程组表示为矩阵形式为:

[121381041][xyz]=[2122]

为了方便,我们将等式右边的向量放到左边,构成增广矩阵(可以百度看看什么是增广矩阵)。下面是消元的具体步骤:

[1212381120412]AE21[121202260412]BE32[1212022600510]C

其中,上图中的第一个矩阵就是所说的增广矩阵,我们记作A,经过步骤$E{21}BE{32}C$。

​ 步骤$E{21}A{21}=0$,这里是指用第二行减去第一行的三倍

​ 步骤$E{32}使A{32}=0$,这里是指用第三行减去第二行的两倍

注:高斯消元的目的是使原矩阵(不要考虑最后一列,这一列是等式右边的,matlab是分别对左右两边进行消元的,我这里写在一起是为了方便)对角线下面的元素为0,变成上三角矩阵,在上面例子中本应该在步骤$E{21}E{32}E{31},使A{31}=0A_{31}=0$,所以没有必要进行操作。尽管这一步骤没有必要,但matlab会进行操作(没有人机智)。

​ 通过消元得到的结果矩阵C(上图中的第三个矩阵),我们可以写出其方程组的形式:

x+2y+z=20x+2y2z=60x+0y+5z=10

上面方程组可以直接看出,z=2,然后代入第二个方程得到y=1,再代入第一个方程得到x=2

​ 在上面的消元过程中,原始矩阵A经过步骤$E{21}BBE{32}C$,我们用矩阵来表示步骤$E{21}E{32}$,则可以得到:

[100310001]E21[1212381120412]A=[121202260412]B[100010021]E32[121202260412]B=[1212022600510]C

把这两步综合起来得到:

E32(E21A)=CEA=CE=E32E21=[100010021]E32[100310001]E21=[100310621]

总结,我们令方程组左边的矩阵为D,用初等矩阵E来表示消元操作,用上三角矩阵U表示消元得到的结果,则以上式为例:

D=[121381041],E=[100310621]U=ED=[121022005]

置换矩阵

1、行交换:左乘

[0110][abcd]=[cdab]

2、列交换:右乘

[abcd][0110]=[badc]
坚持原创技术分享,您的支持将鼓励我继续创作!