#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h>
#define m 3
#define n 3
#define w 1.24
double A[n][m]={4,3,0,3,4,-1,0,-1,4};
double b[m]={16,20,-12},x[100][m]={0,0,0},t[3];
int i,j;
double f(int p,double x1,double x2,double x3,int k)
{
return x[p][k]+w/A[k][k]*(b[k]-A[k][0]*x1-A[k][1]*x2-A[k][2]*x3);
}
void main()
{
for(i=0;i<100;i++)
{
for(j=0;j<m;j++)
{
x[i+1][j]=f(i,x[i][0],x[i][1],x[i][2],j);
printf("第%d次迭代结果x[%d]=%lf\n",i+1,j+1,x[i+1][j]);
t[j]=x[i][j];
x[i][j]=x[i+1][j];
if(fabs(x[i+1][0]-t[0])<=0.5E-4&&fabs(x[i+1][1]-t[1])<=0.5E-4&&fabs(x[i+1][2]-t[2])<=0.5E-4)
{
printf("在误差允许的范围内x1=%f\nx2=%f\nx3=%f\n",x[i+1][0],x[i+1][1],x[i+1][2]);
Sleep(1000);
exit(0);
}
}
}
}