版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2016-2017第2学期软件设计基础-C+课程设计报告设计名称:分别用牛顿迭代法、弦截法和二分法求根姓名:温祥学号:201614030414专业班级:无极非金属材料工程专业材4学院:材料科学与工程学院设计时间:2017.06.04设计地点:学校01机房指导教师评语:教师评定:自评成绩:指导教师签字:软件设计基础-C+课程设计报告第 页,共15页目录1课程设计目的2课程设计任务与要求3课程设计说明书4课程设计成果5程序调试过程6设计问题的不足和改进方案7课程设计心得8参考文献课程设计目的软件设计基础-C+课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C+的
2、知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。课程设计任务与要求:要求:本次课程设计利用软件设计基础-C+课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:分别用牛顿
3、迭代法、弦截法和二分法求根(1)用设计和模块化C语言的思想来完成程序的设计;(2)分别编写牛顿迭代法、弦截法和二分法求根的函数。(3)在VC+6.0环境中,调试程序,及时查究错误,独立调试完成。(4)程序调试通过后,完成程序文档的整理,加必要的注释。(5)在基本要求达到后,进行创新设计,如利用输入文本文件提供矩阵的数据等。课程设计说明书概要设计用户输入xO,计算机显示牛顿迭代法计算的值,用户分别输入x的范围,分别输出二分法和弦截法的计算值,并计算出各种方法的迭代次数,输出最小的迭代次数。模块说明:在我设计的程序中一共包括了七个模块,分别是:main模块、f函数模块、fl模块、nt模块、half
4、模块、chord模块、cishu模块。这七个模块说明如下:main模块该函数无返回值。要实现的功能是询问x初值,输出牛顿迭代法的计算值,询问x的范围,输出二分法和弦截法的计算值。代码参见main函数。f模块该函数返回x的给定公式函数值。代码参见f函数。fl模块该函数返回给定公式的导数的函数值。代码参见fl函数。nt模块主要使用for函数,判断是否满足精度要求,实现语句循环,使该函数返回牛顿迭代法的计算根。代码参见nt函数。half模块使用for函数,判断是否满足精度要求,使用if函数判断是否异号,实现语句循环,使该函数返回二分法计算的根。代码参见half函数。chord模块使用for函数,判断
5、是否满足精度要求,使用if函数判断是否异号,实现语句循环,使该函数返回弦截法的计算值。代码参见chord函数。cishu模块软件设计基础-C+课程设计报告第5页,共15页主要使用break,判断是否跳出循环,该函数返回迭代次数的函数值。代码参见cishu函数。模块结构图:每一次运算的过程可以由这几部分完成:用户输入x初值,计算牛顿迭代法的值并输出,用户输入X的范围,计算二分法和弦截法的值并输出结果,总共五个步骤:模块函数名称用户输入X初值main计算牛顿迭代法的值并输出nt用户输入X的范围main计算二分法half弦截法chord迭代次数cishu对于每一次运行,关注的数据有四个:X的初值,X
6、的范围,X范围的函数值,X的迭代次数。详细设计总体流程图:软件设计基础-C+课程设计报告第 页,共15页t、i二。弁祁兀;斤冷,匕7坯栽选流幅.因,V=tM劲/工|T(结束)T17x二九人二X。XrAKio1二內I|E2Q_G卩卸人上、力:&2、1/乔-I&二0i二0.1仏二心人二XcIT各功能模块流程图:1)main函数voidmain()while(l)使函数一直运行coutvvn牛顿迭代法vvendl;coutvv请输入x0:;cina;nt();coutvvn一分法弦截法求根vvendl;coutvv请输入根所在的范围:;cinbc;half();chord();cishu();2)f
7、(doublex)函数doublef(doublex)/给定公式return(x*x*x-2*x*x+7*x+4);3)f1(doublex)函数doublef1(doublex)/求导return(3*x*x-4*x+7);4)nt(doublea)函数voidnt()/牛顿迭代法doublex0,x=a;for(inti=0;(fabs(x-x0)le-6;i+)/判断是否满足精度x0=x;x=xO-f(x)/fl(x);/牛顿法公式nn=i;cout牛顿迭代法的结果为:x次数是nnle-6;i+)/判断是否满足精度x0=(xl+x2)/2;/二分法公式找中点if(f(x0)*f(xl)0
8、)/判断是否异号x2=x0;/若异号取右区间else/否则取左区间xl=xO;ef=i;cout二分法的结果为:x0次数为efle-6;i+)/判断是否满足精度x0=x2-(x2-xl)*f(x2)/(f(x2)-f(xl);/弦截法公式if(f(x1)*f(x0)0)/判断异号x2=x0;/若异号取右区间else/否则区左区间x1=x0;xj=i;cout弦截法的结果为:x0次数为xjendl;7)cishu函数voidcishu()d0=nn;dl=ef;d2=xj;intmin=1000000;for(inti=0;iv3;i+)if(dimin)min=di;coutvvnvv最少的次
9、数为vvminvv,;break;若diusingnamespacestd;#includemath.hdoublef(doublex);doublefl(doublex);doublea,b,c;intnn=0,ef=0,xj=0;intd3;voidnt();voidhalf();voidchord();voidcishu();voidmain()while(1)/声明函数/定义整型数组d,包含3个数组元素/使函数一直运行coutn牛顿迭代法endl;cout请输入xO:;cina;nt();coutn二分法求根endl;cout请输入根所在的范围:;cinbc;half();cishu(
10、);coutn弦截法求根endl;cout请输入根所在的范围:;cinbc;chord();cishu();dreturn(x*x*x-2*x*x+7*x+4);:ubleex)return(3*x*x-4*x+7);nt()doublex0,x=a;for(inti=0;(fabs(x-x0)le-6;i+)x0=x;x=x0-f(x)/f1(x);/给定公式/求导/牛顿迭代法/判断是否满足精度/牛顿法公式nn=i;cout牛顿迭代法的结果为:x次数是nnendl;voidhalf()/二分法doublex0,xl,x2;x1=b;x2=c;for(inti=0;(fabs(xl-x2)le
11、-6;i+)/判断是否满足精度x0=(xl+x2)/2;/二分法公式找中点/判断是否异号x2=x0;elseef=i;x1=x0;/若异号取右区间/否则取左区间cout二分法的结果为:x0次数为efendl;voidchord()/弦截法doublex0,xl,x2;x1=b;x2=c;for(inti=0;(fabs(xlx2)le6;i+)/判断是否满足精度x0=x2-(x2-xl)*f(x2)/(f(x2)-f(xl);/弦截法公式辻(f(xl)*f(x0)0)/判断异号x2=x0;/若异号取右区间else/否则区左区间x1=x0;xj=i;cout弦截法的结果为:x0次数为xjendl
12、;voidcishu()d0=nn;d1=ef;d2=xj;intmin=1000000;for(inti=0;i3;i+)if(dimin)min=di;coutn最少的次数为min,;break;/若dimin则跳出循环辻(min=d0)cout是牛顿迭代法。endl;辻(min=d1)cout是二分法。endl;辻(min=d2)cout是弦截法。endl;运行结果程序调试过程调试步骤使用户输入X初值0.5,计算牛顿迭代法的正确计算值,输入x的范围(T,l),计算二分法的正确计算值,输入x的范围(-1,0),计算弦截法的正确计算值,而且可以计算出函数的迭代次数,比较3种方法的迭代次数,并
13、输出最小迭代次数。遇到的问题二分法和弦截法函数处,区间的取舍有困难。对公示的理解不到位,常常使计算结果误差很大,甚至得不到正确结果。设计问题的不足和改进方案1、设计问题的不足经过和同学之间的讨论,以及网上借鉴前辈的源程序,最终我的程序基本完成了任务中规定的设计内容,程序运行正确,并求出三种方法的迭代次数,并输出最少的迭代次数。但在进行程序设计的过程中,发现自己仍然对许多方面的内容理解不够透彻,在设计程序时,需要收集大量的资料,借鉴前辈的成果,在实际设计这一方面仍缺乏经验,需要在今后的学习中,加大课程设计方面的练习,提高自己的编程能力。2、对课题提出更完善的方案将程序运行时输入的内容保存在外存储器中,在程序运行结束以及下次运行时,仍能够使用已保存的数据,实现程序的实用性。增加人机互动模块,选择退出,继续等功能。课程设计心得经过本次课设,我不仅熟悉了牛顿迭代法、二分法和弦截法的运算原理,加深了对程序语句的理解与运用,而且掌握了程序设计的基本步骤,熟悉了如何简化一个复杂问题的基本思路。当然,经过这种实践类的作业,我也充分认识到自己知识的严重欠缺,对程序语句的理解和熟练程度不够,面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题,才能准确而有序的得到正确的结果。今后,我要谦虚而谨慎的学习相关科学文化知识。总之,通过分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新理论与案例分析复习题及答案详解
- 2026年二氯乙烷行业市场调查报告
- 2026年肉芽肿性唇炎模拟题及答案详解
- 2026年海马结构模拟试题(含答案)
- 思政考试例题分析及答案详解
- 税务师税法一模拟考试题试题及答案详解
- 2026年平安性向模拟题及答案详解
- 2026年生病健康模拟题及答案详解
- 2026年寝室清理模拟题及答案详解
- 2026年通信工程师(中级)职业水平考试模拟题解析及答案详解
- 2026秋苏教版八年级上册生物全册每课知识点清单
- 《TCWTCA装配式高桩码头节点连接技术规程》
- 2026年校招:中国国际航空试题及答案
- 2026中国建设银行招聘考试(信息技术类)历年参考题库含答案详解
- 2026年工贸企业有限空间作业专项整治考核试卷及答案
- 天津市南开区2025-2026学年九年级上学期期中质量检测历史试题(含答案)
- 2025年国家电网考试历年真题库(附参考答案)
- 既有线施工安全注意事项培训课件
- 2026届江西重点中学协作体高三第二次联考政治试卷
- 危险化学品安全管理2026年培训
- 小学生对自然观察活动的参与体验与科学素养培养课题报告教学研究课题报告
评论
0/150
提交评论