计算机程序设计基础—FORTRAN实验设计报告线性方程组求解问题.doc

计算机程序设计基础—FORTRAN实验设计报告线性方程组求解问题.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机程序设计基础—FORTRAN实验设计报告线性方程组求解问题

中南大学 本科生课程设计(实践)任务书、设计报告 (计算机程序设计基础—FORTRAN) 题 目 线性方程组求解问题 学生姓名 陈 晨 指导教师 刘胤宏 学 院 土木工程学院 专业班级 土建类工程试验班 学生学号 1217110118 计算机基础教学实验中心 2012年 6 月 29 日 Fortran课程设计实验报告 之 线性方程组求解问题 题目重现: 一物理系统可用下列线性方程组来表示: 从文件中读入m1、m2和θ的值,求a1、a2、N1 和N2的值。其中g取9.8,输入θ时以角度为单位。 要求如下: (1)分别用两种方法(例如高斯消去法、矩阵求逆法、三角分解法、追赶法等),定义求解线性方程组Ax=b的子程序,要求该子程序能求解任意线性方程组。 (2)在主程序中分别调用上面定义的两个子程序,并对求解结果进行对比分析。 (3)绘制以上两个方法所求得的方程解的数据分布图。 题目分析: 初看题目,MY GOD!这辈子没见过这么复杂奇葩的方程组。而脑袋里那些应付考试还可以的少的可怜的Fortran基础知识,更是直接缴械投降,无地自容了。不愧是大学,不愧是让无数土木人工科男竞折腰的Fortran课程设计。好吧,虽然极度怀疑自己的智商,但不战而屈己之兵又不是我土木人的性格。打开电脑,摩拳擦掌,Fortran,老子来了! 我们的目的地是,线性方程组的解,通往目的地的道路有好几条,Gauss大道,矩阵求逆之道,还有两条小路:三角分解与追赶之径。目前的情况是,小道路黑路不熟,大道倒是有星点的光。果断走大道嘛。开发思想嘛,对于解这样一个复杂的线性方程组,聪明的人类是不会傻乎乎自己去做的。于是,我们把这个繁琐的工作交给任劳任怨的计算机吧,省下我们大好年华去干更多有意义的事情。那么,我决定将这项任务交给fortran了,既然没人反对,那就这么定了 。 废话不多说了,直接上图。 系统结构图: 设计流程图: 系统功能及系统详细设计: 这个我要慢慢说,总体上系统分为两大部分:运算程序(即解线性方程组),绘图程序。运算程序中,由于采用两种方法,因此包含两大子程序。子程序1用来通过gauss消元法来求解;子程序2则通过矩阵求逆法以另一种方式解决方程组。 当然,两种方法各有千秋,各有其各自的优越性,主要是在程序复杂程度,运行时计算量即时间和空间量度上有区别。当主程序将指定文件中的已知条件读入,程序,开始为向矩阵赋值,这里通过一个4维数组实现,继而分别调用两大子程序,运算后输出结果,并将结果写入文件中。同时,两个子程序又并不只限于本题,由于具有很好的普遍性,所以,依然可以解决类似的其他数学或物理上的线性方程组问题O(∩_∩)O!这也符合了本次课程设计的要求。另一方面,绘图程序通过读入运算程序所生产文件中的结果数据,并以此描点画图,更加直观的展现出变量之间的关系,便于分析具体问题和预计变量变化趋势。 子程序1(gauss)结构图: 变量说明: A——双精度二维数组,存放原矩阵和逆矩阵 B,P——双精度一维数组,结果向量 X,C——双精度一维数组,解 N——整型变量,表示阶数 L——整型变量 Is,js——整型一维数组 子程序2(矩阵求逆法)结构图: 变量说明同上 绘图截图: 结果分析: 已知条件为 m1= 2.000000 m2= 3.000000 若角度为 45.500000 矩阵求逆结果:8.697662649563757 2.439507666582445 10.264865479508530 36.597686618051200 Gauss法结果 :8.699359268458210 2.438986192406746 10.258617002977420 36.590364957478860 误差为: -1.696618894452939E-003 5.214741756986996E-004 6.248476531107272E-003 7.321660572344513E-003 ****~~~~O(∩_∩)O~~~~**** 两种方法都可以求得较精确的解向量,误差千分之一左右,基本符合题目要求。 遇到的问题及解决方法: 将数学语言转换为fortran计算机编程语言,这对于我来说算是个不小的挑战。两者虽有本质的相通之处,但语言上的极大差异确实让人无从下手。但照

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档