您的位置:首页 > 其它

浮点型高斯消元模板--只存在唯一解

2017-07-29 22:10 381 查看
void gauss(Matrix A, int n) {

    int i, j, k, r;

    for(i = 0; i < n; i++) {

        r = i;

        for(int j = i + 1; j < n; j++) {

            if(fabs(A[j][i]) > fabs(A[r][i])) r = j;

        }

        if(r != i) for(j = 0; j <= n; j++) swap(A[r][j], A[i][j]);

        for(int k = i+1; k <= n; k++)   A[i][k] /= A[i][i];

        A[i][i] = 1;

        for(k = i+1; k < n; k++)

        if(k!=i){

            double f = A[k][i] / A[i][i];

            for(j = i; j <= n; j++) A[k][j] -= f * A[i][j];

        }

    }

    for(int i = n-1; i >=0; i--){

        for(int j = i-1; j >= 0; j--){

            double f = A[j][i]/A[i][i];

            A[j][i] -= f*A[i][i];

            A[j]
-= f*A[i]
;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: