gauss.c

来自「这是一个gauss算法实现的C代码。本算法采用的是具有行交换的列主元素消去法。」· C语言 代码 · 共 51 行

C
51
字号
# include “studio.h”
# include “math.h”
void main( )
{  float a[n][n], b[n],det,a;
   int i,j,k,ik;
   printf(“put in the element of A”);
   for (I=0;I<n;I++)
for(j=0;j<n;j++)
scanf (“%f”,&a[I][j]);
printf (“put in the element of b”);
for(I=0;I<n;I++)
   scanf (“%f”,&b[I]);
for (k=0;k<n-1;k++)
{ det=1,a=a[k][k],ik=k;
for (I=k;I<n-1;I++)
   if (abs(a)<abs(a[I][k])) ik=I;
if (a[ik][k]==0) 
{ printf (“error”);exit(1); }
if (ik!=k)
    { for (j=k;j<n-1;j++)
         { a=a[k][j];
           a[k][j]=a[ik][j];
           a[ik][j]=a;
          }
      a=b[k];
      b[k]=b[ik];
      b[ik]=a;
     } 
det*=-1;
for (I=k+1;I<n;I++)
   a[I][k]/=a[k][k];
for (I=k+1;I<n;I++)
   { for (j=k+1;j<n;j++)
a[I][j]-= a[I][k]*a[k][j];
b[I]-= a[I][k]*b[k];
 }
det*= a[k][k];
}
//回代求解
b[n]/= a[n][n];
for (I=n-2;I>=0;I--)
   { for (j=I+1;j<n;j++)
        b[I]-= a[I][j]*b[j];
     b[I]/= a[I][I];
    }
det*= a[n][n];
for (I=0;I<n;I++)
   printf (“x[I]=%f/n”,b[I]);
printg(“det=%f/n”,det);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?