有人能帮我把这个高斯赛德尔迭代改成雅可比迭代吗?或者用这个程序里面的方程再做一个雅可比迭代也行

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<math.h>

#define DIM 6

#define MI 1000

#define EPSILON 1.0e-10

int gseidel(double A[DIM][DIM],double b[DIM],double  x[DIM])

{

static int first=0;

int i,j,k;

static double x1[DIM],norm;

norm=0.0;

if(first==0)

{

for(i=0;i<DIM;i++){

x[i]=rand();

norm=norm+x[i]*x[i];}

norm=sqrt(norm);

for(i=0;i<DIM;i++)x[i]=x[i]/norm;

first=1;

}

for(k=0;k<MI;k++)

{

for(i=0;i<DIM;i++)

{

x1[i]=b[i];

for(j=0;j<i;j++)x1[i]=x1[i]-A[i][j]*x1[j];

for(j=i+1;j<DIM;j++) x1[i]=x1[i]-A[i][j]*x[j];

x1[i]=x1[i]/A[i][i];}

norm=0.0;

for(i=0;i<DIM;i++)norm=norm+(x1[i]-x[i])*(x1[i]-x[i]);

norm=sqrt(norm);

for(i=0;i<DIM;i++)x[i]=x1[i];

if(norm<EPSILON) goto endd;

}

endd:return (k);

}

void main()

{

int i,itime,iter;

char ifdoyn;

static double A[DIM][DIM]= {{1,-0.25,-0.5,0,0,0},
{ -0.25,1,0,-0.5,0,0},
{ -0.25,0,1,-0.25,-0.25,0},
{ 0,-0.25,-0.25,1,0,-0.25},
{0,0,-1,0,2.05,-0.5},
{0,0,0,-1,-0.5,2.05},
{0,0,-1/2.05,0,1,-0.5/2.05},
{0,0,0,1/2.05,-0.5/0.25,1}};

static double x[DIM],b[DIM]={25.00,125.00,25.00,125.00,52.50,252.50,52.50/2.05,252.50/2.05};
itime=0;

printf("高斯-塞德尔迭代法\n");

again:iter=gseidel(A,b,x);

itime=itime+iter;

if(iter<MI) itime=itime+1;

printf("迭代次数%3d次\n",itime);

for(i=0;i<DIM;i++)printf("%15.10f",x[i]);

if(iter<MI)printf("成功\n");

else

{

printf("是否继续迭代?y/n");

ifdoyn==getchar();

if(ifdoyn=='y'||ifdoyn=='Y')goto again;

}}

参考一下: