收藏 分销(赏)

用高斯列主元消元法解线性方程组.doc

上传人:xrp****65 文档编号:7447278 上传时间:2025-01-05 格式:DOC 页数:16 大小:156.50KB
下载 相关 举报
用高斯列主元消元法解线性方程组.doc_第1页
第1页 / 共16页
用高斯列主元消元法解线性方程组.doc_第2页
第2页 / 共16页
用高斯列主元消元法解线性方程组.doc_第3页
第3页 / 共16页
用高斯列主元消元法解线性方程组.doc_第4页
第4页 / 共16页
用高斯列主元消元法解线性方程组.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、沈 阳 航 空 工 业 学 院 课程设计班 级 :6402104班学 号 :200604021139姓 名 :郑松指导教师 :刘成07年9 月14日课程设计任务书院系:电子 专业:电子信息工程 班级:6402104学号:200604021139题目:用高斯列主元消元法解线性方程组一、课程设计时间2007年9月10日至2007年9月14日,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:请用高斯列主元消元法解下列线性方程组:三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“输入数据”、“开始计算”、 “

2、退出”3项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩:六、教师评语:目 录一、程序设计题目1二、需求分析(高斯列主元消元法)1三、程序流程图3四、核心技术的实现方法及程序段6五、个人总结8六、参考文献9七、源程序9 沈 阳 航 院 设 计 用 纸一、程序设计题目用C语言编写软件完成以下任务:请用高斯列主元消元法解下列线性方程组:二、需求分析(高斯列主元消元法)方法说明(以4阶为例):第1步消元在增广矩阵(A,b)第一列中

3、找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b)做初等行变换使原方程组转化为如下形式:第2步消元在增广矩阵(A,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为:第3步消元在增广矩阵(A,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为:按x4 x3 x2 x1 的顺序回代求解出方程组的解附:下面三种变换称为初等行变换: 对调两行; 以数k0乘某一行中的所有元素; 把某一行所有元素的k倍加到另一行对应的元素上去。按照解题的思路,整个程序大概

4、由以下几个部分组成:输入方程组;判断线性方程组是否合法;交换行的矩函数(change);比较系数大小的函数(mymax);菜单的选择(message);开始计算;退出程序等。除了以上主要部分外,程序还用到了if.和switch选择语句,对程序的进一步简化起到重要作用,使源程序显的更加简洁明了。三、程序流程图 总体流程图(一)定义数组xNUMBER,变量r,k,i,j,celect判断celect是否等于esc是 否 i = 1 i = n 输入系数和向量 j = 1 j = n+1 将输入的数据存入Aij中退 j + i + k = 1 k = n-1 出 调用mymax函数比较系数大小 判断

5、ark是否等于零 是 否 判断f是否不等于k 是 否 此方程组不合法 调用change 不执行 函数 i = k+1 i = n j = k+1 j =1 j = k+1 j = 1j = k + 1 j = np1= p1 + Akj * xjj + k -输出线性方程组的结果调用message函数变换行的函数流程图(二)定义变量i=1 i=n+1 i+A0i=AriAri=AkiAki=A0i 判断系数大小的流程图(三) 定义变量k,I,p2 判断fabs(Aik)是否大于p2是 否i=k i=n i+ 不p2=fabs(Aik) 执 f=i返回p2的值 行 实现菜单选择的流程图(四)开始

6、输出提示信息输入变量值值值值量入变量值退出返回主函数输出信息结束程序运行结果如图: (图一) (图二)若线性方程组为四维方程时: (图三)四、核心技术的实现方法及程序段源程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数中交换行的距函数、比较系数大小的函数和实现菜单选择的函数是程序中较为核心的部分,下面分别进行说明:1、 此模块通过change()函数改变矩阵行的顺序 ,具体程序段如下:change(int r,int k) /*交换行的矩函数*/ int i;for(i=1;i=n+1;i+)A0i=Ari; for(i=1;i=n+

7、1;i+) Ari=Aki;for(i=1;i=n+1;i+)Aki=A0i; 2、 此模块通过mymax()函数实现矩阵行的升序排列,具体程序段如下:float mymax(int m) /*比校系数大小的函数*/int i;float p2=0;for(i=m;ip2) P2=fabs(Aim); f=i; return p2; 3、 模块通过message函数实现程序的重新运算,否则退出,错误则不执行,至此程序完毕,具体程序段如下:message() /*实现菜单选择的函数*/printf(nn 继续运算按 Enter ,退出程式按 Esc!);switch(getch()case En

8、ter: main();case Esc: exit(0);default:printf(nn不合法的输入!);message();五、个人总结一整周的课程设计艰难奋斗的同时让我学会了很多C语言的知识,使我对C语言更充分的认识了它的实用性,自己基本掌握了有关函数与循环语句的用法及规则。该程序完成不是一帆风顺的,在编写过程中遇到了许多的疑难问题有幸得到了同学与老师的帮助,同时自己也翻阅了相关书籍,努力编好与完善。刚开始对自己解线性方程组的课题无从下手,对用“高斯列主消元法”更是莫名其妙。虽然源程序不是非常完美,不过在自己的不屑努力下还是完成了课题。这次课设在一定程度上给自己的创新充分到发挥,希望

9、以后能有更多的机会参加课程设计。六、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006七、源程序#include#include#include#include#define number 40 /*宏定义(若线性方程组的维数大可以把number定义的值更大些)*/#define Esc 0x1b#define Enter 0x0d float Anumbernumber+1 ,ark;int f,n;change(int r,int k);float mymax(int m);message();main() fl

10、oat xnumber; /*定义数组X用于储存方程组的解*/ int r,k,i,j; char celect; printf(nn用Gauss列主元消元法解线性方程组); printf(nn1.开始解方程组请按Enter.); printf(nn2.退出程式请按Esc.); celect=getch(); if(celect=Esc) exit(0); printf(nn 请输入方程组的维数:n=); scanf(%d,&n); printf( nn现在输入方程组系数矩阵A和向量b:); for(i=1;i=n;i+) printf(nn请输入a%d1-a%d%d系数和向量b%d:,i,i

11、,n,i); /*把线性方程的系数复于数组中*/ for(j=1;j=n+1;j+) scanf(%f,&Aij); for(k=1;k=n-1;k+) ark=mymax(k); if(ark=0) /*判断线性方程组是否合法*/ printf(nn此方程组无解!);message(); else if(f!=k) change(f,k); for(i=k+1;i=n;i+) for(j=k+1;j=1;k-) float p1=0; for(j=k+1;j=n;j+) p1=p1+Akj*xj; xk=(Akn+1-p1)/Akk; /*对线性方程组求解的运算(依次求的前面的、未知树的解)

12、*/ for(i=1;i=n;i+) printf( nnx%d=%f,i,xi); message();change(int r,int k) /*交换行的函数 */ int i; for(i=1;i=n+1;i+) A0i=Ari; for(i=1;i=n+1;i+) Ari=Aki; for(i=1;i=n+1;i+) Aki=A0i;float mymax(int m) /*比较系数大小的函数*/ int i; float p2=0; for(i=m;ip2) /*对数组中的元素进行取绝对值比较大小的运算*/ p2=fabs(Aim); f=i; return p2;message() /*菜单选择的函数*/ printf(nn 继续运算按 Enter ,退出程式按 Esc!); switch(getch() case Enter: main(); case Esc: exit(0); default:printf(nn不合法的输入!);message(); 13

展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服