列主元Gauss消去法解线性方程组(C语言)

原创 2012年03月30日 18:41:20

//Gauss消去法解线性方程组
//参考教材《计算方法教程》第二版,西安交通大学出版社
#include<stdio.h>
#include<math.h>

int main(void)
{
 float A[7][7]={{3,-5,6,4,-2,-3,8},
     {1,1,-9,15,1,-9 ,2},
     {2,-1,7,5,-1,6,11},
     {-1,1,3,2,7,-1,-2},
     {4,3,1,-7,2,1,1},
     {2,9,-8,11,-1,-4,-1},
     {7,2,-1, 2,7,-1,9}};
 float b[7]={11,2,29,9,5,8,25};
 float x[7]={0};
 float Aik,S,temp;
 int i,j,k;
 float max;//列主元的绝对值
 int col;//列主元所在的行
 int size=7;

 printf("A[][]\n");
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
   printf("%f ",A[i][j]);
  printf("\n");
 }
 printf("b[]\n");
 for(i=0;i<size;i++)
  printf("%f ",b[i]);
 printf("\n\n");

 //-------消去过程---------
 for(k=0;k<size-1;k++)
 {
  max=fabs(A[k][k]);
  col=k;
  //查找最大元素所在的行
  for(i=k;i<size;i++)
  {
   if(max<fabs(A[i][k]))
   {
    max=fabs(A[i][k]);
    col=i;
   }
  }
  printf("col:%d\n",col);
  for(j=k;j<size;j++)
  {
   temp=A[col][j];
   A[col][j]=A[k][j];
   A[k][j]=temp;
  }
  temp=b[col];b[col]=b[k];b[k]=temp;
  
  if(!A[k][k])
   return -1;
  for(i=k+1;i<size;i++)
  {
   Aik=A[i][k]/A[k][k];
   for(j=k;j<size;j++)
   {
    A[i][j]=A[i][j]-Aik*A[k][j];
   }
   b[i]=b[i]-Aik*b[k];
  }
 }
 //消去的结果
 printf("A[]\n");
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
   printf("%f ",A[i][j]);
  printf("\n");
 }
 printf("b[]\n");
 for(i=0;i<size;i++)
  printf("%f ",b[i]);
 printf("\n\n");

 //回代过程
 x[size-1]=b[size-1]/A[size-1][size-1];
 for(k=size-2;k>=0;k--)
 {
  S=b[k];
  for(j=k+1;j<size;j++)
  {
   S=S-A[k][j]*x[j];
  }
  x[k]=S/A[k][k];
 }
 //solution
 printf("The solution x[]=\n");
 for(i=0;i<size;i++)
  printf("%f ",x[i]);
 return 0;
}

列主元高斯消去法(C语言)

高斯消元法是将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其代人到另一方程中,这就消去了一未知数,得到一解;或将方程组中的一方程倍乘某个常数加到另外一方程中去,也可达到消去一未知数的目的...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

列主元消元法c语言实现

列选主元消元法 /* *Gauss.cpp *功能:列选主元消元法 课本3.5为例 *时间:2013.4.1 */ #include #include"Gass.h" //高斯消元法(列选主元) v...

实验一:Guass列选主元消去法之C语言代码

虽然数值老师让我们用图形化进行编程,但由于自己对于GUI编程了解的比较少,这里暂时还是在dos窗口实现吧.实验题目: 1,Guass列选主元消去法|2.5 2.3 -5.1| | x1 | ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

列选主元Guass消元法求解方程组+c语言

学习过数分的都知道,列选主元Guass消元法求解方程组的求解步骤和过程: 首先选择需消元的列的最大值,进行交换,然后对当前列进行消元;消元完成后进行回代求解方程组的解。 实现代码如下: #includ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

列主元消去法求解线性方程组(C++实现)

接着上次的继续,上次使用了高斯消元法http://blog.csdn.net/qq_26025363/article/details/53027926,但是,在消元过程中,无法使主元素a(ii)≠0,...

高斯消元法解线性方程组(C++实现)

最近在学数值分析,正好学到求解线性方程组。就自己动手简单实现了一下。关于本算法的原理可以在《数值分析》第5版(李庆扬编),对应于该书的P145页,详细讲解了公式。因本人时间有限,暂时不详细编辑公式,等...

Gauss消去法求线性方程组

给定线性方程组的系数,求解方程组是否有解。 1,找到系数矩阵行列为(k, k)的块绝对值最大的数作为主元,记下行和列,分别与第k列交换,与第k行交换,(行跟行交换,列跟列交换)。 2,交换后,主元...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:列主元Gauss消去法解线性方程组(C语言)
举报原因:
原因补充:

(最多只允许输入30个字)