xiaofanyy 10月10日 平静 的说 我的生活没颜色了。晕了。迷茫了。   小鱼游 10月10日 悲伤 的说 额,突然觉得人生失去了方向~~~~~   fay_meng 10月9日 平静 的说 冒泡下,提高知名度...   zdk6105 10月9日 平静 的说 哈哈,何为缘?聚散皆为缘   一堆泪水 10月9日 郁闷 的说 期待有缘人。。。   小鱼游 10月8日 平静 的说 干了一整天的活,好累哟   水木落 10月8日 平静 的说 9日8点40分,离校后第一次掠过杨凌。。。。。。   逍遥散人 10月6日 平静 的说 终于回杨凌了 心情还是那样没变化 闷了   荦荦夕颜 10月6日 平静 的说 武汉归来 带给大家一首好听的歌 擦肩而过   知多少 10月6日 平静 的说 输入要叽歪的内容_   [查看全部 328 条唧唧歪歪...]


打印

这个程序怎么写,各位帮个忙啦!!

这个程序怎么写,各位帮个忙啦!!

有C编写一个顺序高斯消去法解方程组的程序!
请大家帮我一下啊,要考试了
谢谢各位好心人~~~~~~~~

TOP

顺序高斯消去法的思路是
按自然顺序逐步消去未知元,将方程组转化为与其同解的三角形,再回代
顺序消元过程的乘除法将会产生大量的舍入误差, 往往使结果很不可靠.你还不如用列主元素高斯消去法呢~

TOP

要是列主元消去法,我有现成的程序

TOP

用列主元消去法解方程组*/
(1)
#include <stdio.h>
#include <math.h>
#include <alloc.h>
void main()
{
  int i;
  float *x;
  float c[4][5]={{1,1,0,3,4},
            {2,1,-1,1,1},
            {3,-1,-1,3,-3},
            {-1,2,3,-1,4}
            };
  float *ColPivot(float *,int);
  x=ColPivot(c[0],4);
  clrscr();
  for(i=0;i<=3;i++)
      printf("x[%d]=%f\n",i+1,x);
  getch();
}

float *ColPivot(float *c,int n)
{
   int i,j,t,k;
   float *x,p;
   x=(float *)malloc(n*sizeof(float));
   for(i=0;i<=2;i++)
   {
      k=i;
      for(j=i+1;j<=n-1;j++)
        if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))
           k=j;
      if(k!=i)
        for(j=i;j<=n;j++)
        {
           p=*(c+i*(n+1)+j);
           *(c+i*(n+1)+j)=*(c+k*(n+1)+j);
           *(c+k*(n+1)+j)=p;
        }
       for(j=i+1;j<=n-1;j++)
       {
        p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
        for(t=i;t<=n;t++)  
           *(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
       }
   }
   for(i=n-1;i>=0;i--)
   {
      for(j=n-1;j>=i+1;j--)
        (*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
      x=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
   }
   return x;
}

TOP