收藏 分享(赏)

土建类FORTRAN计算机实践报告.doc

上传人:dreamzhangning 文档编号:2311075 上传时间:2018-09-10 格式:DOC 页数:7 大小:64KB
下载 相关 举报
土建类FORTRAN计算机实践报告.doc_第1页
第1页 / 共7页
土建类FORTRAN计算机实践报告.doc_第2页
第2页 / 共7页
土建类FORTRAN计算机实践报告.doc_第3页
第3页 / 共7页
土建类FORTRAN计算机实践报告.doc_第4页
第4页 / 共7页
土建类FORTRAN计算机实践报告.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、本科生课程设计( 实践) 设计报告(程序设计基础)计算机基础教学实验中心10 年 7 月 8 日FORTRAN课程实践报告课题如下:题 目 线性方程组求解学生姓名指导教师学 院专业班级学生学号用 Jacobi迭代和 Gauss-Seidel迭代法求解线性方程组 AX=b。一天文学家要确定一颗小行星绕太阳运行的轨道,他在轨道平面内建立以太阳为原点的直角坐标系,在五个不同的点对小行星作了五次观察,测得轨道上五个点的坐标数据(单位:万公里)如下表所示:P1 P2 P3 P4 P5X坐标 53605 58460 62859 66662 68894Y坐标 6026 11179 16954 23492 3

2、0890由开普勒第一定律知,小行星轨道为一椭圆,椭圆的一般方程可表示为:a1x2+2a2xy+a3y2+2a4x+2a5y+1=0分别将五个点的数据代入椭圆一般方程中,得到线性方程组,求出待定系数a1,a2,a3,a4,a5。绘制行星绕太阳运行的轨道。(2)熟悉文件的操作,通过文件获取数据,并将结果输出至文件中。(3)熟悉图形操作,利用 QuickWin 提供的库函数绘制图形。输入系统的数据总系统有 P1,P2,P3,P4,P5,而期待的结果有 a1,a2,a3,a4,a5.模块设计:先调用以高斯消去法编写的子程序(1)再调用以矩阵求逆法编写的子程序(2)运行程序,输出图形系统主程序运用qui

3、ck win 制图编写子程序(1)高斯消元法和(2)据轨道方程编写数据输入输出程序从文件“i.txt”中输入数据再运行子程序(2)将运算的得到的数据存储在文件“p.txt”中 先运行子程序(1) 用END语句结束结束总程序向文件”i. txt”中输入五个坐标值元素设计思想:首先认识到这个系统的开发环境是该 Fortran Power Station 4.0,所以我先了解了该软件的特点,又由于该程序涉及到多种计算求解方法,则最主要的系统开发思想是模块化设计与断点设计。具体是指把主程序需要打开的文件。要调用的子例行程序作为模块分批设计。在程序设计阶段,考虑到要用数据类型与单位,提高输入数据本身的精

4、确度。因为等待设计的系统不仅要具备的所需的功能还要尽量的高效,简洁,精确。所以在设计过程中,有格外注意各个方面总系统的设计。由于题目要求从文件中读取数据,所以先要把数组中的数据输入到文件中。数据按已有格式顺序方式存储在 i.txt,并将第一次运算产生的数据存储在p.txt文件夹中。编程:(1)建立高斯消去法为计算方法的子例行程序,把它分为求最值、消去和回代。整合两者的时候,既可以采用前者调用后者模式,也可以在主程序调用两者作为子例行程序的方式。我选用了后一种设计思路。程序如下:subroutine hao(coefficient,b,n,a)real(8):coefficient(n,n),b

5、(n),a(n)integer pos(n),poskreal scale(n)if(n.gt.100)then print*,errror-matrix is too large for yuan routinestopend if!求每行最大值do i=1,npos(i)=iscalemax=0do j=1,nscalemax=max(scalemax,abs(coefficient(i,j)end doscale(i)=scalemaxend do!消元do k=1,n-1ratiomax=0do i=k,nratio=abs(coefficient(pos(i),k)/scale(po

6、s(i)if(ratio.gt.ratiomax)thenj=iratiomax=ratioend ifend doposk=pos(j)pos(j)=pos(k)pos(k)=poskdo i=k+1,ncoeff=coefficient(pos(i),k)/coefficient(posk,k)do j=k+1,ncoefficient(pos(i),j)=coefficient(pos(i),j)-coeff*coefficient(posk,j)end docoefficient(pos(i),k)=coeffb(pos(i)=b(pos(i)-coefficient(pos(i),k

7、)*b(posk)end doend do!回代a(n)=b(pos(n)/coefficient(pos(n),n)do i=n-1,1,-1sum=b(pos(i)do j=i+1,nsum=sum-coefficient(pos(i),j)*a(j)end doa(i)=sum/coefficient(pos(i),i)end doend(2)根据题目所给椭圆方程编写计算程序,将细枝末节准备好后,着手建立系统的主干系统的主程序。由于系统设效计过程中运用了子例行程序设计,数组设计,文件管理等思想,把这些看成一个个的模块后,就可以用一般的设计规律设计主要程序,开始定义数组然后通过 OPEN和

8、 READ语句输入文件中的数据调用两类子例行程序中的一种,用 END语句结束该程序单元。程序如下:dimension coefficient(5,5),y(5),x(5),b(5),a(5)real(8):coefficient,b,ainteger iopen(01,file=“i.txt“)open(02,file=“p.txt“)read(01,*)x,ydata b/-1.0,-1.0,-1.0,-1.0,-1.0/do i=1,5coefficient(i,1)=x(i)*2coefficient(i,2)=2*x(i)*y(i)coefficient(i,3)=y(i)*2coef

9、ficient(i,4)=2*x(i)coefficient(i,5)=2*y(i)end doeps=1.0e-06call hao(coefficient,b,5,a)write(02,10)(a(i),i=1,5)10 format(1x,e17.7)call guidaoend按照题目要求,我们还需要用 QUICKWIN绘图软件绘出相应的轨迹图形。通过前两步程序计算出的值,代入椭圆方程,编写绘图程序。绘图时将子窗口背景色设置为白色,设置绘图颜色为蓝色。在本次程序设计过程中,我特别注意了一下细节,例如:在读写过程中难免出现错误,所以每输入一段后都会相应的检查一次,添加一个断点,例如PAU

10、SE 22,READ*.这样做可以减少程序调试阶段的工作量。调试:编写好程序之后就可以上机开始调试了。调试程序主要是为了找出程序中出现的错误或缺陷。程序调试也称为程序测试,程序的测试可分为两部分进行,首先是单元测试,在单元测试检查出个子程序的错误并进行修正之后,就可以进行主程序与子程序的组装测试了。在进行单元测试(即子程序测试)的过程中我发现了自己所编写的程序存在很多的错误。这些错误当中有些是很容易找出来的,比如在 DO 循环中我会因为粗心而丢掉了 ENDDO 的结尾语句或者是在 IF 语句中丢掉了 ENDIF,诸如此类的粗误。这些错误都是因为粗心和不熟练而造成的。这一类的错误容易发现也容易纠

11、正,但是有些错误却很难发现。在绘图程序调试过程中,总是输不出图形来。我把程序运行后,看到有窗口弹出来,但马上又不见了。我找了好久的错误,总是找不出问题出在哪,编译时就没有错误,只出现一些 warning。我当时就很纳闷,后来请教同学,原来是程序中数据类型不一致导致的。找出问题后,我修改了数据类型;还有因为没有建立 i.txt 和 p.txt 文本来进行数据输入输出,因此图形总是画不出来,在请教过同学后,进行调试,再运行时图形一下子就出来了。为自己的粗心感觉到羞愧。这次的程序外设计过程中最大麻烦来自程序的整合与数据的调用。这个系统中定义的虚参在十个以上,有时程序中虚参与主程序中的实参同名;各个程

12、序单元也可能公用存储单,也可能有自己的存储单元.在最后的调试阶段,我先是用DATA语句向主程序中输入数据,以检修两个子例行程序是否正确,不是的话,提前纠正.但是在排除子例行程序中错误后仍可能出现较多的错误和警告.主要集中在从文件读取数据和子例行程序连接中,分为语法错误和链接错误.例如检测系统主程序与 Subroutine Ni时系统提示 error lnk2001 :unresolved external symbol_f4;Fatal error lnk1120: 1 unresolved externals.通过逐个检查发现是从文件中输入数据时误写”form=formatted”了;在将子

13、例行程序调用到主程序中时,w 误将程序类型选择为了 win32 debug,导致出现了相同的系统诊断结果.在将其选择为 win32 release后,警告和错误就消失了.在程序设计第三阶段中还发现容易忽略调用的文件的路径的改变。这次程序设计中,我选用的程序的路径是 C:MEDSVPROJECTZHI.TXT.总结:课程设计对我而言是一次毅力的考验.在程序设计和调试阶段,需要我耐性的编写和纠正.这次课程设计也是培养我查阅资料获取有用信息加以运用的能力,加强与同学的交流与合作,团结互助的好机会.为了圆满的完成这次实践活动,我查阅了大量的资料。通过这次课程设计实践,我深深地发现了自己在学期内对于 F

14、ORTRAN的掌握还是比较肤浅,在编程和调试过程中常常因为一个程序语句或者是一个错误抓狂上个把小时,翻书请教同学,当时真是深恨自己之前没有好好学,不过在困难总算过去后,内心的愉悦和轻松是无法用语言轻易表达出来的。这次实践活动的圆满结束使我更加有信心,坚信通过自己的努力,通过同他人的交流讨论,可以快速地提高自己的程序设计能力和动手操作能力.最后,衷心地感谢老师的指导和同学的帮助。我会继续努力收获:(1) 上网查阅了一些文献,了解了雅克比迭代和高斯迭代,并且对于用 FORTRAN语言进行程序编写的掌握更加扎实。(2) 这次课程设计要求用文件输入数据。而我之前对文件操作并不熟悉,只会一点。经过此次课程设计,我懂得了文件的各种操作。我想这在我毕业以后会有大用的。(3) FORTRAN 是土建类专用的程序设计操作软件,此次程序设计,我同时掌握了 quickwin 图形的绘制方法。计算机绘图是以后进行工程设计的基础,我相信这次的实践对于以后进行绘图及设计有很积极的影响。参考文献:(1) 刘卫国 蔡旭辉 Fortran 90程序设计教程 北京:北京邮电大学出版社 2007(2) 刘卫国 戴忠 Fortran 90程序设计上机指导与习题选解 北京:北京邮电大学出版社 2007(3) 徐士良 Fortran常用算法程序集(第二版) 北京: 清华大学出版社 1995

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报