未完成的c程序高斯 - 乔丹消除

时间:2016-11-23 04:58:05

标签: c for-loop matrix

我知道我听起来很愚蠢,但我真的需要了解高斯消除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);
}

1 个答案:

答案 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];

同样地,对所有行执行操作。