zoukankan      html  css  js  c++  java
  • 高斯消元


    高斯消元 - qhn999 - 码代码的猿猿




    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>

    using namespace std;

    const double eps=1e-9;

    double a[4][5]={{1,-1,-2,-5,10},{-2,7,6,-12,6},{3,-2,-5,-17,31},{-5,-2,9,27,-63}};
    double ans[10];
    bool l[10];

    int solve(double a[][5],bool l[],double ans[],const int &n)
    {
        int res=0,r=0;
        for(int i=0;i<n;i++)
        {
            l=false;
        }
        for(int i=0;i<n;i++)
        {
            for(int j=r;j<n;j++)
                if(fabs(a[j])>eps)
                {
                    for(int k=i;k<=n;k++)
                             swap(a[j][k],a
    [k]);

                    break;
                }
            if(fabs(a
    )<eps)
            {
                 res++; continue;
            }
            for(int j=0;j<n;j++)
                if(j!=r&&fabs(a[j])>eps)
                {
                    double tmp=a[j]/a
    ;
                    for(int k=i;k<=n;k++)
                        a[j][k]-=tmp*a
    [k];
                }
            l=true; r++;
        }

        for(int i=0;i<n;i++)
        {
            if(l)
                for(int j=0;j<n;j++)
                if(fabs(a[j])>eps)
                   ans=a[j][n]/a[j];
        }

        return res;
    }

    int main()
    {
        cout<<solve(a,l,ans,4)<<endl;

        for(int i=0;i<4;i++,putchar(10))
            for(int j=0;j<5;j++)
            {
               if(fabs(a[j])<eps) a[j]=0;
               cout<<a[j]<<" ";
            }

        for(int i=0;i<4;i++,putchar(10))
            cout<<"x"<<i<<"  "<<ans;

        return 0;
    }


    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>

    using namespace std;

    const double eps=1e-8;

    void gauss(double a[][101],double ans[],const int n)
    {
        int r=0;
        for(int i=0;i<n;i++)
        {
            for(int j=r;j<n;j++)
            {
                if(fabs(a[j])>eps)
                {
                    for(int k=i;k<=n;k++)
                    {
                        swap(a[j][k],a
    [k]);
                    }
                    break;
                }
            }
            if(fabs(a
    )<eps) continue;
            for(int j=0;j<n;j++)
            {
                if(j!=r&&fabs(a[j])>eps)
                {
                    double tmp=a[j]/a
    ;
                    for(int k=i;k<=n;k++)
                    {
                        a[j][k]-=tmp*a
    [k];
                    }
                }
            }
            r++;
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
               if(fabs(a[j])>eps)
               {
                   ans=a[j][n]/a[j];
                   if(fabs(ans)<eps)
                      ans=0;
               }
        }
    }

    int main()
    {
        int n;double a[103][101],ans[101];
        cin>>n;
        for(int i=0;i<n;i++)
            for(int j=0;j<=n;j++)
              cin>>a[j];
        gauss(a,ans,n);

        for(int i=0;i<n;i++,putchar(10))
            cout<<i<<" : "<<ans;

        return 0;
    }

    /*
    3
    2 1 -1 8
    -3 -1 2 -11
    -2 1 2 -3
    */

    * This source code was highlighted by YcdoiT. ( style: Default )
  • 相关阅读:
    kernel_size
    pytorch:修改预训练模型
    Python yield使用浅析
    respberry2b + android5.1
    android中调用c++文件并转为so
    图像灰度化
    图像的高斯平滑滤波
    历届试题 分考场
    头发啊头发
    历届试题 合根植物
  • 原文地址:https://www.cnblogs.com/CKboss/p/3350921.html
Copyright © 2011-2022 走看看