zoukankan      html  css  js  c++  java
  • P3389 【模板】高斯消元法

    我们需要的是解方程组

    手解怎么解,挨个试呗

    所以说呢,电脑也可以干一样的事情

    (x_1)(x_n)一个一个得消去系数,然后倒着推回来

    这里的问题很简单,不需要考虑自由元什么的

    所以说搞就行了

    在这里呢,我们把(1 ightarrow n)的系数依次搞成零

    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iomanip>
    using namespace std;
    int n;
    double a[105][105],ans[105];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cin>>a[i][j];
            }
            cin>>a[i][n+1];
        }
        for(int i=1;i<=n;i++){
            int r=i;
            for(int j=i+1;j<=n;j++){
                if(fabs(a[r][i])<fabs(a[j][i])) r=j;//为了精度
    			//从大的开始搞 
            }
            if(i!=r) for(int j=i;j<=n+1;j++) swap(a[i][j],a[r][j]);
            for(int j=i+1;j<=n;j++){
                for(int k=i+1;k<=n+1;k++){
                    a[j][k]=a[j][k]-a[j][i]/a[i][i]*a[i][k];
                    //手推一下
    				//自己消元的过程 
                }
                a[j][i]=0;
                //这一项没了 
            }
        }
        for(int i=n;i>=1;i--){
            if(a[i][i]==0){
                cout<<"No Solution";
                return 0;
            }
            ans[i]=a[i][n+1]/a[i][i];
            for(int j=1;j<i;j++){
                a[j][n+1]-=a[j][i]*ans[i];
            }
        }
        for(int i=1;i<=n;i++) cout<<fixed<<setprecision(2)<<ans[i]<<endl;
        return 0;
    }
    
  • 相关阅读:
    c# 之 事务
    Asp.Net 之 js/jquery获取服务器端控件
    产品能力框架图
    软件测试职业发展规划图
    Loadrunner 工作原理图
    Linux内核性能测试工具全景图
    Linux 性能监控分析
    软件藏宝图
    Haproxy 8种算法+Session共享
    Keepalived+Haproxy实现高可用负载均衡
  • 原文地址:https://www.cnblogs.com/For-Miku/p/14906330.html
Copyright © 2011-2022 走看看