跳转到内容

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

维基教科书,自由的教学读本

接下来的内容要有系统性的求出一个一般的 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 系数更靠右。

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

例子

[编辑]

都是阶梯形矩阵。