加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

关于Jacobi迭代法的实例应用

(2007-10-19 15:57:23)
标签:

知识/探索

 求方程组的解: 
         8X1 - 3X2 +  2X3  = 20
         4X1 + 11X2 -  X3  = 33
         2X1 +   X2 + 4X3 =  12

#include<stdio.h>
#include<math.h>
 /**********迭代求根*********/
 double jacobi(double *x)
   {
        double x_new[3];

        double error;
        int i;

          error=0.0;

            x_new[0]=0.125*(20+3*x[1]-2*x[2]);
            error=error+fabs(x[0]-x_new[0]);

          

            x_new[1]=(33-4*x[0]+x[2])/11;
            error=error+fabs(x[1]-x_new[1]);

         

            x_new[2]=(12-2*x[0]-x[1])/4;
            error=error+fabs(x[2]-x_new[2]);

       for(i=0;i<3;i++)
       *(x+i)=*(x_new+i);


      return error;
   }

/**************main**************/

   main()
  {
   double x[3];
   double tol;
   int i;
   int k,tmax;
      tmax=1000;
      k=0;
      tol=1e-6;
   for(i=0;i<3;i++)
       x[i]=0.0;
   while(jacobi(x)>=tol&&k<tmax)
     {
            k++;

            printf("changing :  x1=%f  x2=%f  x3= %f",x[0],x[1],x[2]);
            printf("   %d  times\n",k);
     }
      printf("\n Roots are:  x1=%f  x2=%f  x3=%f\n\n",x[0],x[1],x[2]);

     return 0;
  }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有