资源描述
如有你有帮助,请购买下载,谢谢!数值分析实验报告之、 咼斯丄基德尔迭代法一、实验目的:理解高斯-塞德尔算法的基本思想,及公式的推导过程;会用此公式是 解简单线性方程组。、实验内容:用高斯-塞德尔法解线性方程组8x 一 3x + 2x = 20123 4x + 11x 一 x = 33,取初值 x(o)= (0,0,0)t1236 x + 3x +12 x = 36V 123三、实验原理:K+在雅可比迭代中,总是用前次近似分量x(k),x(k),x(k),x(k) x(k)去计算1 2i-1 in当前分量x (k+1)i(i=1,2,n)。实际上此刻前i-1个分量x ,x ,x的新近1 2i-1似 值x(k +1), x(k+1),x(k+1)代替xk , xk ,xk去计算x (k+1)可能会得到更满意12i-112i-1i的效果。据此得到的迭代公式就是高斯-塞德尔公式,即x (k+1) = (b 一艺ii四、流程图:五、程序代码:j=1a x(k+i)ij j一工a x(k)/a(i=1,2,n)j j ii开始j=i+1#include#include#define n 3double getmax(double t )/求最大范数 double max二t0;for(int i=0;imax)max 二ti;return max; , void Ga+s_Seidel(int ann ,int bn,double E) dduble xn二0.0 tn,cn;int MaxNumber=9;/最大迭代次数f(-高斯-赛德尔迭代法nt k=1;k=MaxNumber;k+)intf(第小迭代结果为:,k);for(int i=0;in;i+)ci=xi|if(aii=Y0)pri ntf (aidouble sum=0;for(int j=0;jn;j+ if(j!=i) sum+=aij xi = (bi-sum)/aiij; pri ntf (.8fprintf(n);pri ntfor(ipI=0n);I要求!);re turn;NYNMax( t )=E,xi); +YKvMaxNumber输出错误输出结果-|n| x高斯-赛德尔迭代法2.500000002.977272733.009814Q52.999829782.999842393.Q00Q1186 _3.00000201|在精度为2.0C-005T,计算结果为:3.000002011.99999870Press any key to continue第1迭代结果为 第2迭代结果为 第3迭枕结果为 第4迭枕结果为 第E迭枕结果为 第迭代结果为 氧蓝虽结果为 柱专青度ZJ2-0e_2.098909092.028925621.996806911.999688382.000072132.0&1211.999998701.227272731.004132230.995891251.000163021.000060770.999993770.999999320.99999932for(i=0;in;i+)ti二fabs(xi-ci);if(ge tmax( t)二E)/在满足所要求精度下,输出结果printf(在精度为%.le下,计算结果为:n,E);for(i=0;in;i+)pri ntf (%.8f,xi);printf (n);return;prin tf(无满足要求的解!n);void main()int ann = 8,-3,2,4,ll,l,6,3,12,bn二20,33,36;/初始值 double E=2e-5;/要求的精度Gauss_Seidel(a,b,E);六、程序结果:IB1 *C: UsersfshDebuggfj fdgk. exe高斯-塞德尔迭代公式计算xk+1的第i个分量xk+1时,利用了已经计算出的i最新分量X k+1 (j=l,2,i-1)。高斯-塞德尔迭代法可看作雅克比迭代法的一 j种改进。高斯-塞德尔迭代法每迭代一次只需计算一次矩阵与向量的乘法,在一 定条件下,收敛速度很快。
展开阅读全文