您的位置:首页 > 其它

高斯消元

2018-01-02 15:59 183 查看
高斯消元是解决解一些线性方程求解的问题,可以在O(n3)的时间内跑出答案。具体方法有两种:

1. 经典的高斯消元:

这个就像一般的解方程的步骤,将未知数一个一个消去,然后只剩下一个未知数时就可以直接算出。而且我们注意到,有第一次消元后有n−1个式子,第二次后有n−2个…第n−1次消元有2个式子,所以我们得到最后一个方程的答案后再回代。这样子,还要注意一点就是每次尽量选择数大一些的消去,避免误差。

2. 高斯.若尔当消元:

类似于高斯消元,但是最后是消出n个只有一个未知数的式子。省去了回代,但是常数要大一些。具体方法是先像一般的高斯消元一样消成上三角矩阵,然后针对某一列i,将除了i的全部消去。这一步实际上可以与高消一起进行。

代码如下:(参照zcysky)

bool gauss(){
for(int i=1;i<=n;i++){
int
bbb8
k=i;
for(int j=i+1;j<=n;j++)if(fabs(a[j][i])>fabs(a[k][i]))k=j;
if(fabs(del=a[k][i])<eps)return 0;
for(int j=i;j<=n+1;j++)swap(a[i][j],a[k][j]);
for(int j=i;j<=n+1;j++)a[i][j]/=del;
for(k=1;k<=n;k++)if(k!=i){
del=a[k][i];
for(int j=i;j<=n+1;j++)a[k][j]-=a[i][j]*del;
}
}
return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  高斯消元