c编的sor迭代法解线性方程组的程序
2010-12-15 20:33
#include
#include
double norm(double *x,double *y,int n)
{
int i=0;
double s=0;
for(i=0;i
s=s+fabs(x[i]-y[i])*fabs(x[i]-y[i]);
return sqrt(s);
}
void Jacobi(double A[],double b[],double x0[],double x[],double w,int n1)
{
int n=100;//最大迭代次数
double ee=0.0001,s=0;//精度
int i,j,k;
for(i=1;i
for(j=0;j
for(j=0;j
s=0;
for(k=0;k
x0[j]=x[j]+w*(b[j]-s)/A[j*n1+j];
}
if (norm(x,x0,n1)
break;
}
}
int main()
{
double a[3][3]={{8,-1,1},{2,10,-1},{1,1,-5}};
double b[3]= {1,4,3};
double x0[3]= {0,0,0.0};
double x[3]= {0,0,0},w=1.005;
int n1=3,i;
Jacobi(a,b,x0,x,w,n1);
for (i=0;i
printf("x(%d)=%6.4f\n",i+1,x[i]);
system("pause");
return(0);
}
c编的sor迭代法解线性方程组的程序
2010-12-15 20:33
#include
#include
double norm(double *x,double *y,int n)
{
int i=0;
double s=0;
for(i=0;i
s=s+fabs(x[i]-y[i])*fabs(x[i]-y[i]);
return sqrt(s);
}
void Jacobi(double A[],double b[],double x0[],double x[],double w,int n1)
{
int n=100;//最大迭代次数
double ee=0.0001,s=0;//精度
int i,j,k;
for(i=1;i
for(j=0;j
for(j=0;j
s=0;
for(k=0;k
x0[j]=x[j]+w*(b[j]-s)/A[j*n1+j];
}
if (norm(x,x0,n1)
break;
}
}
int main()
{
double a[3][3]={{8,-1,1},{2,10,-1},{1,1,-5}};
double b[3]= {1,4,3};
double x0[3]= {0,0,0.0};
double x[3]= {0,0,0},w=1.005;
int n1=3,i;
Jacobi(a,b,x0,x,w,n1);
for (i=0;i
printf("x(%d)=%6.4f\n",i+1,x[i]);
system("pause");
return(0);
}