0
点赞
收藏
分享

微信扫一扫

线性方程组[高斯消元]

认真的老去 2022-07-12 阅读 92

​​传送门​​

高斯消元模板

#include<bits/stdc++.h>
#define N 150
using namespace std;
double a[N][N]; int n;
void gauss(){
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)
if(fabs(a[j][i])>1e-8)
for(int k=1;k<=n+1;k++) swap(a[i][k],a[j][k]);
if(fabs(a[i][i])<1e-8 && fabs(a[i][n+1])>1e-8){printf("-1"); return;}
if(fabs(a[i][i])<1e-8 && fabs(a[i][n+1])<1e-8){printf("0"); return;}
for(int j=1;j<=n;j++){
if(i==j) continue;
double now = a[j][i] / a[i][i];
for(int k=1;k<=n+1;k++) a[j][k] -= a[i][k] * now;
}
}
for(int i=1;i<=n;i++) printf("x%d=%0.2lf\n",i,a[i][n+1]/a[i][i]);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++)
scanf("%lf",&a[i][j]);
gauss(); return 0;
}

 


举报

相关推荐

0 条评论