1、0高斯-赛德尔迭代法的算法及程序设计设方程组 的系数矩阵的对角线元素 , 为迭代次数容许的最大Axb(1,2)in M值, 为容许误差。1 取初始向量令 k=0.2 对 i=1,2,n 计算 3 如果则输出结束;否则执行 44 如果则不收敛,终止程序;否则,转 2源程序:#include #include #define N 600void main()int i;double x4;double c45=10,-1,2,0,-11,0,8,-1,3,-11,2,-1,10,0,6,-1,3,-1,11,25;void GaussSeidel(double *,int,double);Gaus
2、sSeidel(c0,4,x);for(i=0;iN)printf(“迭代发散 nn“);return;输出结果结果分析:从输出结果可以看出此方程组的迭代次数为 1,此时能得到精确结果是x0=-1.467391,x 1=-2.358696,x2 =0.657609,x3 =2.842391从结果和原有知识可以知道其系数矩阵是严格对角占优的。所以此迭代解法有很好的收敛性.2附录 C 语言编程源程序#include #include #include #include #define N 3main()int i,j,k,s;float aNN=0,LNN=0,UNN=0,sigma1,sigma
3、2;for(i=0;iN;i+)Lii=1;for(i=0;iN;i+)3printf(“请输入矩阵第%d 行元素:n“,i+1);for(j=0;jN;j+)scanf(“%f“,for(i=0;iN;i+)U0i=a0i;Li0=ai0/U00;for(k=1;kN;k+)for(j=k;jN;j+)sigma1=0;for(s=0;s=k-1;s+)sigma1+=Lks*Usj;Ukj=akj-sigma1;for(i=k;iN;i+)sigma2=0;for(s=0;s=k-1;s+)sigma2+=Lis*Usk;Lik=(aik-sigma2)/Ukk;printf(“a 矩阵为:n“);for(i=0;iN;i+)for(j=0;jN;j+)printf(“%5.1f “,aij);printf(“n“);printf(“L 矩阵为:n“);for(i=0;iN;i+)for(j=0;jN;j+)printf(“%5.1f “,Lij);printf(“n“);printf(“U 矩阵为:n“);for(i=0;iN;i+)4for(j=0;jN;j+)printf(“%5.1f “,Uij);printf(“n“);