




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北理工大学2016-2017第2学期 软件设计基础-C+课程设计报告设计名称:分别用牛顿迭代法、弦截法和二分法求根姓 名:温祥学 号:201614030414专业班级:无极非金属材料工程专业材4学 院:材料科学与工程学院设计时间:2017.06.04设计地点:学校01机房指导教师评语:教师评定:自评成绩: 指导教师签字: 年 月 日软件设计基础-C+课程设计报告 第 15 页,共 15 页目 录1.课程设计目的2.课程设计任务与要求3.课程设计说明书4.课程设计成果5.程序调试过程6.设计问题的不足和改进方案7.课程设计心得8.参考文献1课程设计目的软件设计基础-C+课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用软件设计基础-C+课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:分别用牛顿迭代法、弦截法和二分法求根(1)用设计和模块化C语言的思想来完成程序的设计;(2)分别编写牛顿迭代法、弦截法和二分法求根的函数。(3)在VC+6.0环境中,调试程序,及时查究错误,独立调试完成。(4)程序调试通过后,完成程序文档的整理,加必要的注释。(5)在基本要求达到后,进行创新设计,如利用输入文本文件提供矩阵的数据等。3课程设计说明书概要设计用户输入x0,计算机显示牛顿迭代法计算的值,用户分别输入x的范围,分别输出二分法和弦截法的计算值,并计算出各种方法的迭代次数,输出最小的迭代次数。模块说明:在我设计的程序中一共包括了七个模块,分别是:main模块、f函数模块、f1模块、nt模块、half模块、chord模块、cishu模块。这七个模块说明如下:1)main模块该函数无返回值。要实现的功能是询问x初值,输出牛顿迭代法的计算值,询问x的范围,输出二分法和弦截法的计算值。代码参见main函数。2)f模块该函数返回x的给定公式函数值。代码参见f函数。3)f1模块该函数返回给定公式的导数的函数值。代码参见f1函数。 4) nt模块主要使用for函数,判断是否满足精度要求,实现语句循环,使该函数返回牛顿迭代法的计算根。代码参见nt函数。5)half模块使用for函数,判断是否满足精度要求,使用if函数判断是否异号,实现语句循环,使该函数返回二分法计算的根。代码参见half函数。6)chord模块使用for函数,判断是否满足精度要求,使用if函数判断是否异号,实现语句循环,使该函数返回弦截法的计算值。代码参见chord函数。7)cishu模块 主要使用break,判断是否跳出循环,该函数返回迭代次数的函数值。 代码参见cishu函数。 模块结构图:每一次运算的过程可以由这几部分完成:用户输入x初值,计算牛顿迭代法的值并输出,用户输入x的范围,计算二分法和弦截法的值并输出结果,总共五个步骤:模块函数名称用户输入x初值main计算牛顿迭代法的值并输出nt用户输入x的范围main计算二分法half弦截法chord迭代次数cishu对于每一次运行,关注的数据有四个:x的初值,x的范围,x范围的函数值,x的迭代次数。详细设计 总体流程图:各功能模块流程图:1)main函数void main()while(1) /使函数一直运行coutn-牛顿迭代法-endl;couta;nt();coutn-二分法 弦截法求根-endl;coutbc;half();chord();cishu();2)f(double x)函数double f(double x) /给定公式 return (x*x*x-2*x*x+7*x+4); 3)f1(double x)函数double f1(double x) /求导 return (3*x*x-4*x+7); 4)nt(double a)函数 void nt() /牛顿迭代法double x0,x=a;for(int i=0;(fabs(x-x0)1e-6;i+) /判断是否满足精度x0=x;x=x0-f(x)/f1(x); /牛顿法公式nn=i;cout牛顿迭代法的结果为:x次数是nn1e-6;i+) /判断是否满足精度x0=(x1+x2)/2; /二分法公式找中点if(f(x0)*f(x1)0) /判断是否异号x2=x0; /若异号取右区间else /否则取左区间x1=x0; ef=i;cout二分法的结果为:x0次数为ef1e-6;i+) /判断是否满足精度x0=x2-(x2-x1)*f(x2)/(f(x2)-f(x1); /弦截法公式if(f(x1)*f(x0)0) /判断异号x2=x0; /若异号取右区间else /否则区左区间x1=x0;xj=i;cout弦截法的结果为:x0次数为xjendl;7) cishu函数void cishu() d0=nn; d1=ef; d 2=xj;int min=1000000;for(int i=0;i3;i+)if( dimin) min=di;coutn最少的次数为min,;break; /若dimin则跳出循环if(min= d0)cout是牛顿迭代法。endl;if(min= d1)cout是二分法。endl;if(min= d2)cout是弦截法。endl;4课程设计成果程序的源代码#includeusing namespace std;#includedouble f(double x); /声明函数double f1(double x);double a,b,c;int nn=0,ef=0,xj=0;int d3; /定义整型数组d,包含3个数组元素void nt();void half();void chord();void cishu();void main()while(1) /使函数一直运行coutn-牛顿迭代法-endl;couta;nt();coutn-二分法求根-endl;coutbc;half();cishu();coutn-弦截法求根-endl;coutbc;chord();cishu();double f(double x) /给定公式 return (x*x*x-2*x*x+7*x+4);double f1(double x) /求导return (3*x*x-4*x+7);void nt() /牛顿迭代法double x0,x=a;for(int i=0;(fabs(x-x0)1e-6;i+) /判断是否满足精度x0=x;x=x0-f(x)/f1(x); /牛顿法公式nn=i;cout牛顿迭代法的结果为:x次数是nn1e-6;i+) /判断是否满足精度x0=(x1+x2)/2; /二分法公式找中点if(f(x0)*f(x1)0) /判断是否异号x2=x0; /若异号取右区间else /否则取左区间x1=x0; ef=i;cout二分法的结果为:x0次数为ef1e-6;i+) /判断是否满足精度x0=x2-(x2-x1)*f(x2)/(f(x2)-f(x1); /弦截法公式if(f(x1)*f(x0)0) /判断异号x2=x0; /若异号取右区间else /否则区左区间x1=x0;xj=i;cout弦截法的结果为:x0次数为xjendl;void cishu() d0=nn; d1=ef; d 2=xj;int min=1000000;for(int i=0;i3;i+)if( dimin) min=di;coutn最少的次数为min,;break; /若dimin则跳出循环if(min= d0)cout是牛顿迭代法。endl;if(min= d1)cout是二分法。endl;if(min= d2)cout是弦截法。endl;运行结果5.程序调试过程调试步骤使用户输入x初值0.5,计算牛顿迭代法的正确计算值,输入x的范围(-1,1),计算二分法的正确计算值,输入x的范围(-1,0),计算弦截法的正确计算值,而且可以计算出函数的迭代次数,比较3种方法的迭代次数,并输出最小迭代次数。遇到的问题二分法和弦截法函数处,区间的取舍有困难。对公示的理解不到位,常常使计算结果误差很大,甚至得不到正确结果。6.设计问题的不足和改进方案1、设计问题的不足经过和同学之间的讨论,以及网上借鉴前辈的源程序,最终我的程序基本完成了任务中规定的设计内容,程序运行正确,并求出三种方法的迭代次数,并输出最少的迭代次数。但在进行程序设计的过程中,发现自己仍然对许多方面的内容理解不够透彻,在设计程序时,需要收集大量的资料,借鉴前辈的成果,在实际设计这一方面仍缺乏经验,需要在今后的学习中,加大课程设计方面的练习,提高自己的编程能力。2、对课题提出更完善的方案 将程序运行时输入的内容保存在外存储器中,在程序运行结束以及下次运行时,仍能够使用已保存的数据,实现程序的实用性。增加人机互动模块,选择退出,继续等功能。7.课程设计心得 经过本次课设,我不仅熟悉了牛顿迭代法、二分法和弦截法的运算原理,加深了对程序语句的理解与运用,而且掌握了程序设计的基本步骤,熟悉了如何简化一个复杂问题的基本思路。 当然,经过这种实践类的作业,我也充分认识到自己知识的严重欠缺,对程序语句的理解和熟练程度不够, 面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题,才能准确而有序的得到正确的结果。今后,我要谦虚而谨慎的学习相关科学文化知识。 总之,通过分别用牛顿迭
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护士文职考试试题及答案
- 普外科基础考试题及答案
- 2025年征收业务考试试题及答案
- 医生应聘考试试题及答案
- 2025年人文旅游考试试题及答案
- 2025年儿童保健儿童膳食及生长发育健康评估测试卷答案及解析
- 2025年呼吸科呼吸机操作技能测评答案及解析
- 2025年工程招聘考试试题及答案
- 2025年城镇教师考试试题及答案
- 行政职业能力测验公务员考试行测试题与参考答案2025年
- 外销合同协议书英文翻译
- 灌区续建配套与节水改造规划报告
- 财务咨询外包协议
- 小学四年级数学学情分析报告
- 2023-2024学年上海市杨浦区六年级上学期期中考试语文试卷含详解
- 农行超级柜台业务知识考试题库(含答案)
- 旅游接待计划表
- 新标准大学英语(第三版)综合教程3(智慧版)课件 Unit6 Path to prosperity
- 3认识你自己-大学生自我意识发展课件
- 中药学全套(完整版)课件
- GB 1886.232-2016食品安全国家标准食品添加剂羧甲基纤维素钠
评论
0/150
提交评论