高斯消元法(解齐次方程组)

来源:互联网 发布:淘宝买家两钻有什么用 编辑:程序博客网 时间:2024/06/05 06:25
#define eps 1e-10#define maxn 110double equ[maxn][maxn], ans[maxn]; int n;bool Gauss(){    for( int i = 0; i < n; i ++ ){        int pos = i;        double res = fabs(equ[i][i]);        for( int j = i + 1; j < n; j ++ )            if( fabs(equ[j][i]) > res )                pos = j, res = fabs(equ[j][i]);        if( res < eps ) return false;        if( pos != i ) for( int j = i; j<= n; j ++ )            swap(equ[i][j], equ[pos][j]);        for(  j = i + 1; j < n; j ++ ){            res = equ[j][i] / equ[i][i];            for( int k = i; k <= n; k ++ )                equ[j][k] -= res * equ[i][k];        }    }    for(  i = n - 1; i >= 0; i -- ) {        ans[i] = equ[i][n];        for( int j = n - 1; j > i; j -- )            ans[i] -= equ[i][j] * ans[j];        ans[i] /= equ[i][i];    }    return true;}