中南大学计算机程序设计报告—FORTRAN

更新时间:2024-05-23 12:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中南大学

本科生课程设计(实践)任务书、设计报告 (计算机程序设计基础—FORTRAN)

题 目 学生姓名 指导教师 学 院 专业班级 学生学号

线性病态方程组问题

*** *** 土木工程学院 土木工程****班 **********

计算机基础教学实验中心 20**年 * 月 * 日

课程设计实践报告

一、任务内容

本次实践我的研究课题为“线性病态方程组问题”,题目如下:

2.线性病态方程组问题。 下面是一个线性病态方程组:

?1/21/31/4??x1??0.95??1/31/41/5??x???0.67? ???2?????1/41/51/6????x3????0.52??(1)求方程的解。

(2)将方程右边向量元素b3改为0.53,再求解,并比较b3的变化和解的相对变化。

(3)计算系数矩阵A的条件数并分析结论。

提示:矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积,即

cond(A)?A?A?1。这样定义的条件数总是大于1的。条件数越接近于1,矩

阵的性能越好,反之,矩阵的性能越差。矩阵A的条件数cond(A)?A?A?1,其中A?max{?aij},aij系矩阵A的元素。

1?j?ni?1m要求:

(1)方程的系数矩阵、常数向量均从文件中读入。

(2)定义求解线性方程组Ax=b的子程序,要求该子程序能求解任意线性方程组。

(3)在主程序中调用子程序,并对求解结果进行对比分析。 (4)绘制常数向量修改前后所求得的方程解的数据分布图。

二.系统开发设计思想

本题采用的方法主要有高斯消元法和矩阵求逆法,然后按照有关线性方程组的解法,求出方程组的解。对所求结果进行对比,然后绘制出有关图像。

首先编写主程序,从文件中调用主程序,进行调试,输出方程组的解。本题编写了三个子程序,第一个子程序GAUSS是用高斯消元法编写而出,第二个子程序INVERSEMATRIX是用逆矩阵法编写而出,第三个子程序FANSHU由范数的定义来编写的。之后,采用QuickWin绘图,设计程序,输出有关图像。

设计流程图:

含有系数的TXT文件 主程序 子程序 求出解 利用程序得出解,生成含解的文件,采用QuickWin编写程序

图像程序 生成图像 三、系统功能及系统详细设计

我所设计的系统的功能是求解线性病态方程组的解,并计算出系数矩阵的条件数。整体详细的设计思路如下:

(1)从文件读入系数矩阵、向量矩阵及对向量矩阵做微小变化后的原始数据,利用高斯消元法分别求解出线性方程组的原始解及变化后的解。

(2)设计求矩阵的逆矩阵的子程序和求范数的子程序,从文件中读入系数矩阵数据,调用两个子程序,由条件数的定义计算出系数矩阵的条件数。

(3)在QuickWin系统环境下编写程序绘制向量矩阵变化前后的两组解的折线变化情况。

(4)对比解的变化情况,结合系数矩阵条件数的大小分析变化的原因。得出正确的结论。

四.遇到的主要问题及解决办法

(1)格式输入输出问题

在输入系数生成TXT文件时,由于没有考虑程序设计时的格式输入输出问题,例如输入时未能按照要求输入系数,导致程序无法从文件中正确读入数据,造成计算错误。经过改正输入格式后问题得到解决,程序能够正确读取矩阵系数,进而为下面的计算提供保障。 (2)子程序设计中出现的问题

在用高斯消去法求线性方程组的解时,经过检验,得到的不是正确的解。仔细检验程序及对比有关参考书的程序举例之后发现问题出在每次调用子程序后,原来的存放数据的数组就被赋予了新的值,在后面直接再用这个数组便得不到正确的结果。于是在每次调用子程序之后重新读取数据,再次将数据赋给该数组,得出的结果就正确了。 (3)输出图像时出现的问题

在编写好绘图程序之后,整体执行程序时,先运行求解和求条件数的程序后,再打开绘图程序直接运行时就会出现多处错误(如下图),错误提示未定义的外部函数,而后面的函数都是QuickWin下的内部函数。后来通过向老师询问后知

道这时的系统环境并不是QuickWin。关闭当前的Workspace后再在QuickWin应用模式中打开绘图程序,运行就不存在问题了。

五.总结与心得体会

通过这两周以来的编程实践,我深刻认识到了FORTRAN90 编程语言的强大

功能与重要作用,尤其对于我们土建类这个专业,Fortran90将在我们今后的学习工作中发挥更大的作用。

这次实践当中,我收获了很多。

首先,我巩固了FORTRAN程序设计的知识,特别是图形操作部分。这次实践要求文件读入数据操作和数据分布图绘制,于是我花了大量的课余时间阅读课本知识和举例程序,最终成功独立完成了文件读入和图形绘制任务。

其次,以前学的知识都是分散的,不能在实际学习工作中发挥很大的作用。而这次实践之后,我感觉自己已经能够把所学的基础知识连成一个体系,初步有了系统程序设计的思想。包括如何正确分析问题,用怎样的数学思想,如何设计流程图,如何将这些思路用以有的知识通过程序的语言表示出来,如何调试程序,如何分析错误信息等等。希望在日后的求学过程中,可以学以致用,利用计算机编程的思想更为方便地解决工程中实际问题。

最后,在实践过程中各种问题很多,程序总不能成功运行。虽然如此却从未放弃,一遍一遍修改,最后终于成功。相信在实践过程中培养出的这种坚持不懈的精神,会让我受益终生。

六.参考文献

1.刘卫国 戴忠.主编.Fortran90 程序设计上机指导与习题选解(第二版).北京邮

电大学出版社2007

2.刘卫国 蔡旭晖.主编.fortran90 程序设计教程(第二版).北京邮电大学出版社2007

3.徐士良主编.Fortran常用算法程序集(第二版).清华大学出版社

本文来源:https://www.bwwdw.com/article/ag57.html

Top