版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学理学院课程设计 题目:用逐次松弛法求方程组的解 课程:数值计算方法 成员: 1107014124 董强 1107014126 李迎 1107014128 冯梦文题目用逐次松弛法求方程组的解具体内容 已知方程组:取初值,要求。要求 1.认真读题,了解问题的数学原形;2.选择合适问题求解的数值计算方法;3.设计程序并进行计算;4.对结果进行解释说明采用方法及结果说明根据题目要求用松弛法求解给出方程组的解。1、松弛法是在高斯迭代法的基础上为提高收敛速度,采用加权平均而得到的新算法。高斯迭代法 再由与加权平均得,最终超松弛法的迭代矩阵为 2、容易判断给出的系数矩阵是对称正定矩阵,所以只要选择的
2、加速因子w只要满足0<w<2, 则解方程组的SOR(超松弛法)方法收敛。 3、对于最佳松弛因子的选择方法,则是根据不同的加速因子在相同的系数矩阵下迭代次数最少的为最优,具体的迭代次数见附录,最后选择最佳加速因子w=1.3,得到结果为,并且所得的精度满足题目的要求。成员 董强 李迎 冯梦文 已知方程组: 取初值,要求。一、问题分析 求解这个方程组,从题目中我们可以看出,有三种方法,雅可比迭代法、高赛德尔迭代法、逐次超松弛法。但是迭代发收敛速度太慢,就会增加计算量,而失去使用价值。逐次超松弛(Successive Over Relaxation)迭代法,简称SOR迭
3、代法,它是在GS法基础上为提高收敛速度,采用加权平均而得到的新算法。它是大型解稀疏矩阵方程组的有效方法之一,具有计算公式简单,程序设计容易,占用计算机内存少等优点,但需要选择加速因子。超松弛迭代法的理论基础 逐次超松弛(Successive Over Relaxation)迭代法,简称SOR迭代法,它是在GS法基础上为提高收敛速度,采用加权平均而得到的新算法,设解方程(7.1.3)的GS法记为 (1)再由与加权平均得 这里0称为松弛参数,将(1)代入则得 (2)该法称为SOR迭代法,WTBX0称为松弛因子,当=1时(2)式即为高斯-赛德尔迭代法,简记GS法,将(2)写成矩阵形式,则得 即从而k
4、=0、1、2、于是得SOR迭代的矩阵表示加速因子w的选择 对于SOR法,松弛因子的选择对于收敛速度影响较大,关于最优松弛因子W的研究较为复杂,对此我们选用不同的松弛因子比较其收敛速度。由SOR法收敛,则0<W<2 因此我们在(0,2)中选取不同的松弛因子并比较得出近似的最优松弛因子。二、问题求解 取 W=1.1代入程序进行计算取W=1.2 代入程序计算取w=1.3带入程序计算结果说明及分析: 不同松弛因子的收敛速度比较不同松弛因子的迭代次数松弛因子迭代次数松弛因子迭代次数0.13391.1190.21791.2140.31201.3120.4881.4150.5691.5190.6
5、551.6250.7451.7350.8361.8510.9391.9961.028注:w=1时,是高斯赛德尔迭代法。 最后对于不同的w取值,我们进行计算并列表比较,可以发现不同w取值迭代收敛速度不同,当w=1.3时,迭代收敛速度最快。 最终方程组的解为与精确解接近,且满足题目所要求的精度 附录:计算程序#include<iostream>#include<math.h>#include<iomanip>using namespace std; #define kk 50 /定义最大方程元数int n,i,c,j,ll,hh,gg,mm,f=1;double
6、 Akkkk,xkkkk,bkk,ykk,akk,zkk,m,nn,d,e=1,w,fff ;void main()cout<<"*"<<endl;cout<<"*数值计算方法之逐次超松弛法求解线性方程组*"<<endl;cout<<"*制作人:董强 李迎 冯梦文*"<<endl;cout<<"*说明:方程最多个数为50*"<<endl;cout<<"*"<<endl;/*数据
7、的输入*/*bb:*/cout<<"输入的方程元数"<<endl;cin>>n;cout<<"请输入方程系数矩阵:"<<endl;for(i=0;i<n;i+) for(j=0;j<n;j+) cin>>Aij;cout<<"请输入右边向量:"<<endl;for(i=0;i<n;i+) cin>>bi;cout<<"输入你想要的迭代精度(建议1e-5以上)!"<<e
8、ndl;cin>>fff;cout<<"输入最大迭代次数(建议300次以上)!"<<endl;cin>>mm;for(i=0;i<n;i+) bi=bi/Aii; for(j=0;j<n;j+) if(i=j) xii=0; else xij=-Aij/Aii; /*赋迭代初值*cout<<"输入迭代初值"<<endl;for(i=0;i<n;i+) cin>>yi; /*逐次超松弛法*dd: cout<<"输入加速因子W(0<
9、;W<2):"<<endl;cin>>w;if(w>=2) cout<<"输入错误!加速因子W(0<W<2):"<<endl; cout<<"请重新输入:"<<endl; cin>>w;if(w<=0) cout<<"输入错误!加速因子W(0<W<2):"<<endl; cout<<"请重新输入:"<<endl; cin>>
10、;w;cout<<" " for(i=1;i<n+1;i+) cout<<"X"<<i<<""<<" "cout<<"精度"cout<<endl;cout<<"迭代初值为: "cout<<setiosflags(ios:fixed); for(i=0;i<n;i+) cout<<yi<<" " cout<&l
11、t;endl;while(e>fff) for(i=0;i<n;i+) zi=yi; nn=0; for(j=0;j<n;j+) nn=nn+xij*yj; yi=(1-w)*zi+w*(nn+bi); e=fabs(z0-y0); if(fabs(zi-yi)>e) e=fabs(zi-yi); if(i=0) cout<<setiosflags(ios:fixed); cout<<"第"<<setw(3)<<setprecision(3)<<f+<<"次迭代&quo
12、t;<<" " cout<<setiosflags(ios:fixed); cout<<setw(8)<<setprecision(8)<<yi<<" " cout<<e; cout<<endl; if(f>mm) cout<<"迭代次数大于"<<mm<<"次"<<endl; cout<<"认为方程发散,迭代不收敛"<<endl; exit(1); cout<<endl; cout<<endl; cout<<"方程迭代了"<<f-1<<"次,达到你所要求的精度"<<fff<<endl; cout<<"最后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学萝卜种植园课程设计
- 串口调试课程设计
- 餐饮店独资合作协议合同书
- 2024房屋装修与物业管理管理合同范本
- 51单片机时钟课程设计
- 履行合同生产设备承制能力说明范本
- 驾考科目一培训
- 大连妇幼保健课程设计
- 中小学开学第一课280
- 药事管理专业医疗质量控制指标
- 2024届高考化学二轮复习策略研究
- 云应用系统开发技术PPT完整全套教学课件
- 表格式部编版语文六年级上册全册(教案)
- 中药学专业自评报告
- 幼儿园中班班务会会议记录表
- 项目立项单(模板)
- 三角函数的概念说课稿-高一上学期数学人教A版
- 基础会计综合实训
- 小学生相声剧本(10篇)
- 2023-2024学年山东省胶州市初中语文九年级上册期末自测测试题
- 全过程工程造价跟踪审计服务方案
评论
0/150
提交评论