高斯消元

简介

高斯消元 主要用于求线性方程组,也可以求矩阵的秩、矩阵的逆

时间复杂度为 (O(n^3))

思想:初中解方程的加减消元,最后得到类似 (kx = b) ,然后逐一往回带,求出其他的未知数

解方程

[egin{cases} 3x + 2y + z = 6~~① \ \ 2x + 2y + 2z = 4~~②\ \ 4x - 2y - 2z = 2~~③ end{cases} ]

(x)

① 式除以 3,然后让 ② - 2 * ①,③ - 4 * ① 得到

[egin{cases} x + frac {2}{3}y + frac{1}{3}z = 2~~④ \ \ frac{2}{3}y + frac{3}{4}z = 0~~⑤\ \ -frac{14}{3}y - frac{10}{3}z = -6~~⑥ end{cases} ]

然后让 ⑤ 除以 (frac{2}{3}), 然后让 ⑥ - ⑤ * ((-frac{14}{3}))

得到

[egin{cases} y + 2z = 0~~⑦\ ~~\ frac{18}{3} z = -6~~⑧ end{cases} ]

由 ⑧ 得 (z = -1)

然后再把 (z = 1) 代入 ⑦ 得到 (y = 2)

然后把 (z=1,y = 2) 代入 ④ 得到 (x = 1)

矩阵运算消元

把上面的柿子的系数放在矩阵中

[left[ egin{array}{ccc|c} x&y&z&val\ 3&2&1&6\ 2&2&2&4\ 4&-2&-2&2 end{array} ight] ]

左边是系数,右边是结果

然后再这个矩阵中进行上述操作

消去 x

[left[ egin{array}{ccc|c} x&y&z&val\ 1&frac{2}{3}&frac{1}{3}&2\ 0&frac{2}{3}&frac{4}{3}&0\ 0&-frac{14}{3}&-frac{10}{3}&-6 end{array} ight] ]

消去 y

[left[ egin{array}{ccc|c} x&y&z&val\ 1&frac{2}{3}&frac{1}{3}&2\ 0&1&2&0\ 0&0&frac{18}{3}&-6 end{array} ight] ]

解得

[left[ egin{array} 11\ 2\ -1\ end{array} ight] ]

判断解得情况

  • 无解:若有一行系数全是 0,且 val 不为 0,那么方程无解

[left[ egin{array}{ccc|c} x&y&z&val\ 1&frac{2}{3}&frac{1}{3}&2\ 0&1&2&0\ 0&0&0&-7 end{array} ight] ]

  • 有多个解,有多行系数和 val 都为 0

[left[ egin{array}{ccc|c} x&y&z&val\ 1&frac{2}{3}&frac{1}{3}&2\ 0&0&0&0\ 0&0&0&0 end{array} ight] ]

优点:可以判断无解,有无数解情况

缺点:需要回代

高斯-约当消元

高斯消元是执行到第 (i) 个方程 (x_k) 去消后面的 (x_k) , 而约当消元是同时消掉前面的 (x_k)

初始形式:

[left[ egin{array}{ccc|c} x&y&z&val\ 3&2&1&6\ 2&2&2&4\ 4&-2&-2&2 end{array} ight] ]

最终形式

[left[ egin{array}{ccc|c} x&y&z&val\ 1&0&0&?\ 0&1&0&?\ 0&0&1&? end{array} ight] ]

呈对角线形式

优点:省掉了回代过程

缺点:只能判断是否有唯一解,不能判断是否有解

P3389 【模板】高斯消元法

code

写在最后

鸣谢Alex_McAvoy 提供栗子

原文地址:https://www.cnblogs.com/Arielzz/p/14942187.html