简介
高斯消元 主要用于求线性方程组,也可以求矩阵的秩、矩阵的逆
时间复杂度为 (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]
]
呈对角线形式
优点:省掉了回代过程
缺点:只能判断是否有唯一解,不能判断是否有解
写在最后
鸣谢Alex_McAvoy 提供栗子