正文

用Gauss列主元消元法解线性方程组2005-09-18 01:29:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wojiele/4869.html

分享到:

 #include<math.h>#include<stdio.h>#define NUMBER 20#define Esc   0x1b#define Enter 0x0d float A[NUMBER][NUMBER+1] ,ark;int flag,n;exchange(int r,int k);float max(int k);message(); main(){   float x[NUMBER];      /*此数组用于存放方程解*/   int r,k,i,j;   char celect;   clrscr();      printf("\n\n用Gauss列主元消元法解线性方程组");   printf("\n\n1.解方程组请按Enter.");   printf("\n\n2.退出程式请按Esc.");   celect=getch();   if(celect==Esc)     exit(0);   printf("\n\n 输入方程组的维数:n=");   scanf("%d",&n);     printf(" \n\n现在输入系数矩阵A和向量b:");   for(i=1;i<=n;i++)   {    printf("\n\n请输入a%d1--a%d%d系数和向量b%d:",i,i,n,i);          /*实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定*/     for(j=1;j<=n+1;j++)     /*将刚才输入的数存入数组*/    scanf("%f",&A[i][j]);   }   for(k=1;k<=n-1;k++)                          {    ark=max(k);    if(ark==0)                /*判断方程是否为线性方程,即是否合法*/    {      printf("\n\n此方程组不合法!");message();        }    else if(flag!=k)     exchange(flag,k);     for(i=k+1;i<=n;i++)     for(j=k+1;j<=n+1;j++)     A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];   }   x[n]=A[n][n+1]/A[n][n];   for( k=n-1;k>=1;k--)   {     float me=0;     for(j=k+1;j<=n;j++)     {       me=me+A[k][j]*x[j];     }       x[k]=(A[k][n+1]-me)/A[k][k];   }   for(i=1;i<=n;i++)   {     printf(" \n\nx%d=%f",i,x[i]);   }   message();} exchange(int r,int k)         /*交换行的矩函数*/{  int i;  for(i=1;i<=n+1;i++)    A[0][i]=A[r][i];  for(i=1;i<=n+1;i++)    A[r][i]=A[k][i];  for(i=1;i<=n+1;i++)    A[k][i]=A[0][i];} float max(int k)           /*比校系数大小的函数*/{  int i;  float temp=0;  for(i=k;i<=n;i++)    if(fabs(A[i][k])>temp)    {      temp=fabs(A[i][k]);      flag=i;    }  return temp;} message()                                       /*实现菜单选择的函数*/{  printf("\n\n 继续运算按 Enter ,退出程式按 Esc!");  switch(getch())  {   case Enter: main();   case Esc: exit(0);   default:{printf("\n\n不合法的输入!");message();}  }}   

阅读(6828) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册