求助,jacobi迭代问题
我c语言学的不好,然后都不大会调试,这个作业马上要交了,我已经自己很努力了,但是依然不能得到结果方程组是:
8.6x+1.5+3.4z=1.9;
2.1x+9.8y+3.4z=6.7;
2.7x+1.8y+7.2z=2.4;
精确解是x=0.0498801697;y=0.617376037;z=0.160284261
我写的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double dmax(double a,double b,double c)
{
double m,max;
m=a>b?a:b;
max=m>c?m:c;
return max;
}
void main()
{
double a[3][3]={8.6,1.5,3.4,2.1,9.8,3.4,2.7,1.8,7.2};
double b[3]={1.9,6.7,2.4};
double x[3]={0},d[3]={0};
double temp;
double M=0;
int i,j,k,h;
for(k=0;M<0.00005;k++)
{
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(j!=i)
temp+=a[i][j]*d[j];
}
x[i]=(b[i]-temp)/a[i][i];
}
for(h=0;h<3;h++)
{
b[h]=x[h];
}
M=dmax(fabs(x[0]-0.0498801697),fabs(x[1]-0.617376037),fabs(x[2]-0.160284261));
printf("%lf",M);
}
printf("迭代次数: %d\n",k);
printf("x,y,z的值分别是%.5lf %.5lf %.5lf",x[0],x[1],x[2]);
}
求帮助 谢谢