#include<stdio.h>
	#include<math.h>
 #define N 4 /*定义方程组系数矩阵的阶数N*/
	static float a[N][N]={{1.5,0.5,2.5,-3},{6,0.6,0,-5},{1,1.2,14,1},{-3,-5,1,11.1}};/*输入被求解线性方程组*/
 static float b[N]={14.4095,16.166,24.628,-5.8256};
	float x[N]={0,0,0,0}; /*定义初始值*/
 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 augm_matrix(float a[N][N],float b[N]) /*打印增广矩阵*/
	{
        int i,j;
	       printf("Linear equations:\n");
        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");
 }
	main()
 {
	       int i,j,flag;
        augm_matrix(a,b);
	       flag=Gauss(a,b);
        if(flag==0) /* 无解*/
	              printf("No result could be obtained.");
        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];
	              }
               printf("Results:\n");
	              for(i=0;i<N;i++) /* 输出方程组的解*/
                      printf(" x%d=%f\n",i+1,x[i]);
	              system("pause");
        }
	}
 参考资料:
	[1] 王汉青. 暖通空调流体流动数值计算方法与应用[M]. 北京: 科学出版社, 2013.10.
搜索

 
  
  
  
  
 