高斯消元模板

来源:互联网 发布:vb期末考试题库 编辑:程序博客网 时间:2024/06/05 19:26
int Gauss(int equ,int var){//equ方程个数,var变量个数    int row,col;    for(row=0,col=0;col<var&&row<equ;col++,row++){        int max_r=row;        for(int i=row+1;i<equ;i++){            if(fabs(A[i][col])>fabs(A[max_r][col])){                max_r=i;            }        }        if(max_r!=row){            for(int j=col;j<var+1;j++)                swap(A[row][j],A[max_r][j]);        }        if(fabs(A[row][col])<eps){            row--;continue;        }        for(int i=row+1;i<equ;i++){            if(fabs(A[i][col])<eps)continue;            for(int j=col+1;j<var+1;j++){                A[i][j]=(A[i][j]*A[row][col]-A[i][col]*A[row][j])/A[row][col];            }            A[i][col]=0;        }    }    for(int i=row;i<equ;i++){        if(fabs(A[i][col])>eps)return -1;    }    if(row<var)return 0;    for(int i=var-1;i>=0;i--){//计算唯一解。        double tmp=0;        for(int j=i+1;j<var;j++){            tmp+=A[i][j]*x[j];        }        x[i]=(A[i][var]-tmp)/A[i][i];    }    return 1;}

0 0