矩阵行列式

来源:互联网 发布:java 字符串乱码 编辑:程序博客网 时间:2024/04/30 15:33



double b[maxn][maxn];#define zero(x) ((x>0? x:-x)<1e-15)double det(double a[][maxn],int n) {    int i, j, k, sign = 0;    double ret = 1, t;    for (i = 0; i < n; i++)        for (j = 0; j < n; j++)            b[i][j] = a[i][j];    for (i = 0; i < n; i++) {        if (zero(b[i][i])) {            for (j = i + 1; j < n; j++)                if (!zero(b[j][i]))                    break;            if (j == n)                return 0;            for (k = i; k < n; k++)                swap(b[i][k], b[j][k]);            sign++;        }        ret *= b[i][i];        for (k = i + 1; k < n; k++)            b[i][k] /= b[i][i];        for (j = i + 1; j < n; j++)            for (k = i + 1; k < n; k++)                b[j][k] -= b[j][i] * b[i][k];    }    if (sign & 1)        ret = -ret;    return ret;}


0 0
原创粉丝点击