雅可比迭代法求解方程组
老师让写雅可比迭代法解方程组的算法,求大神指教啊!!!
[解决办法]
#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]);
}