线性代数入门(4) - 解方程

来源:互联网 发布:mt4编程 编辑:程序博客网 时间:2024/06/05 04:07

上一部分我们扯了一些几何上的问题,只是让大家对向量的几何意义有一个直观的概念。现在让我们回到解方程的问题上来。

我们还是拿第一讲里面的那个二元一次方程组来说。
{2x1+3x2=74x1+5x2=13

我们首先拿加减消元法来对付它。何为加减消元法?很简单,就是方程之间加加减减,用于减少未知数的个数。所以,第一步,把第一个方程的两边乘以-2,然后和第二个方程相加。这个步骤基于两个假设:
(1)方程两边同乘一个不为零的数,方程仍然成立
(2)方程两边各加上一个相等的数,方程仍然成立
第一个假设用公式表示就是:
如果a=b,那么ac=bc
第二个假设用公式表示就是:
如果a=b,c=d,那么a+c=b+d

这两个假设显而易见是成立的,所以,我们把第一个方程的两边乘以-2,然后和第二个方程相加,就可以得到这样的结果:
2(2x1+3x2)+(4x1+5x2)=2(7)+13
x2=1
于是,x2=1
很容易得到,x1=2

这是很简单,但这和我们的线性代数有什么关系呢?当然有关系,现在是只有两个未知数,很容易搞清楚,但是如果有10个未知数呢?相信用这种方式来求解一定会晕头转向,半天都未必能求解清楚。但是如果我们用更好的表达方式和规范来做,就会发现这其实是一个很机械的过程,而且是很容易用计算机来进行求解的方法。

首先,我们先把这个方程用矩阵的方式表达:
[2435][x1x2]=[713]

然后我们暂且把那些未知数拿走,把方程的系数矩阵和表示方程右边的向量写在一起:
[2435][713]

然后,我们要对矩阵做一些神奇的变化,类似于加减消元法,我们定义三种操作:
1. 交换矩阵的两行 (对应于把两个方程交换一下,显然,不会影响方程的解)
2. 对矩阵某一行的元素同乘以一个不为零的数(对应于把某个方程的两边同乘一个不为零的数,显然,也不会影响方程的解)
3. 将矩阵的某一行的元素乘以一个不为零的数加到另一行上(对应加减消元法里把一个方程两边同乘不为零的数加到另一个方程上,并进行同类项的合并,也不会改变方程的解)

于是,这三种操作对方程的解没有影响。注意,操作时要对竖线左边的矩阵和竖线右边的矩阵同时进行,因为这两部分对应的是方程的左右两边。

那我们的目标是把矩阵变成什么样呢?如果说我们的解是:
{x1=2x2=1

我们同样可以把它看作一个方程,只是恰好这个方程已经直接告诉了我们这些未知数的值而已。让我们用矩阵来写一下这个方程:
[1001][x1x2]=[21]

所以,我们刚才希望的变化目标是:
[1001][??]
变化完成之后,这里的问号自然也就得到了值,而这些值也恰恰就是方程的解。

那我们就来实地做一次变化:
[2435][713]

把第一行乘以-2加到第二行上:
[2031][71]

第二行每个元素乘以-1:
[2031][71]

把第二行乘以-3加到第一行上:
[2001][41]

第一行每个元素乘以0.5:
[1001][21]

于是我们就解出了:
{x1=2x2=1

是不是很简单?这个例子还不够强大,我们来找一个复杂的例子来证明一下这个方法的强大。这里是一个4元的方程组:
x1+2x2+3x3+4x4=202x1+3x2+5x3+3x4=303x1+5x2+2x3+x4=324x1+4x2+2x3+7x4=39

先用刚才的矩阵形式写一下:
123423543522431720303239

第一步,把第一行乘以-2加到第二行,乘以-3加到第三行,乘以-4加到第四行,把第一列中除第一行外的元素都变成0:
10002114317104511920102841

然后,第二行所有元素乘以-1,把第二行第二个元素变成1:
10002114317104511920102841

然后用第二行乘以-2,1,4,分别加到一,三,四行上,使得第二列中除了第二行以外的元素都变成0:
10000100116665611010181

然后,第三行所有元素乘以-1/6,把第三行第三个元素变成1:
1000010011166511101031

然后用第三行乘以-1,-1,6,分别加到一,二,四行上,使得第三列中除了第三行以外的元素都变成0:
1000010000107411737317

然后,第4行所有元素乘以1/17,把第四行第四个元素变成1:
10000100001074113731

然后用第四行乘以7,-4,-1,分别加到一,二,三行上,使得第四列中除了第四行以外的元素都变成0:
10000100001000014321

到此,我们已经把左边的那个矩阵变成了希望变成的形式:主对角线(第i行第i列,即左上到右下的对角线)元素为1,其他元素为0。于是,我们就得到了这个方程的解:
x1=4x2=3x3=2x4=1

有没有觉得每一步都非常类似?从上至下,先把对角线元素变成1,然后把这一列上其他元素变成0,然后从下一列开始做同样的操作,直至最后一列完成后,就变成了这种猪对角线为1,其余为0的形态了。

细心的朋友现在会有问题了,如果在做某一步的时候,这个主对角线元素恰好是0怎么办?就没有办法通过乘以一个数把这个元素变成1了啊?这确实是一个问题,所以我们需要三个变换中的第一个,交换两行。在这一行的下方找一个这列不为0的行,和当前行交换一下,就可以继续啦!

那这时,还有问题,如果说在这一行下方的所有行,这列的值都是0,怎么办呢?这确实是一个很好的问题,答案是,这个方程将没有唯一解。所以我们现在就先不用关心这个啦,将来我们会专门讨论没有唯一解的方程。

这里我们用到的三种变换,有一个名字,叫做矩阵的初等行变换。

差点忘了,这种解方程的方法有一个很牛的名字,是以一位众所周知的数学家命名的:高斯消去法。


原创粉丝点击