高斯消元法实例
了解消元法最好的方式是看例子。我们以三维开始:
问题是找出未知量 u,v,w ,我们应用高斯消元法。(高斯被公认为最伟大的数学家,当然不是因为这项发明,这个他也许只花了十分钟。讽刺的是,以他名字命名的所有想法中,这个是最常用的)该方法从其他方程减去第一个方程的倍数开始。目标是消除后面两个方程中的 u 。这就要求我们
a. 第二个方程减去第一个方程的2倍
b. 第三个方程减去第一个方程的-1倍
消去法第二阶段的主元是-8。我们现在忽略第一个方程。从余下的方程中(例题中也就是第三个方程)减去第二个方程的倍数来消除 v 。我们将第二个方程加上第三个,换句话说
c. 第三个方程减去第二个方程的-1倍
现在完成了消去过程,得到了
然后反向求解方程组,即从下往上。最后一个方程给出了 w=2 。将它代到第二个方程,我们发现 v=1 。继续代入第一方程,求出 u=1 。这个过程称为回代。
大概总结一下:前向消去过程产生主元2,-8,1。下面的每一行减去上面的倍数,达到(3)那样的“三角”系统,这是以相反的顺序来求解的。然后将每个新计算出来的值代入方程即可。
注解:写出前向消去步骤的好方法是将右边包含进来作为额外的列。没有需要每步都复制
u,v,w,=
,所以我们最终写成:
在一个更大的问题里,前向消元法比较费力。我们用第一个方程的倍数在第一个主元下边产生零。然后第二列将第二个主元下面的元素清零。当系统是三角形的时候,前向步骤就完成了; n 个方程中只有最后一个只包含乘数和主元。以相反的顺序回代,得到完整的解-从最后一个未知量开始,然后一个一个解决,知道第一个。
根据定义,主元不能为零。因为我们需要除它们。
消元法失效
在什么情况下消元法会失效呢?奇异情况下它肯定失效,一些非奇异情况也会失效。现在讨论这个可能似乎有点太早了-毕竟,我们好不容易知道算法如何工作。但失效的可能性揭示了方法本身。
答案是:有
如果第一个系数为零,即左上角,那么就无法从其他方程中消去 u 。在中间的每个阶段同样如此。注意零可以出现在一个主元的位置上,即使那个位置的原始系数不是零。粗略地说,在执行消去过程之前,我们不知道零是否会出现。
在许多情况下是这一问题可以解决,并且消去法可以继续执行。这种系统仍算作非奇异;它只需要算法来修复。而其他情况下,失效是不可避免的。那些无药可救的系统是奇异的,他们没有解或者有无穷多个,不能找出完整的主元集合。
例1:非奇异(交换方程2,3就能恢复会非奇异的)
例2:奇异(无法恢复)
后面我们会讨论系统非奇异的情况。然后交换方程可以产生完整的主元集合。还有奇异情况,消去法就比较麻烦。 3w 仍然可以消去 4w ,并且我们将3作为第二个主元。(不存在第三个主元)。目前来说,我们相信在不需更改变方程顺序的情况下,所有主元都不为零。这是最好的情况,我们继续讨论这种情况。
消元法的代价
我们另一个问题是非常实用的。对
n
个未知量的
眼下,忽略方程右边,只考虑左边的操作。这些操作有两种。除以主元找出要减的乘数(
假设我们将每个除法和每个乘法-减法,看做一次操作。在列1 中,为了实现每个为零,我们需要
n
次操作-一方面找乘数
当消去法降为
k
个方程时,与第一阶段
如果
n
是一个很大的值,那么运算大概需要
如果规模翻了一番,并且系数几乎不为零,那么成本将是原来的8倍。
回代是相当快的。最后一个未知量只需一步操作(除以最后一个主元)。倒数第二个需要两步,等等。那么回代的总数是 1+2+⋯+n 。
右边有执行前向消元(跟左边一样,减去相同的倍数从而保证方程正确)。从第一个方程开始有
n−1
次减法。最后右边一共需要
n2
步运算-远远小于左边的
n3/3
。前向和回代一共需要
三十年前,几乎每个数学家会猜测一个
n
阶系统不可能在少于