来自我对线性方程组的疑惑
  • 板块学术版
  • 楼主shenqioh
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/8/28 17:11
  • 上次更新2023/11/4 08:42:51
查看原帖
来自我对线性方程组的疑惑
555905
shenqioh楼主2021/8/28 17:11

2455线性方程组一题,只有60分的弱小的我...

球球各位解答

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=55;
const int eps=1e-8;
int n;
double ans[N],a[N][N];
void Gauss(){
    for(int i=1;i<=n;i++){
        int r=i;
        for(int j=i+1;j<=n;j++){
            if(fabs(a[j][i])>fabs(a[r][i]))
                r=j;
        }
        if(fabs(a[r][i])<eps){
            cout<<"-1"<<endl;
            return;
        }
        if(r!=i) swap(a[r],a[i]);
        double d=a[i][i];
        for(int j=i;j<=n+1;j++){
            a[i][j]/=d;
        }
        for(int j=i+1;j<=n;j++){
            d=a[j][i];
            for(int k=i;k<=n+1;k++){
                a[j][k]-=a[i][k]*d;
            }
        }
    }
    ans[n]=a[n][n+1];
    for(int i=n-1;i>=1;i--){
        if(a[i][n+1]==0){
            cout<<"0"<<endl;
            return;
        }
        ans[i]=a[i][n+1];
        for(int j=i+1;j<=n;j++){
            ans[i]-=ans[j]*a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        cout<<"x"<<i<<"=";
        printf("%.2f\n",ans[i]);
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n+1;j++){
            cin>>a[i][j];
        }
    }
    Gauss();
    return 0;
} 
2021/8/28 17:11
加载中...