如图上面是我程序算出来的值,前面都还好,就是在step3最后一步的地方,矩阵的第三列那里第一行第二行没有变成0,不知道是计算步骤的哪里出了问题
#include
#define N 100
void output(int n, int st, double a[100][N], double b[100])
{
int i, j;
printf("\n\nStep %3d\n", st);
for (i = 1;i <= n;i++) {
for (j = 1;j <= n;j++)
printf(" %8.2f", a[i][j]);
printf(" %8.2f\n", b[i]);
}
}
int main(void)
{
int i, j, k, n, q, w, e;
double p;
double a[N][N], b[N], x[N];
printf("namber of demension(n) =");
scanf("%d", &n);
for (i = 1;i <= n;i++) {
for (j = 1;j <= n;j++) {
printf("a[%d][%d] =", i, j);
scanf("%lf", &a[i][j]);
}
printf("b[%d] =", i);
scanf("%lf", &b[i]);
}
printf("\n\nGauss eliminaition method\n\n");
printf("input data\n");
for (j = 1;j <= n;j++)
printf(" x%d", j);
printf(" rhs\n");
for (i = 1;i <= n;i++) {
for (j = 1;j <= n;j++)
printf(" %8.2f", a[i][j]);
printf(" %8.2f\n", b[i]);
}
for (i = 1;i <= n;i++) {
p = a[i][i];
for (j = i;j <= n;j++)
a[i][j] = a[i][j] / p;
b[i] = b[i] / p;
for (k = 1;k <= n;k++) {
if (k != i) {
q = a[k][i];
for (j = i;j <= n;j++)
a[k][j] = a[k][j] - q * a[i][j];
b[k] = b[k] - q * b[i];
}
}
output(n, i, a, b);
}
printf("\n\n solution :\n\n");
for (i = 1; i <= n; i++)
printf(" x[%d] = b[%d] = %8.2f \n", i, i, b[i]);
return 0;
}