EOJ1040 高斯消元法求解线性方程组的解

#include <iostream>#include <cstring>#include <vector>#include <cmath>#include <cstdio>using namespace std;const int size_n=100;const double exps=1e-7;double a[size_n][size_n],b[size_n],ans[size_n];void get_ans(int n){for(int i=n;i>=1;–i){double sum=0;for(int j=n;j>i;–j){sum+=ans[j]*a[i][j];}ans[i]=(b[i]-sum)/a[i][i];}}void fun(int n){for(int i=1;i<=n;++i){int max_n=i;for(int j=i+1;j<=n;++j)if(fabs(a[j][i])>fabs(a[max_n][i]))max_n=j;if(max_n!=i){for(int j=1;j<=n;++j){swap(a[max_n][j],a[i][j]);}swap(b[max_n],b[i]);}if(fabs(a[i][i])<exps){cout<<"无穷多解"<<endl;return;}for(int j=i+1;j<=n;++j){double tem=a[j][i]/a[i][i];for(int k=1;k<=n;++k){a[j][k]-=a[i][k]*tem;}b[j]-=b[i]*tem;}}get_ans(n);}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);int n;cin>>n;for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){cin>>a[i][j];}}for(int i=1;i<=n;++i)cin>>b[i];fun(n);for(int i=1;i<=n;++i)printf("%.2f\n",ans[i]);return 0;}

,梦想从来不会选择人,它是上天赋予每个人构建未来蓝图的神奇画笔。

EOJ1040 高斯消元法求解线性方程组的解

相关文章:

你感兴趣的文章:

标签云: