首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

雅可比迭代法求解方程组,该如何解决

2012-12-29 
雅可比迭代法求解方程组老师让写雅可比迭代法解方程组的算法,求大神指教啊!!![解决办法]#include malloc.

雅可比迭代法求解方程组
老师让写雅可比迭代法解方程组的算法,求大神指教啊!!!
[解决办法]

#include <malloc.h>
#include"stdio.h"
#include"math.h"
 //int n;
 //double *a,*b,*x;
int Jacobidiedai(int n,double a[],double b[],double x[])
{
    int i,j;
    double *x0,m=0,eps;
    x0=(double*)malloc(n*sizeof(double));
    for(i=0;i<n;i++)
       x0[i]=x[i];
    while(1)
    {
       for(i=0;i<n;i++)
       {
  for(j=0;j<n;j++)
     m+=a[i*n+j]*x0[j];
  m-=a[i*n+i]*x0[i];
  x[i]=(b[i]-m)/a[i*n+i];
  m=0;
       }
       for(i=1;i<n;i++)
       {
  eps=fabs(x[0]-x0[0]);
  if(eps<fabs(x[i]-x0[i]))
     eps=fabs(x[i]-x0[i]);
}
       if(eps<1e-5) return 1;
       for(i=0;i<n;i++)
          x0[i]=x[i];
    }
    free(x0);
}
 
void main()
{
    int i;
    double a[9]={10 ,-2,-2,-2,10,-1,-1,-2,3},b[3]={1,0.5,1},x[3]={0,0,0};
    Jacobidiedai(3,a,b,x);
    for(i=0;i<3;i++)
       printf("x[%d]=%f\n",i,x[i]);
}


楼主可以参考试试,看对你有没有用

热点排行