雅可比迭代法解线性方程组
雅可比迭代法解线性方程组
#include"stdio.h"
#include"math.h"
#include"alloc.h"
Jacobidiedai(n,a,b,x)
int n;
double *a,*b,*x;
{
int i,j;
double *x0,m=0,eps;
x0=malloc(n*sizeof(double));
for(i=0;i x0[i]=x[i]; while(1) { for(i=0;i { for(j=0;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 { eps=fabs(x[0]-x0[0]); if(eps eps=fabs(x[i]-x0[i]); } if(eps<1e-3) return 1; for(i=0;i x0[i]=x[i]; } free(x0); } main() { int i; double a[3][3]={{5,2,1},{-1,4,2},{2,-3,10}},b[3]={-12,20,3},x[3]={0,0,0}; Jacobidiedai(3,a,b,x); for(i=0;i<3;i++) printf("x[%d]=%f\n",i,x[i]); }
相关主题