我知道我听起来很愚蠢,但我真的需要了解高斯消除c程序。我已经尝试理解编码了,但是仍然会因为逐行读取代码而感到困惑。尤其是for(j = 1; j< = n; j ++)循环。
#include<stdio.h>
int main()
{
int i,j,k,n;
float A[20][20],c,x[10];
printf("\nEnter the size of matrix: ");
scanf("%d",&n);
printf("\nEnter the elements of augmented matrix row-wise:\n");
for(i=1; i<=n; i++)
{
for(j=1; j<=(n+1); j++)
{
printf(" A[%d][%d]:", i,j);
scanf("%f",&A[i][j]);
}
}
for(j=1; j<=n; j++)
{
for(i=1; i<=n; i++)
{
if(i!=j)
{
c=A[i][j]/A[j][j];
for(k=1; k<=n+1; k++)
{
A[i][k]=A[i][k]-c*A[j][k];
}
}
}
}
printf("\nThe solution is:\n");
for(i=1; i<=n; i++)
{
x[i]=A[i][n+1]/A[i][i];
printf("\n x%d=%f\n",i,x[i]);
}
return(0);
}
答案 0 :(得分:1)
举一个例子增强矩阵
1 1 1 | 5
2 3 5 | 8
4 0 5 | 2
主要目的是制作矩阵0的所有元素,除了位于i == j的位置的元素。
所以在第二个for循环中,当if条件第一次为真i = 2 j = 1时,A [2] [1] = 2
所以为了使A [2] [1] = 0,我们必须减去2.这是我们从c=A[i][j]/A[j][j];
获得的2因此我们将执行 R2-2R1 (row2-2 * row1)操作A[i][k]=A[i][k]-c*A[j][k];
同样地,对所有行执行操作。