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