任何人都可以提供一些帮助。我完全无法做到这一点。我试图做一些编码,但它根本不起作用。无论如何我已经包含了代码。反正它是不完整和错误的。
#include<stdio.h>
#include<math.h>
main()
{
int rows, columns, iter, i,j,k;
printf("enter the number of rows and columns:");
scanf("%d, %d",&rows, &columns);
double a[rows][columns], b[rows][1],x[rows][1];
printf("enter the elements of A matrix:");
for(i=0;i<rows;i++)
{
for(j=0;j<columns;j++)
scanf("%lf",&a[i][j]);
}
printf("\n enter the elements of B matrix:");
for(i=0,i<rows;i++)
scanf("%lf",&b[i][0]);
printf("\n");
for (iter=1; iter<rows; iter++)
{
for(i=iter;i<rows;i++)
b[i][0] = b[i][0]- a[k][iter-1]*(b[i-1][0]/a[iter-1][iter-1]);
for(j=iter-1,k=iter;j<columns;j++)
a[i][j] = a[i][j]-a[i-1][j]*(a[k][iter-1]/a[iter-1][iter-1]);
}
printf("the elements of the matrix A are now:");
for(i=0;i<rows; i++)
{
for(j=0; j<columns; j++)
printf("%lf",a[i][j]);
}
return(0);
}
此后必须进行替换。方程是[a] [x] = [b],我们必须找到给定[a]和[b]矩阵的x值。
答案 0 :(得分:1)
没有人使用这样的代码,它有严重的数值稳定性问题。使用LU-decomp是一种很好的方法,可以使用许多库。数字食谱,如果必须的话。
答案 1 :(得分:0)
int rows, columns, iter, i,j,k;
printf("enter the number of rows and columns:");
scanf("%d, %d",&rows, &columns);
double a[i][j], b[i],x[i];
使用i和j指定数组大小是一个非常值得怀疑的活动,因为i和j尚未初始化。
答案 2 :(得分:0)
我注意到的第一个问题是这个循环
for(i=0;i<=columns-1;i++)
{
for(j=0;j<=columns-1;j++)
{
scanf("%lf",&a[i][j]);
}
}
我猜这些columns
中的一个应该是rows
,而可能是i<=columns-1
中使用的那个。
此外,仅仅为了i<=columns-1
代替i < columns
而感兴趣,它们在所有重要的情况下应该是等效的。