(WORD)-高斯—赛德尔迭代法课程设计-其他专业.docVIP

(WORD)-高斯—赛德尔迭代法课程设计-其他专业.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(WORD)-高斯—赛德尔迭代法课程设计-其他专业

C++课程设计实验报告 姓名 陈晓杜 学号 班级 0511590130 任课教师 肖亮 时间 2006-9-20 教师指定题目 高斯—赛德尔迭代法 评定难易级别 A 实验报告成绩 实验内容: 一: 程序功能介绍 采用高斯-赛德尔迭代法解线性方程组 二:解方程组的原理 所解的方程的系数矩阵为对角优势; 一般行数不超过10行; 首先将矩阵变换成:x=Mx+f的形式; 接着选取适当的初值,本程序选取0; 选取适当的松弛因子,将初始化后的值进行迭代; 然后用同样的计算步骤重复计算; 在满足精度的情况下,停止迭代,求得近似解。 三:程序设计要求 设计测试主程序 在主程序完成测试 测试线性方程: 10*X1+X2+2*X3=44 2*X1+10*X2+X3=51 X1+2*X2+10*X3=61 解:X1=3,X2=4,X3=5 四:程序的主要内容 给出类 构造函数 输入行列数 变换矩阵 初始化对角 设松弛因子 迭代计算 控制精度 输入矩阵 输出结果 main函数 五: 源程序结构流程框图 六:基本数据结构 class matrix //高斯-赛德尔矩阵算法类 { friend void operator(ostream ,matrix );//重载输出运算符 friend void operator(istream ,matrix );//重载输入运算符 protected: int row,column;//矩阵行列数 double **mat;//矩阵 int varnum;//矩阵解的个数 double *variable;//存放方程解 int itercount;//迭代次数 void iteration(double);//迭代算法,参数是松弛因子 bool epsilon(double*,double*,int,double);//误差函数 public: matrix(int,int);//构造函数 static void initialize(int,int);//要求用户输入行列数 void rearrange();//变换矩阵 void relax(double );//控制松弛因子 void solve(double);//主要算法部分,参数是松弛因子 void show_answer();//最后输出结果 }; 七:程序运行结果界面 图1. 初始界面 图2.运行过程 图3.错误处理 图4.运行结果 八:课程设计遇到的技术问题与解决思路 问题1: 在输入线性方程组的时候要考虑方程的个数不应该太大,而且要考虑行数应比列数少1才能得惟一解。如何保证错误的输入程序不执行,要求重新输入? 解决办法: 刚开始我使用while语句,但总是会出现死循环;后发现while可能一次都不执行,也可能无限次返回1,造成死循环。后又使用for语句,但发现存有隐患;最后使用do-while语句来解决。解决办法即用do-while做外层循环,判断行列间的关系。再用while语句做内层循环,来控制行列数的大小。同时由于do-while要先进行一次运行,所以也避免了死循环的产生。 问题2:经过试运行发现松弛因子的取值和结果有很大的关系。一般来说只有当松弛因子取值范围在0到2时才有正确结果。怎么样才能得到正确的结果? 解决办法:还是使用while语句来判断松弛因子的大小。 问题3:在要求输入矩阵的行列和松弛因子时,本该输入的是int或是double型,此时若输入的是char型就会造成死循环。怎样才能排除char导致的死循环? 解决办法:开始时采用把所有的数据全改位char型再用ASCII码来判断。但这种办法不大可行有可能造成不必要的麻烦。其次考虑到输入的行列数毕竟都不大于10,而一个一位数只占用一个字节,而如果是字母则占用四个字节,即使是数字如果不是一位数那至少要占用两个字节,所以可以考虑使用sizeof() 先判断输入的字节数,如果大于一则不满足输入需要不执行。该方法在输入行列时获得成功。但在输入松弛因子时由于输入的是double型,就无法获得成功。最后我采用安全输入函数safe_int()来控制输入数据类型,最终获得成功。 九:参考资料 (1):《现代应用数学手册——计算与数值分析卷》

文档评论(0)

seunk + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档