0
只有當系統具有唯一的解決方案時,此代碼纔有效。當沒有解決方案或無限多的解決方案時,應該打印出「沒有獨特的解決方案」。但下面的代碼打印出「nan」或「inf」。我怎樣才能做到這一點?C中的高斯消除法
#include<stdio.h>
int main()
{
int i,j,k,n;
double 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("%lf",&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=%0.3f\n",i,x[i]);
}
return(0);
}
您需要添加除以零的支票。 – aschepler
當然存在一個非唯一的解決方案時,代碼會遇到'/ A [j] [j]'0.0的分割。 '/ 0.0'也由於舍入問題而發生。 – chux