高斯消元快速入门
一、基本描述
学习一个算法/技能,首先要知道它是干什么的,那么高斯消元是干啥的呢?
高斯消元主要用来求解线性方程组,也可以求解矩阵的秩,矩阵的逆。在ACM中是一个有力的数学武器.
它的时间复杂度是n^3,主要与方程组的个数,未知数的个数有关。
那么什么是线性方程组呢?
简而言之就是有多个未知数,并且每个未知数的次数均为一次,这样多个未知数组成的方程组为线性方程组。
二、算法过程
其实高斯消元的过程就是手算解方程组的过程,回忆一下小的时候怎么求解方程组:加减消元,消去未知数,如果有多个未知数,就一直消去,直到得到类似kx=b(k和b为常数,x为未知数)的式子,就可以求解出未知数x,然后我们回代,依次求解出各个未知数的值,就解完了方程组。
换句话说,分两步:
1. 加减消元
2. 回代求未知数值
高斯消元就是这样的一个过程。
下面通过一个小例子来具体说明
0.求解方程组
有这样一个三元一次方程组:
⎧⎩⎨2x+y+z=16x+2y+z=−1−2x+2y+z=7①②③ { 2 x + y + z = 1 ① 6 x + 2 y + z = − 1 ② − 2 x + 2 y + z = 7 ③
1.消去x
①×(−3)+② ① × ( − 3 ) + ② 得到
0x−y−2z=−4 0 x − y − 2 z = − 4
①+③ ① + ③ 得到
0x+3y+2z=8 0 x + 3 y + 2 z = 8
从而得到
⎧⎩⎨2x+y+z=10x−y−2z=−40x+3y+2z=8①②③ { 2 x + y + z = 1 ① 0 x − y − 2 z = − 4 ② 0 x + 3 y + 2 z = 8 ③
2.消去y
②×3+③ ② × 3 + ③ 得到
0x+0y−4z