zoukankan      html  css  js  c++  java
  • 高斯消元 浮点数解

    #include<iostream>
    using namespace std;
     
    const int maxn = 1000;
    int n;
    double a[maxn][maxn];
    double b[maxn];
    void gaussin()
    {
        int Flg = -1,i,j,k;                    //判断方程组是否有解:0无解、1有唯一解、2有无穷解
        double fg;
        //化简部分
        for(i=1;i<=n;i++){
            fg=a[i][i];
            for(j=i+1;j<=n;j++){
                double x = a[j][i]/fg;
                for(k=i;k<=n;k++)
                    a[j][k] -= x*a[i][k];
                b[j]-=x*b[i];
            }
        }
        //判断部分
        bool flag;                  //判断方程组是否多解
        for(int i=n;i>0;i--){
            flag = false;
            for(int j=1;j<=n;j++){
                if(a[i][j]!=0){
                    break;
                }
                if(j==n){
                    if(b[i] == 0)
                        flag = true;
                    else
                        Flg = 0;                    //无解情况
                }
            }
            if(Flg != 0)
                if(flag){
                    Flg = 2;
                    break;
                }
                else
                    Flg = 1;
            else
                break;
        }
        //最终结果
        if(Flg == 0)
            cout << "方程组无解"<<endl;
        else if(Flg == 2)
            cout << "方程组多解" << endl;
        else{
            double s[maxn];
            for(int i=n;i>0;i--){
                for(int j=n;j>=i;j--){
                    if(j==i)
                        s[i] = b[i]/a[i][j];
                    else
                        b[i] -= a[i][j]*s[j];
                }
            }
            cout << "方程组有解:"<<endl;
            for(int i=1;i<=n;i++){
                cout << " x"<<i<<"="<<s[i]<<endl;
            }
        }
    }
    int main()
    {
        cout << "请输入未知数个数:";
        cin>>n;
        for(int i=1;i<=n;i++){
            cout << "请输入第"<<i<<"方程式的系数和结果:"<<endl;
            for(int j=1;j<=n;j++){
                cin>>a[i][j];
            }
            cin>>b[i];
        }
        gaussin();
        return 0;
    }
  • 相关阅读:
    Prim算法的3个版本
    [转]"undefined reference to" 问题解决方法
    C/C++ 读写 Excel
    Poj 3468
    关于PS中矩形工具的学习
    PS初学习
    java第二天学习。
    Java学习第一天
    二叉树的线索化
    struct files_struct
  • 原文地址:https://www.cnblogs.com/stranger-/p/10330385.html
Copyright © 2011-2022 走看看