#include<stdio.h>
#define n 3 /*n爲方程組係數矩陣的階數*/
int Gauss(float a[n][n],float b[n])
{
int i,j,k,flag=1;
float t;
for(i=0;i<n-1;i++)
{
if(a[i][i]==0)
{
flag=0;
break;
}
else
{
for(j=i+1;j<n;j++) /*消元過程開始*/
{
t=-a[j][i]/a[i][i];
b[j]=b[j]+t*b[i];
for(k=i;k<n;k++)
a[j][k]=a[j][k]+t*a[i][k];
}
}
}
return(flag);
}
void zg_matric(float a[n][n],float b[n]) /*輸出增廣矩陣*/
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%10f",a[i][j]);
printf("%10f",b[i]);
printf("/n");
}
printf("/n");
}
void main()
{
static float a[n][n]={{2,-1,-1},{3,4,-2},{3,-2,4}};
float b[n]={4,11,11};
float x[n]={0,0,0};
int i,j,flag;
zg_matric(a,b);
flag=Gauss(a,b);
if(flag==0) /*無解*/
printf("Gauss method dose not run.");
else /*迴帶過程開始*/
{
x[n-1]=b[n-1]/a[n-1][n-1];
for(i=n-2;i>=0;i--)
{
x[i]=b[i];
for(j=i+1;j<n;j++)
x[i]=x[i]-a[i][j]*x[j];
x[i]=x[i]/a[i][i];
}
for(i=0;i<n;i++) /*輸出方程組的解*/
printf("x%d=%11.7f/n",i+1,x[i]);
}
}
運行結果如下: