#include<stdio.h>
#include<math.h>
#define EPS 1E-6 /*定义迭代误差,可根据实际需要修改*/
/*高斯赛德尔迭代法*/
int GaussSeidel(int n, /*方程组大小*/
double *a, /*系数矩阵地址,按一级指针处理,直接用矩阵的第一个元素地址传递参数*/
double *b, /*方程组右边项地址*/
double *x) /*求得的变量x的地址*/
{
int i,j;
double t,u,m=0,e;
while(1) /*高斯赛德尔迭代求解*/
{
e=0;
for(i=0;i<n;i++)
{
t=x[i];
for(j=0;j<n;j++)
if(j!=i)
m+=a[i*n+j]*x[j];
x[i]=(b[i]-m)/a[i*n+i];
m=0;
u=x[i];
if(fabs(t-u)>e)
e=fabs(t-u); /*取绝对值函数fabs()包含在<math.h>中*/
}
if(e<EPS)
return 1;
}
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载