资源描述:
《高斯-赛德尔迭代法的算法及程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、高斯-赛德尔迭代法的算法及程序设计设方程组的系数矩阵的对角线元素,为迭代次数容许的最大值,为容许误差。1取初始向量令k=0.2对i=1,2,…,n计算3如果则输出结束;否则执行44如果则不收敛,终止程序;否则,转2源程序:#include#include#defineN600voidmain(){inti;doublex[4];doublec[4][5]={10,-1,2,0,-11,0,8,-1,3,-11,2,-1,10,0,6,-1,3,-1,11,25};voidGaussSeide
2、l(double*,int,double[]);GaussSeidel(c[0],4,x);for(i=0;i<=3;i++)printf("x[%d]=%f",i,x[i]);}voidGaussSeidel(double*a,intn,doublex[]){inti,j,k=1;doubled,dx,eps;for(i=0;i<=3;i++)while(1){eps=0;for(i=0;i<=3;i++){d=0;for(j=0;j<=4;j++){if(j==i)continue;d+=*(a+i*(n+1)+j)
3、*x[j];}dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));eps+=fabs(dx-x[i]);4x[i]=dx;}if(eps<1e-6){printf("迭代次数是:%d",k);return;}if(k>N){printf("迭代发散n");return;}}}输出结果结果分析:从输出结果可以看出此方程组的迭代次数为1,此时能得到精确结果是 x[0]=-1.467391,x[1]=-2.358696,x[2]=0.657609,x[3]=2.842391从结果和原有知识可以知
4、道其系数矩阵是严格对角占优的。所以此迭代解法有很好的收敛性.4附录C语言编程源程序#include#include#include#include#defineN3main(){inti,j,k,s;floata[N][N]={0},L[N][N]={0},U[N][N]={0},sigma1,sigma2;for(i=0;i5、);for(j=0;j6、[s]*U[s][k];L[i][k]=(a[i][k]-sigma2)/U[k][k];}}printf("a矩阵为:");for(i=0;i7、j=0;j