雅克比迭代法

#include
#include
#include
#include
#define EPS 1e-6
#define MAX 100
float *Jacobi(float a[3][4],int n)
{
float *x,*y,s;
double epsilon;
int i,j,k=0;
x=(float *)malloc(n*sizeof(float));
y=(float *)malloc(n*sizeof(float));
for(i=0;iwhile(1)
{
epsilon=0;
k++;
for(i=0;i{s=0;
for(j=0;j{if(j==i) continue;
s+=a[i][j]*x[j];
}
y[i]=(a[i][n]-s)/a[i][i];
epsilon += fabs(y[i]-x[i]);
}
if(epsilon < EPS)
{
printf("迭代次数为:%d\n",k);
return y;
}
if(k>=MAX)
{printf("The Method is disconvergent");return y;}
for(i=0;i}
}
main()
{int i,j; float a[3][4];
float *x;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
}

x=(float *)malloc(3*sizeof(float));
x=Jacobi(a,3);
//clrscr();
for(i=0;i<3;i++)printf("x[%d]=%f\n",i,x[i]);
getch();
}

相关文档
最新文档