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

  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文档。上传文档
查看更多
土建类FORTRAN计算机实践报告.doc

本科生课程设计(实践)设计报告 (程序设计基础) 题 目 线性方程组求解 学生姓名 指导教师 学 院 专业班级 学生学号 计算机基础教学实验中心 10年 7月 8日 FORTRAN课程实践报告 课题如下: 用Jacobi迭代Gauss-Seidel迭代b。一天文学家要确定一颗小行星绕太阳运行的轨道,他在轨道平面内建立以太阳为原点的直角坐标系,在五个不同的点对小行星作了五次观察,测得轨道上五个点的坐标数据(单位:万公里)如下表所示: P1 P2 P3 P4 P5 X坐标 53605 58460 62859 66662 68894 Y坐标 6026 11179 16954 23492 30890 由开普勒第一定律知,小行星轨道为一椭圆,椭圆的一般方程可表示为: 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.模块设计: 设计思想: 首先认识到这个系统的开发环境是该Fortran Power Station 4.0,所以我先了解了该软件的特点,又由于该程序涉及到多种计算求解方法,则最主要的系统开发思想是模块化设计与断点设计。具体是指把主程序需要打开的文件。要调用的子例行程序作为模块分批设计。在程序设计阶段,考虑到要用数据类型与单位,提高输入数据本身的精确度。因为等待设计的系统不仅要具备的所需的功能还要尽量的高效,简洁,精确。所以在设计过程中,有格外注意各个方面的设计。 由于题目要求从文件中读取数据,所以先要把数组中的数据输入到文件中。 数据按已有格式顺序方式存储在i.txt,并将第一次运算产生的数据存储在p.txt文件夹中。 编程: (1)建立高斯消去法为计算方法的子例行程序,把它分为求最值、消去和回代。整合两者的时候,既可以采用前者调用后者模式,也可以在主程序调用两者作为子例行程序的方式。我选用了后一种设计思路。程序如下: subroutine hao(coefficient,b,n,a) real(8)::coefficient(n,n),b(n),a(n) integer pos(n),posk real scale(n) if(n.gt.100)then print*,errror-matrix is too large for yuan routine stop end if !求每行最大值 do i=1,n pos(i)=i scalemax=0 do j=1,n scalemax=max(scalemax,abs(coefficient(i,j))) end do scale(i)=scalemax end do !消元 do k=1,n-1 ratiomax=0 do i=k,n ratio=abs(coefficient(pos(i),k))/scale(pos(i)) if(ratio.gt.ratiomax)then j=i ratiomax=ratio end if end do posk=pos(j) pos(j)=pos(k) pos(k)=posk do i=k+1,n coeff=coefficient(pos(i),k)/coefficient(posk,k) do j=k+1,n coefficient(pos(i),j)=coefficient(pos(i),j)-coeff*coefficient(posk,j) end do coefficient(pos(i),k)=coeff b(pos(i))=b(pos(i))-coefficient(pos(i),k)*b(posk) end do end do !回代 a(n)=b(pos(n))/coefficient(pos(n),n) do i=n-1,1,-1 sum=b(pos(i)) do j=i+1,n sum=sum-coefficient(pos(i),j)*a(j) end do a(i)=sum/coefficient(pos(i),i) end do end (2)根据题目所给椭圆方程编写计算程序,将细枝末节准备好后,着手建立系

文档评论(0)

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

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

1亿VIP精品文档

相关文档