- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中南大学
本科生课程设计(实践)任务书、设计报告
(计算机程序设计基础—FORTRAN)
题 目
FORTRAN.90程序设计报告
学生姓名
指导教师
刘卫国
学 院
土木建筑学院
专业班级
学生学号
计算机基础教学实验中心
2010年 7 月 6 日
FORTRAN.90程序设计任务
线性方程组求解问题
一物理系统可用下列线性方程组来表示:
从文件中读入m1、m2和θ的值,求a1、a2、N1 和N2的值。其中g取9.8,输入θ时以角度为单位。
要求:
(1)分别用两种方法(例如高斯消去法、矩阵求逆法、三角分解法、追赶法等),定义求解线性方程组Ax=b的子程序,要求该子程序能求解任意线性方程组。
(2)在主程序中分别调用上面定义的两个子程序,并对求解结果进行对比分析。
(3)绘制以上两个方法所求得的方程解的数据分布图。
这次实践主要的目的是为了更好的掌握FORTRAN.90这门知识和熟练其中的一些做法而设计的,而这道题的任务主要是用两种不同的方法来写写求线性方程的解子程序,然后利用文件的插入数据,再在QUICKWIN里画出数据的分布。
首先我看到这个题目时就想到了逆矩阵求逆法来接方程,因为我只学会了逆矩阵求逆,然后又找到了高斯消去法,和三角分解法,比较起来,我最终了用了矩阵求逆法和直接三角分解法,因为直接三角分解法是建立在高斯消去法的基础上,后面的迭代和高斯的基本一样。这就是我选择逆矩阵和直接三角分解法的原因。
程序设计的基本思路
通过徐士良Fortran《常用算法程序集(第二版)》我了解了高斯消去法,通过《数值计算》我知道了三角分解法,通过网上百度我又知道了矩阵求逆的方法,通过比较我选择了直接三角分解法和矩阵求逆法来解线性方程的解,因为直接三角分解法后面要利用高斯消去法。我的基本思路是先写两个子程序,然后在写主程序,用文件的形式输入数据,通过调试比较两个子程序的解,最后用QUICKWIN画图,通过看课本,我决定了画圆。其中三角分解法的基本原理是:把A矩阵利用公式分解为一个上三角矩阵L和一个下三角矩阵U,然后在利用高斯消去法的原理解L(U*X)=B和U*X=Y的求出X,即是所要求的线性方程的解。矩阵求逆的思路是利用公式B=A*//A/,其中A*为A的伴随矩阵/A/为A的行列式,B为A的逆矩阵,然后再用矩阵相乘的方法求这个线性方程的解。接着就是写主程序等等。
系统功能分析及功能结构图
这个程序的主要功能就是求解任意线性方程的解,其中利用了三角分解法和矩阵求逆法来设计子程序,利用了文件来输入数据,最后还用了QUICKWIN程序画图,其主要流程图如下所示:
程序设计过程中所遇到的问题
FORTRAN.90是我大学里学了比较难的一门,所以在做的过程中我遇到了很多问题,有时一些简单的问题也常常犯,比如 WARNING for4227:argument y (number 2) in reference to procedure s1 from procedure main incorrect: has the wrong data type,根据这个信息找到可能的错误,例如形参和实参的类型不一致。时输入时输入错误,例如error lnk2001:unresolved external symbol_z@4 fatal error lnk1120:1 unresolved externals。通常遇到这样的错误我都会直接在程序中查找,后来RUN TO CURSOR 选项,或者直接按F9,在光标所在的地方找错误。件过程中我遇到一个很麻烦的问题,我直接在自己的U盘里设置了文件,工作空间也都在U盘里,可是在子程序和主程序都没错误的情况下,就是写不出答案,错误信息大概是数据溢出,最后老师帮我解决了,原来这样的文件及程序需放在project文件中,变为标准程序。开始之前,我一直想要把那个画图的子程序写成一个子程序,最后我还是没搞懂,后来我把输出函数值和输出的图形变成两个单独的程序来完成的,画图过程中还遇到一个棘手的问题,就是如何输出两组数据的图形,最后我用了一个很笨的办法,就是把程序里的X(4)改为了X1(4)和X2(4),在把圆心的X值定为不同的值,这样输出的时候就不会冲突了,也可以全部输出来了。在写子程序过程中我也遇到了一个奇怪的现象,就是B(4)的值总是不同,通过几次查找才发现原来在程序运行过程中已经把B的值改变了。
总结
FORTRAN.90是我进大学以来学习的第一门语言,也是第一次更深层次的了解电脑和电脑语言,虽然我已经学了一期了,学到的东西也比较多,从简单的DO循环,DO WHILE语句到后面的FUNCTION,SUBROUTINE子程序 还有自学的QUICKWIN画图,偶尔也可以编程计算,但是还只是
原创力文档


文档评论(0)