高斯消元法(解齐次方程组)
来源:互联网 发布:淘宝买家两钻有什么用 编辑:程序博客网 时间: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;}