线性代数/增广矩阵的高斯消去法

接下来的内容要有系统性的求出一个一般的 n 元一次联立方程式的所有解,而这个联立方程式不再限于未知数与限制式个数相同。

首先,必须要认知道的一项事实是,就单纯要一眼判断出一个联立方程式是否有解是不可能的,因此退而求其次,要找一套固定的标准的流程,看最终结果来判断。

换句话说,要找到一个算法可以交给电脑来执行,而不是期待电脑能像人类可以见机行事,判断当下哪种做法比较“好算”。

基本列运算

编辑

对于一个联立方程式,或其所对应的增广矩阵,其求解过程总是将方程式的各式,或增广矩阵的各列,进行一些类似加加减减的运算。那么,要研究出到底有哪些动作是可以被执行的,下面将举尽所有的基本列运算:两列互换、一列乘上非零常数、一列加上另一列的常数倍。

1. 两列互换,例如
 
将第一列和第三列互换,而它所对应的联立方程式是  
2. 一列乘上非零常数,例如
 
是将第二列乘上常数  ,而它所对应的联立方程式是
 
3. 一列加上另一列的常数倍,例如
 
是将第三列加上 -2 倍的第一列,而它所对应的联立方程式是
 

在第 2 点中,乘上的常数不可以是 0,否则会把整列归零,换言之,会使一整条等式直接消失,可能造成最后解出不合的解;但在第 3 点中,一列加上另一列的常数倍,那个常数就可以是 0,因为一列加上另一列的 0 倍,等于是不对任何式子做变动,所以此作用虽然合法,但是没有意义。

而基本列运算的名称来源于,其他用于解方程式的复杂变换,都可以由多个基本列运算组合而成,例如多列的顺序重排、多列同乘常数、一列加上多列的线性组合……等等。

求解过程

编辑

由于接着要处理的是给电脑来执行的一般性解法,因此必须照着   的顺序依序消除便变数,并且要妥善安排消完变数后的列的上下顺序。

第一步骤

编辑

首先,假设拿到一个增广矩阵

 

同时我们在心里要秉记着它所对应的联立方程式

 

第一个步骤要消掉  ,然后分成三种情况分别处理:

  • 如果增广矩阵   的第一列各项皆 0,换句话说  ,那么这就意味着变数   根本不存在于联立方程式之中,因此不需要做任何处理,直接前往下一步处理  
  • 如果   的最左上角那一项   不等于 0,那么将第一行乘以  ,得到
 
其中对所有  ,有  。然后下一步是要将   、…、  消掉,因此,分别将第二行、第三行、…、第 m 行减去   、…、  倍的第一行,得到
 
特别要注意的是,从    的过程不是一个基本行运算,而是要将各行分别做,总共要做   次。
  • 如果   的最左上角那一项   等于 0,但   、…、  不全为 0,那么设 k 是最小的正整数使得  ,接着将   的第一行和第 k 行互换,就回到上面第二点的情况。

第一步骤做完的结果

编辑

在此做个统整,顺便看看下一步该怎么操作,如果是第一点的情况

 

接下来就对   里面的

 

进行与第一步骤相同的处理,一样如上分成三种情况讨论;如果是第二或第三点的情况,经处理后得到

 

接下来就对   里面首行首列以外的部分

 

进行与第一步骤相同的处理,一样如上分成三种情况讨论。

终止况态

编辑

依据前一节的步骤,不断重复对   进行列运算,由于每执行一次前一节的动作,  待处理的部分的长度或宽度会变小,因此在有限步的操作之内,上述的动作将会终止。而在上一节的操作中可以发现,在   最后两行之间的那一杠其实没有起什么作用,因此在就算重复到最后,出现形如

 

的部分,仍然可以继续操作:将第一个非 0 元素换到最上面,并且将它除成 1,再将剩下的元素减成 0。

那么接着来看看在终止时的状态,先直接下结论,此时   将形如

 

其中   代表连续 m 个 0,而 △ 则代表该项可以填入任意的数。

接下来解释   的终止状态会形如上式的原因:最左边的连续  列的 0 代表前  次操作都是第一点的状况,也就首列全为 0;而第一行第   列的 1 代表接着出现的状况是第二或三点的状况,因此操作完会使第   列上除了第一行的 1 以外全部都是 0。再之后便没有第一行的事了,因此在 1 之后全都是 △,可能填入任何的数。然后第二列的  又代表着连续  次操作都是第一点的状况,而接下去的 1 则代表接着出现的状况是第二或三点的状况,依此类推。

例子

编辑

实际上,在前述中的    …中,有可能下标中出现的是 0,也就连续出现零个 0,直接在 1 的右下角又出现一个 1,如果  ,那么   终止状态是

 

在此这情况下,最下面好几列的全零列对应到的方程式是 0 = 0,毫无任何意义。忽略那些全 0 列之后,最后一列有意义的列是  ,对应到的方程式是 0 = 1,代表增广矩阵   无解。

阶梯形矩阵

编辑

在很多时候,矩阵中的 0 常会被省略不写,而如果这样的话,增广矩阵经过列运算后的最终状态长得像是个阶梯,这就是阶梯型矩阵的名字由来。

定义

一个矩阵   被称为是阶梯形矩阵如果   满足以下条件

  • 所有   的非零列(矩阵的列至少有一个非 0 元素)在所有全零列的上面。即全零列都在矩阵的底部。
  • 非零列的首项非 0 系数,即最左边的首个非零元素,必定是 1,而且其位置必需严格地比上面列的首项非 0 系数更靠右。

可以很容易的看出,一个增广矩阵经过列运算后的最终状态必然是一个阶梯形矩阵。

例子

编辑

   都是阶梯形矩阵。