高斯消元法是求解线性方程组的常用方法,高斯约当消元法大家可能不是很熟悉。下面先介绍线性方程组和矩阵的一些基本概念与高斯消元法,然后着重介绍高斯约当消元法相对于高斯消元法的优势:程序简单(不需要回代),应用广泛(例如求矩阵的逆),易于判断处理特殊情况(有无穷多解的情况)。
这是一个线性方程组:
把方程组中的系数矩阵
和结果向量
并置,得到下面的增广矩阵:
高斯消元法的基本方法是使用加减消元,依次选定每一个未知数
,利用增广矩阵的其中一行消去尚未利用的其他行中出现的
,最终利用回代过程求得方程组的解。为了减小误差,每次都应选择
的系数绝对值最大的一行。
高斯消元法实现时有一些不易处理的问题:
1.回代过程:虽然公式并不复杂,可是编程时代入消元和加减消元并用,对于初学者(比如我)依然是一个不小的障碍。
2.自由变量:如果消元过程中存在自由变量,必须立刻赋值,否则无法继续。这样求出的是一组特解,难以求出其他变量与自由变量的函数关系。
3.交换两行:处理时需要反复交换原矩阵的两行,给调试工作带来困难。
高斯约当消元法解决了这些问题。与高斯消元法不同的是,每次消去时把当前等式中
的系数化为
,同时不仅消去尚未利用的行中出现的
,也消去已利用的行中出现的
。这样在消元完成后不需要回代过程,方程组中每一行都是
的形式。同时由于不需要回代过程,方程组中各个未知数的消元顺序不再那么严格,因此我们可以把“选择行主元”变成“选择列主元”,也就是依次选定每一个方程,从中选择系数绝对值最大的
来消元。这样方程可以依次处理,自由变量在消元完成之前不会出现。若出现“无元可消”,只有两种情况:
和
,前者直接忽略,后者直接无解。
这是一个线性方程组:
![left{ begin{array}{c}&13; a_{11} x_1 + a_{12} x_2 + ldots + a_{1n} x_n](http://alt1.artofproblemsolving.com/Forum/latexrender/pictures/8/2/8/82856c2c7031ed5f546b41ad7818055112739b8e.gif)
把方程组中的系数矩阵
![bf{A}](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/d/f/4/df46dbd3af3b27e6dd8ed7452cd69beed02b0e21.gif)
![bf{b}](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/d/9/a/d9a50fd9b7b7e66c19ccfb2cc0833254a22c4752.gif)
![left[ {begin{array}{*{20}c}&13; {a_{11} } & {a_{12} } & ldots & {a_{1n} } & {b_1 } &13; {a_{21} } &...](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/9/7/c97acefc90e9618783773e257e69dddde25b3c1f.gif)
高斯消元法的基本方法是使用加减消元,依次选定每一个未知数
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
高斯消元法实现时有一些不易处理的问题:
1.回代过程:虽然公式并不复杂,可是编程时代入消元和加减消元并用,对于初学者(比如我)依然是一个不小的障碍。
2.自由变量:如果消元过程中存在自由变量,必须立刻赋值,否则无法继续。这样求出的是一组特解,难以求出其他变量与自由变量的函数关系。
3.交换两行:处理时需要反复交换原矩阵的两行,给调试工作带来困难。
高斯约当消元法解决了这些问题。与高斯消元法不同的是,每次消去时把当前等式中
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
![1](http://alt1.artofproblemsolving.com/Forum/latexrender/pictures/3/5/6/356a192b7913b04c54574d18c28d46e6395428ab.gif)
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
![x_i=C](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/a/a/c/aac8d05c349c342929cc4b4b10b16ada6008c8ab.gif)
![x_i](http://alt2.artofproblemsolving.com/Forum/latexrender/pictures/c/4/7/c473012a54a3655adc85b3a76a7229e46921ff39.gif)
![0=0](http://alt1.artofproblemsolving.com/Forum/latexrender/pictures/2/b/d/2bd555fb1873f1c9244e2a8e742f36a2aedd3624.gif)
![0=C left( C](http://alt1.artofproblemsolving.com/Forum/latexrender/pictures/7/4/3/74359da6a9c230651294726760a0d43d10d3cc19.gif)