WNJXYK
Thanks to the cruel world.
WNJXYKのBlog
高斯消元模版
高斯消元模版

高斯消元求浮点数方程解

namespace Gauss{
    const int MAXN=500+50;
    const double EPS=1e-8;
    int equ, var;
    double matrix[MAXN][MAXN];
    double value[MAXN];
    void init(){ memset(matrix, 0, sizeof(matrix)); }

    void print(){
        printf("-----------------------\n");
        for (int i=0; i<equ; i++){
            for (int j=0; j<=var; j++){
                printf("%.2f ", matrix[i][j]);
            }
            printf("\n");
        }
    }

    int gauss(){
        for (int k=0, col=0; k<equ && col<var; k++, col++){
            int max_r=k;
            for (int i=k+1; i<equ; i++) if (fabs(matrix[i][col])>fabs(matrix[max_r][col])) max_r=i;
            if (fabs(matrix[max_r][col])<EPS) return false;
            for (int j=col; j<=var; j++) swap(matrix[k][j], matrix[max_r][j]);
            for (int j=col+1; j<=var; j++) matrix[k][j]/=matrix[k][col];
            matrix[k][col]=1;
            for (int i=0; i<equ; i++){
                if (i==k) continue;
                for (int j=col+1; j<=var; j++) matrix[i][j]-=matrix[k][j]*matrix[i][col];
                matrix[i][col]=0;
            }
            //print();
        }
        for (int i=0; i<equ; i++) value[i]=matrix[i][var];
        return true;
    }
}
赞赏
https://secure.gravatar.com/avatar/f83b57c055136369e9feba5d6671d6b5?s=256&r=g

WNJXYK

文章作者

一个蒟蒻

推荐文章

发表评论

textsms
account_circle
email

WNJXYKのBlog

高斯消元模版
高斯消元求浮点数方程解 namespace Gauss{ const int MAXN=500+50; const double EPS=1e-8; int equ, var; double matrix[MAXN][MAXN]; double value[MAXN]; vo…
扫描二维码继续阅读
2018-10-11
<--! http2https -->