欢迎来到天天文库
浏览记录
ID:13476040
大小:134.00 KB
页数:17页
时间:2018-07-22
《课程设计报告-高斯列主元消元法解线性方程组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《计算机数值方法》课程设计报告题目高斯列主元消元法解线性方程组学生姓名班级计科12学号成绩指导教师延安大学计算机学院2014年9月1日学号:姓名:题目:用高斯列主元消元法解线性方程组内容用C语言编写软件完成以下任务:用高斯列主元消元法解下列线性方程组:指导教师和学生签字指导教师:________学生签名:________成绩:教师评语:目录一、程序设计题目1二、需求分析(高斯列主元消元法)1三、程序流程图3四、核心技术的实现方法及程序段6五、个人总结8六、参考文献9七、源程序9《计算机数值方法》课程设计报告一、程序设计题目用C语言
2、编写软件完成以下任务:用高斯列主元消元法解下列线性方程组:二、需求分析(高斯列主元消元法)方法说明(以4阶为例):第1步消元——在增广矩阵(A,b)第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b)做初等行变换使原方程组转化为如下形式:第2步消元——在增广矩阵(A,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为:14《计算机数值方法》课程设计报告第3步消元——在增广矩阵(A,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与
3、第二行交换,再对(A,b)做初等行变换使原方程组转化为:按x4àx3àx2àx1的顺序回代求解出方程组的解附:下面三种变换称为初等行变换:①对调两行;②以数k≠0乘某一行中的所有元素;③把某一行所有元素的k倍加到另一行对应的元素上去。按照解题的思路,整个程序大概由以下几个部分组成:输入方程组;判断线性方程组是否合法;交换行的矩函数(change);比较系数大小的函数(mymax);菜单的选择(message);开始计算;退出程序等。除了以上主要部分外,程序还用到了if.和switch选择语句,对程序的进一步简化起到重要作用,使源程
4、序显的更加简洁明了。14《计算机数值方法》课程设计报告三、程序流程图总体流程图(一)定义数组x[NUMBER],变量r,k,i,j,celect判断celect是否等于esc是否i=1i<=n输入系数和向量j=1j<=n+1将输入的数据存入A[i][j]中退j++i++k=1k<=n-1出调用mymax函数比较系数大小判断ark是否等于零是否判断f是否不等于k是否此方程组不合法调用change不执行函数i=k+1i<=nj=k+1j<=n+1j++k++x[n]=A[n][n+1]/A[n][n]k=n-1k>=1j=k+1j<=
5、nme=me+A[k][j]*x[j]j++k--输出结果调用message函数A[i][j]=A[i][j]–A[k][j]*A[i][k]/A[k][k]出j++k++x[u]=A[n][n+1]/A[n][n]求解最后一个方程组的解k=n-1k>=1j=k+1j<=np1=p1+A[k][j]*x[j]j++k--输出线性方程组的结果调用message函数14《计算机数值方法》课程设计报告变换行的函数流程图(二)定义变量i=1i<=n+1i++A[0][i]=A[r][i]A[r][i]=A[k][i]A[k][i]=A[0
6、][i]判断系数大小的流程图(三)定义变量k,I,p2判断fabs(A[i][k])是否大于p2是否i=ki<=ni++不p2=fabs(A[i][k])执f=i返回p2的值行14《计算机数值方法》课程设计报告实现菜单选择的流程图(四)开始输出提示信息输入变量值值值值量入变量值退出返回主函数输出信息结束14《计算机数值方法》课程设计报告程序运行结果如图:(图一)(图二)14《计算机数值方法》课程设计报告若线性方程组为四维方程时:(图三)四、核心技术的实现方法及程序段源程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式
7、调用其他函数来实现要求的所有功能。在这些函数中交换行的距函数、比较系数大小的函数和实现菜单选择的函数是程序中较为核心的部分,下面分别进行说明:1、此模块通过change()函数改变矩阵行的顺序,具体程序段如下:change(intr,intk)/*交换行的矩函数*/{inti;for(i=1;i<=n+1;i++)A[0][i]=A[r][i];14《计算机数值方法》课程设计报告for(i=1;i<=n+1;i++)A[r][i]=A[k][i];for(i=1;i<=n+1;i++)A[k][i]=A[0][i];}1、此模块通
8、过mymax()函数实现矩阵行的升序排列,具体程序段如下:floatmymax(intm)/*比校系数大小的函数*/{inti;floatp2=0;for(i=m;i<=n;i++)if(fabs(A[i][m])>p2){P2=fabs(A[i]
此文档下载收益归作者所有