




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号:35XX大学计算机软件技术基础(VC)课程设计报告学院 XX班级 XX姓名XX 学号XX 成绩 _ _一、题目:求线性代数方程组的解(高斯消去法)(35)二、设计思路1、总体设计1)程序的功能:通过列主元高斯消去法来求解线性代数方程组的解。2)系统总体结构:main函数功能:输入方程和未知量个数,调用enter、remove、judge函数,求解线性代数方程组的解。 enter函数功能:在确定了方程个数和未知量个数的情况下,输入由未知量系数和等式右边常数确定的矩阵(增广阵)。remove函数功能:利用列主元消去法实现方程组的消元,即将增广阵转化到上三角阵。judge函数功能:通过求由未知量系数构成的矩阵(系数阵)和增广阵的秩,返回给主函数不同的值,用以判断方程组的解的情况(无解、无穷多解或唯一解)。 2、各功能模块的设计:main函数实现方法:定义两个整型变量row和col用于接收方程的个数和未知量的个数加一,定义double型的二维数组a100100用于接收增广阵,调用enter函数输入增广阵(相当于输入所求方程组),调用remove函数用列主元消去法得到增广阵对应的上三角阵(相当于为方程组消元),调用judge函数得到增广阵和系数阵的秩,从而得到判断方程解的情况的返回值,再根据返回值判断方程组的解的情况,在无解和无穷多解得情况下输出提示信息,在有唯一解的情况下,得到并输出唯一解。enter函数实现方法:通过定义指针数组*p10和二级指针*pp将a00的地址和row和col作为实参传递给enter函数的形参,从而在enter函数中对a100100进行操作,即输入增广阵。remove函数实现方法:通过定义指针数组*p10和二级指针*pp将a00的地址和row和col作为实参传递给enter函数的形参,从而在enter函数中对增广阵进行操作,从i=0开始,找到aii所在列中aii及以下元素中的最大值,并通过换行将这个最大值换到第i列,经检查aii即以下元素不都为零后,经过行与行之间的四则运算将换行以后的aii以下元素都消为0,倒数第二个主对角线元素所在的行,最终实现将增广阵化为上三角阵,即为方程组消元的目的。judge函数实现方法:定义一个整型变量,将其初始值定义为0,作为增广阵中元素全都是零的行数的累加器,又另定义一个整型变量,将其初始值定义为0,作为每一行中0的个数的累加器,根据两个累加器最终的值得到增广阵地秩,同样方法得到系数矩阵的秩,从而使函数返回出用于判断解的情况的值。3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)困难1:在实现将增广阵化为上三角阵地过程中,多次用到for循环,虽然编译连接无错,但是多次出现循环语句只执行一次,即使循环条件满足也不继续循环的情况,还有多次出现循环后所得执行结果不正确的情况。解决方案:将多重循环拆开成多个单循环,尽量减少循环的次数,根据所需验证的循环编写简单容易的小程序,用以鉴别这个循环是不是错的,从而一步步缩小范围,找到出现错误的小循环后在针对这个小循环再通过编写简单容易的小程序进行检查和验证,最终发现问题所在,将程序中出错的地方改正后,使得循环正常,得到正确运行结果。2)困难2:判断出方程组有唯一解后,对于通过什么样的程序解除方程组的解无从下手。解决方法:将C+编程问题暂时放到一边,而是转向实际线性方程组通过高斯消元法求解的问题,通过在实际问题中分析发现唯一解时求解每一个未知量所用的方法和所遵循的规律,再将这些方法和规律通过C+程序体现出来,从而得到求解所用的正确程序。4、你所设计的程序最终完成的功能1)编制的程序能完成的功能:按要求在输入一个线性方程组的方程个数、未知量个数和未知量前的系数以及等式右边的常数后,能够判断出此方程组解的情况,在无解和有无穷多解时输出相应的提示信息,在有唯一解时输出相应的提示信息以及该方程组的解。2)准备的测试数据及运行结果3X1+2X2+X3=14X1+X2+X3=102X1+3X2-X3=1 运行结果:X1+2X2+3X3=40X1+0X2+0X3=95X1+6X2+7X3=8运行结果:X1+X2+X3=4X1+X2=6 运行结果:三、程序清单本程序包含main.cpp、enter.h、remove.h、judge.h四个文件1、main.cpp文件清单#include#include#include enter.h#include remove.h#include judge.hvoid main()int row,col;coutrow;coutcol;double a100100,*pp,*p100;for(int i=0;irow;i+)pi=ai;pp=p;enter(pp,row,col);/调用enter函数remove(pp,row,col);/调用remove函数int number=judge(pp,row,col);/调用judge函数 if(number=0)cout-结果-endl;cout此方程组无解endl; /无解时予以提示 if(number=-1)cout-结果-endl;cout此方程组有无穷多解endl; /有无穷多解时予以提示if(number=1)cout-结果-endl;cout此方程组有唯一解=0;i-)double t=aicol-1;for(int j=col-2;ji;j-)t=t-aij*xj;xi=t/aii;for(i=0;icol-1;i+)coutxi+1=xit; /依次输出方程组的解coutendl;2、enter.h文件清单void enter(double *q,int m,int n)cout请按行输入未知数前面的系数和等式右边的常数:endl;for(int i=0;im;i+)for(int j=0;jqij;3、remove.h文件清单void remove(double *q,int m,int n) int min=m;if(n-1m)min=n-1;for(int i=0;imin-1;i+)int k=i;double max=qii;for(int j=i+1;jfabs(max)max=qji;k=j; /找到第i列从aii开始的绝对值最大的元素if(k!=i)for(int j=0;jn;j+)double mat=qij;qij=qkj;qkj=mat; /通过换行以保证主对角线上的元素是其所在位置及以下元素中绝对值最大的一个int t=0;for(j=i;jm;j+)if(qji=0)t+; /在消元前判断aii及其所在列以下元素是否都为零,不都为零再进行消元if(t!=m-i) for(int j=i+1;j=i;k-) qjk=qjk-qik*qji/qii;for(i=0;in-2;i+)for(int j=i+1;jm;j+)qji=0; /保证经消元后得到上三角阵4、judge.h文件清单int judge(double *q,int m,int n) int r1=m;for(int i=0;im;i+)int g=0;for(int j=0;jn;j+)if(qij=0)g+;if(g=n)r1=r1-1; /求出增广矩阵的秩int r2=m;for(i=0;im;i+)int h=0;for(int j=0;jn-1;j+)if(qij=0)h+;if(h=n-1)r2=r2-1; /求出系数矩阵的秩if(r1=n-1&r2=n-1)return 1;else if(r1=r2&r1n-1)return -1; /据不同的秩的情况返回不同的值 else return 0;四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价:该程序虽然可以判断出方程组的解的情况,但是在有无穷多解时,还不能像实际求解线性方程组时对于无穷多解的情况可以得出其通解,所以该程序还仍待改善,但从总体上说还是能满足一定量的线性方程组求解问题的。2、对课题提出更完善的方案:能够编出解决所有线性代数方程组问题的程序,即在无解时输出提示信息,在有唯一解时输出提示信息和方程组的解,在有无穷多解时输出提示信息和方程组的通解。五、收获及心得体会1、通过本次课程设计,自己在哪些方面的能力有所提高。由于本次课程中所编写的程序用到大量的for循环,所以在使用多重循环和控制循环条件方面的能力得到了很大的提升,对于函数的调用,用二级指针处理二维数组方面的问题也有了更深层的理解。2、 收获和心得体会:本次课程设计,充分用到了将理论转化为实践的能力,平时上课大都停留在理论阶段,上机时也大都是通过模仿例题将课后习题解决,而这次课程设计,将一个独立的题目,呈现在我们眼前,没有了可以模仿的对象,需要自己将课本上学到的东
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木工小合同(标准版)
- 车库合同和购房合同(标准版)
- 文化适应辅导创新创业项目商业计划书
- 海水养殖扇贝创新创业项目商业计划书
- 海带美容品创新创业项目商业计划书
- 工地c类安全员及答案题库
- 2025年商业用房委托投资经营合同范本
- 2025煤炭买卖合同范本管理资料
- 2025年网络信息服务合同协议
- 2025中外合作开发合同(太阳能电池制造)
- GB/T 46239.1-2025物流企业数字化第1部分:通用要求
- 2025年核电池行业研究报告及未来发展趋势预测
- 2025重庆机场集团有限公司社会招聘150人(第二次)考试参考题库及答案解析
- 2025年汽车制造业供应链风险管理案例分析报告
- 社区精神障碍工作总结
- 2025北京房山区区直部门和乡镇(街道)全日制临聘人员招聘37人考试参考题库及答案解析
- 技术方案评审与验收标准模板
- 镀膜车间安全培训课件
- 中水资源化综合利用建设项目规划设计方案
- 政府采购管理 课件 第十三章 政府采购绩效评价
- 机场安检危险品运输课件
评论
0/150
提交评论