安徽大学(线性代数第一章详细答案)

来源:互联网 发布:猫和老鼠胡桃夹子知乎 编辑:程序博客网 时间:2024/04/30 10:12

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
附录1

#pragma warning(disable:4996)#include <cstdio>#include <cmath>#define MAXN 100#define zero(x) (fabs(x)<1e-10)struct mat{    int n, m;    double data[MAXN][MAXN];};double det(const mat &a){    int i, j, k, sign = 0;    double b[MAXN][MAXN], ret = 1, t;    if (a.n != a.m) return 0;    for (i = 0; i<a.n; i++)        for (j = 0; j<a.m; j++)            b[i][j] = a.data[i][j];    for (i = 0; i<a.n; i++){//行标+列标        if (zero(b[i][i])){            for (j = i + 1; j<a.n; j++)//行标                if (!zero(b[j][i]))                    break;            if (j == a.n) return 0;            for (k = i; k<a.n; k++)//列标                t = b[i][k], b[i][k] = b[j][k], b[j][k] = t;            sign++;        }        ret *= b[i][i];        for (k = i + 1; k<a.n; k++)//列标            b[i][k] /= b[i][i];        for (j = i + 1; j<a.n; j++)//行标            for (k = i + 1; k<a.n; k++)//列标                b[j][k] -= b[j][i] * b[i][k];    }    if (sign & 1) ret = -ret;    return ret;}int main(){    mat a;    int i, j, n;    while (scanf("%d", &n), n){        a.n = a.m = n;        for (i = 0; i<n; i++)            for (j = 0; j<n; j++)                scanf("%lf", &a.data[i][j]);        printf("det a : %.2lf\n", det(a));    }    return 0;}

这里写图片描述

这里写图片描述

这里写图片描述

0 0
原创粉丝点击