poj2947

时间:2021-05-30 23:13:46

高斯消元法模版题,但套模版没用。。

先回顾一下线性代数的知识。

若要求解如下方程:

poj2947

首先,其系数矩阵为

poj2947

然后,其增广矩阵为:

poj2947

然后若要求解这个方程,首先将第一行第一个元素化为1,即:第一行乘以1/3。

poj2947

然后将第二、三行减去第一行五倍:

poj2947

扯淡了不是。。太麻烦了。。。额,我不会告诉你我用matlab做的。。

a = [3,2,4; 5, 3, 1; 10, 2,2];

b = [10;1;3];

x = inv(a) * b;

x = a\b;

然后这个方程的解是-0.2059   -0.2500    2.7794。。。

好了废话少说。

题目是要求建立一个方程组:

(mat[1][1]*x[1] + mat[1][2]*x[2] + … + mat[1][n]*x[n])%7 =mat[1][n+1]

(mat[2][1]*x[1] + mat[2][2]*x[2] + … + mat[2][n]*x[n])%7 =mat[2][n+1]

(mat[m][1]*x[1] + mat[m][2]*x[2] + … + mat[m][n]*x[n])%7 =mat[m][n+1]

如果有解输出解得个数,如果无解Inconsistent data.无穷多组解Multiple solutions.

扯一句,什么时候无解?

系数矩阵的秩 不等于 增广矩阵的秩 时。反映在程序上就是:

for (i = row; i < N; i++)
{
if (a[i][M] != 0)
{
printf("Inconsistent data.\n");
}
}

什么时候无穷多解?

当增广矩阵的秩小于行列式的行数的时候。 反映在程序上就是:

if (row < M)
{
printf("Multiple solutions.\n");
}

好了,程序如下:

)%MOD;
            }
            a[i][M] = last;
        }
        Guass();
    }
}

相关文章