• 学习笔记——gauss消元法


    。。。看了好几篇博客,说得都挺好的。。。

    这里直接安利一篇讲得很棒的博客吧。。。

    http://blog.csdn.net/u010182633/article/details/45225179

    我们经常讲的是正常版递归上三角矩阵的gauss消元,这里上一份高斯——若尔当消元的代码,就是对角线矩阵消元

    复杂度O(n^3)

    //a 方程组对应的矩阵
    //n 未知数个数
    //l,ans 存储解,l[]表示是否为自由元
    //返回值:解空间的维数 
    
    inline int gauss(double a[][MAXN],double ans[],bool l[],const int& n){
        int res=0,r=0;
        for(int i=0;i<n;i++)
            l[i]=false;
        for(int i=0;i<n;i++){
            for(int j=r;j<n;j++)
                if(fabs(a[j][i])>EPS){
                    for(int k=i;k<n;k++)
                        swap(a[j][k],a[r][k]);
                    break;    
                }
            if(fabs(a[r][i])<EPS){
                ++res;
                continue;
            }
            for(int j=0;j<n;j++){
                if(j!=r && fabs(a[j][i])>EPS){
                    double tmp=a[j][i]/a[r][i];
                    for(int k=i;k<n;k++)
                        a[j][k]-=tmp*a[r][k];
                }
            }
            l[i]=true;++r;
        }
        for(int i=0;i<n;i++)
            if(l[i])
                for(int j=0;j<n;j++)
                    if(fabs(a[j][i])>0)
                        ans[i]=a[j][n]/a[j][i];
        return res;
    }
    View Code
  • 相关阅读:
    python 魔法方法
    wfst的compose算法
    文法和语言,理解克林闭包
    openfst常用命令
    Longest Substring Without Repeating Characters
    xgboost 实践
    决策树学习
    OPC UA的监控项、订阅、和通知
    限流及常用算法
    本体论与OWL
  • 原文地址:https://www.cnblogs.com/JimmyC/p/6596490.html
Copyright © 2020-2023  润新知