接下来的内容要有系统性的求出一个一般的 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 常会被省略不写,而如果这样的话,增广矩阵经过列运算后的最终状态长得像是个阶梯,这就是阶梯型矩阵的名字由来。
可以很容易的看出,一个增广矩阵经过列运算后的最终状态必然是一个阶梯形矩阵。
、 都是阶梯形矩阵。