算法模板——高斯消元
2018-01-17 13:04
267 查看
基础
首先,n元1次方程组⎧⎩⎨⎪⎪⎪⎪⎪⎪a1,1x1+a1,2x2+⋯+a1,nxn=b1a2,1x1+a2,2x2+⋯+a2,nxn=b2⋯an,1x1+an,2x2+⋯+an,nxn=bn
可以写成
⎡⎣⎢⎢⎢⎢a1,1a2,1⋯an,1a1,2a2,2⋯an,2⋯⋯⋯⋯a1,na2,n⋯an,nb1b2⋯bn⎤⎦⎥⎥⎥⎥
的n×(n+1)的矩阵形式。
现在,当给出一个n×(n+1)矩阵中,左下角都为0,即:
∑i=2n∑j=1i−1∣∣ai,j∣∣=0
那么这个矩阵代表的方程应当是很好解的,只需要通过最后一行将最后一个未知数解出来,依次代入消元,那么倒数第二行也可以解了……
现在的问题是:如何将任意矩阵转化为上述矩阵?
高斯消元
用高斯消元来解决。首先可以知道:
矩阵的每一行的值减去其他行的值乘以一个数,表示的方程的结果不变。
(就是加减消元,结果不变啦)
那么可以这样来做:
先通过第一行将a2,1到an,1变成0;(通过加减消元)
然后通过第二行将a3,2到an,2变成0;
……
最后通过第n−1行将an,n−1变成0。
那么转化成了上面容易解的矩阵了;
最后通过代入来依次求出每个未知数的值。