1 / 12
文档名称:

FORTRAN语言课程设计.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

FORTRAN语言课程设计.doc

上传人:2286107238 2016/3/6 文件大小:0 KB

下载得到文件列表

FORTRAN语言课程设计.doc

文档介绍

文档介绍:.页眉. .页脚. FORTRAN 语言课程设计摘要: 科技的日新月异使得计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用, 不仅在工业方面而且在日常生活和科研中也越来越离不开计算机。特别是在天体运动方面需要运用到计算机处理大量的数据。这次我选的实践课题是用 Jacobi 迭代和 Gauss-Seidel 迭代法求解线性方程组 AX=B , 这其中涉及的就是天体运动的轨迹问题, 我利用从 FORTRAN 90 中学到的迭代、循环、子程序等知识设计程序,通过 Fortran PowerStation 进行运行、调试, 不得不提的是 QuickWin, 它在绘制行星的运动轨迹上发挥出了相当大的贡献。通过这次的实践我从中充分体会到了 Fortran 语言接近数学公式的自然描述,在计算机里具有很高的执行效率的最大特性。同时我也看到了 Fortran 语言是一种极具发展潜力的语言, 在数值计算中, Fortran 语言仍然不可替代。 Fortran90 标准引入了数组计算等非常利于矩阵运算的功能。在数组运算时, Fortran 能够自动进行并行运算,这是很多编程语言不具备的。运用 F ortra n 语言,你能够运用很多现成的函数软件包,所以非常便利。关键词: Fortran ; Jacobi 迭代和 Gauss-Seidel 迭代;天体运动 1 设计思想这次的课程设计我选的是第三个课题,关于求解天体的运行轨道,原题如下: .页眉. .页脚. ●用 Jacobi 迭代和 Gauss-Seidel 迭代法求解线性方程组 AX= b 。一天文学家要确定一颗小行星绕太阳运行的轨道, 他在轨道平面内建立以太阳为原点的直角坐标系,在五个不同的点对小行星作了五次观察,测得轨道上五个点的坐标数据(单位:万公里)如下表所示: P 1P 2P 3P 4P 5 X 坐标 53605 58460 62859 66662 68894 Y 坐标 6026 11179 16954 23492 30890 由开普勒第一定律知, 小行星轨道为一椭圆, 椭圆的一般方程可表示为: a 1x 2 +2a 2 xy+a 3y 2 +2a 4 x+2a 5 y+1=0 分别将五个点的数据代入椭圆一般方程中, 得到线性方程组, 求出待定系数 a 1 ,a 2 ,a 3 ,a 4 ,a 5 。绘制行星绕太阳运行的轨道。从题目中观察到一共需要五组数据联立成方程组才能将 a 1 ,a 2 ,a 3 ,a 4 ,a 5 求出, 自然想到运用 Jacobi 迭代和 Gauss-Seidel 迭代法求解线性方程组 AX=B 的题型, 其中 A为 5*5 的矩阵,X、B 为数组, 分别包含 a 1 ,a 2 ,a 3 ,a 4 ,a 5 和系数。同时为了满足程序的实用性我将 Gauss-Seidel 迭代法设计成了子例行程序,既方便程序的设计同时也有利于最后的调试与运行。另外, 为了对比精度我还设计了另一个子例行程序:高斯消元法,将其中输出的数据设定为单精度,而将 Gauss-Seidel 迭代法中的数据设为双精度,两相对比即可找出最符合实际的方案。基于实践的要求, 对数据的输入我采用的是从文本输入, 再从文本输出, 格式。其实 Excel . .页脚. 文件输入格式,即可以在程序中直接调用又可以灵活的控制输出。除了这些在对方程系数的输入上我设计了该程序的第三个子例行程序, 这样虽然表面上有点多余但是使得整个程序的灵活性和可操作性上有了很大的提高。画图方面我很自然的想到用 QuickWin 来作图,画图中主要用到的是描点法, 将每一个符合方程的解都描绘出来, 最终形成一条光滑的曲线。最终我将所有的程序都放在了同一个文件下进行操作, 涉及到画图程序和赋值主程序相冲突的问题, 于是便将画图设计成子例行程序 Subroutine huatu() ,在主程序中对其进行调用,程序得以完成。 2 系统设计与实现整个系统是围绕行星运行的轨道而设计,系统的框架图如下: 贯穿程序始终的是 Gauss-Seidel 迭代法和高斯消元法,其中高由线性方程组绘制小行星绕太阳运行轨道的问题输入求解输出椭圆的一般方程五点数据计算响应拟合文件储存绘制图形高斯消元法 Gauss-Seidel . .页脚. 斯消元法的基本运算原则是利用任何方程式乘上常数都不会改变其解答的原理, 将原方程组乘以适当的常数后, 作相互加减处理, 使系数矩阵的对角线全部变成 1 ,且使其左下角元素全变成 0 ,再由最后一个方程式由下往上代入,即可求出方程的解。而 Gauss-Seidel 迭代法与高斯消元法相似,只是 Gauss-Seidel 迭代