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 + -
显示快捷键?