超松弛迭代法解线性方程组(共7页).doc
《超松弛迭代法解线性方程组(共7页).doc》由会员分享,可在线阅读,更多相关《超松弛迭代法解线性方程组(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上2013-2014(1)专业课程实践论文题目:超松弛迭代法解线性方程组一、算法理论逐次超松弛迭代法是Gauss-Seidel方法的一种加速方法,世界大型稀疏矩阵方程组的有效方法之一,它具有计算公式简单,程序设计容易,占用计算机内存较少等优点,但需要选择好的加速因子(即最佳松弛因子)设有方程组 (1)其中为非奇异矩阵,且设,分解为 (2) 设已知第次迭代向量,及第次迭代向量的分量,要求计算分量 首先用GaussSeidel迭代法定义辅助量 (3)再把取为某个平均值(即加权平均),即 (4)用式(3)代入式(4)即得到解方程组的逐次超松弛迭代公式 (5)其中为松弛因子,显
2、然,当时,解式(1)的SOR方法就是Gauss-Seidel迭代法。 在SOR方法中,迭代一次主要的运算量是计算一次矩阵与向量的乘法。由式(5)可知,在计算机上应用SOR方法解方程组时只需一组工作单元,以便存放近似解。开始二、算法框图结束定义f(x) 输入x0 e1 e2 NK=1f(x)e1x1=x0-x0/f(x0)X1-x2e2?K=N?输出迭代失败标志输出奇异标志输出x1x0=x1K=k=1YESYESYESNONO三、算法程序#define N 3 / 线性方程组的阶数#include #include void main()double aNN=5,2,1,2,8,-3,1,-3,
3、-6, /系数矩阵bN=8,21,1; /右端常数向量double x0N=1,1,1,xN; / 迭代初始向量和迭代向量double e=1e-5; / 精度要求int M=5000; /最大迭代次数int i,j,c_M=0; double sum,current_e;docurrent_e=0; for(i=0;iN;i+)sum = 0;for(j=0;jN;j+)if(j!=i)sum = sum + aij * x0j; xi = (bi - sum) / aii;/ 更新迭代向量c_M+; /迭代次数加1for(i=0;icurrent_e)current_e = fabs(xi-x0i); /计算当前误差for(i=0;ie&c_MM); /判断是否仍未达到精度要求且未达到最大迭代次数for(i=0;iN;i+)cout xi endl; /输出结果cout c_M endl; /输出迭代次数四、算法实现例1用超松弛迭代法解方程组解:将方程组的系数放于ann中,将等号右端常数放入bn中。运行程序,即可得出结果例2用超松弛迭代法解方程组解:将方程组的系数放于ann中,将等号右端常数放入bn中。运行程序,即可得出结果专心-专注-专业
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 松弛 迭代法 线性方程组
限制150内