一、高斯消元法
能使用消元法的情况:每次消元过程中,对角线元素始终不能为0,即矩阵可逆
我们一般利用高斯消元法进行矩阵的消元。下面我们通过举例说明:
x+2y+z=23x+8y+z=120x+4y+z=2如果按照我们初中所学的解法,一般是先用第三个方程将z用y表示,然后代入到第二个方程就可以用x来表示y和z,最后代入第一个方程就可以求得x,y,z。这个算法的核心就是消元!下面我们看看矩阵形式的消元法。
首先将上面的三元一次方程组表示为矩阵形式为:
[121381041][xyz]=[2122]为了方便,我们将等式右边的向量放到左边,构成增广矩阵(可以百度看看什么是增广矩阵)。下面是消元的具体步骤:
[1212381120412]⏟AE21⟶[121202−260412]⏟BE32⟶[121202−26005−10]⏟C其中,上图中的第一个矩阵就是所说的增广矩阵,我们记作A,经过步骤$E{21}得到的矩阵为B,经过步骤E{32}得到的矩阵为C$。
步骤$E{21}的目的是A{21}=0$,这里是指用第二行减去第一行的三倍
步骤$E{32}的目的是使A{32}=0$,这里是指用第三行减去第二行的两倍
注:高斯消元的目的是使原矩阵(不要考虑最后一列,这一列是等式右边的,matlab是分别对左右两边进行消元的,我这里写在一起是为了方便)对角线下面的元素为0,变成上三角矩阵,在上面例子中本应该在步骤$E{21}和步骤E{32}中还有步骤E{31},使得A{31}=0。但是原矩阵的A_{31}=0$,所以没有必要进行操作。尽管这一步骤没有必要,但matlab会进行操作(没有人机智)。
通过消元得到的结果矩阵C(上图中的第三个矩阵),我们可以写出其方程组的形式:
x+2y+z=20x+2y−2z=60x+0y+5z=−10上面方程组可以直接看出,z=−2,然后代入第二个方程得到y=1,再代入第一个方程得到x=2。
在上面的消元过程中,原始矩阵A经过步骤$E{21}得到矩阵B,矩阵B经过步骤E{32}得到矩阵C$,我们用矩阵来表示步骤$E{21},步骤E{32}$,则可以得到:
[100−310001]⏟E21[1212381120412]⏟A=[121202−260412]⏟B[1000100−21]⏟E32[121202−260412]⏟B=[121202−26005−10]⏟C把这两步综合起来得到:
E32(E21A)=C→EA=CE=E32E21=[1000100−21]⏟E32[100−310001]⏟E21=[100−3106−21]总结,我们令方程组左边的矩阵为D,用初等矩阵E来表示消元操作,用上三角矩阵U表示消元得到的结果,则以上式为例:
D=[121381041],E=[100−3106−21]U=ED=[12102−2005]置换矩阵
1、行交换:左乘
[0110][abcd]=[cdab]2、列交换:右乘
[abcd][0110]=[badc]