38基于牛顿迭代法弦截法和二分法求根.docVIP

38基于牛顿迭代法弦截法和二分法求根.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
38基于牛顿迭代法弦截法和二分法求根

编号:38 PAGE  第 PAGE 9页/共 NUMPAGES 9 页 ·河北工业大学计算机软件技术基础(VC)2013年课程设计报告 学院 班级 姓名 学号 成绩____ 一、题目: 基于牛顿迭代法、弦截法和二分法求根(38) 二、设计思路 1、总体设计 分析程序的功能 用户输入x0,计算机显示牛顿迭代法计算的值,用户输入x的范围,输出二分法和弦截法的计算值,并计算出各种方法的迭代次数,输出最小的迭代次数。 系统总体结构: 每一次运算的过程可以由这几部分完成:用户输入x初值,计算牛顿迭代法的值并输出,用户输入x的范围,计算二分法和弦截法的值并输出结果,总共五个步骤: 模块函数名称用户输入x初值main计算牛顿迭代法的值并输出nt用户输入x的范围main计算二分法half弦截法chord迭代次数cishu对于每一次运行,关注的数据有四个:x的初值,x的范围,x范围的函数值,x的迭代次数。 2、各功能模块的设计:说明各功能模块的实现方法 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函数 3、设计中的主要困难及解决方案 二分法和弦截法函数处,区间的取舍有困难。 对公示的理解不到位,常常使计算结果误差很大,甚至得不到正确结果。 4、你所设计的程序最终完成的功能 说明你编制的程序能完成的功能 能够使用户输入x初值和x的范围,计算牛顿迭代法和二分法以及弦截法的正确计算值,而且可以计算出函数的迭代次数,并输出最小迭代次数。 准备的测试数据及运行结果 X0=0.5 范围(-1,1) 三、程序清单 1)main函数 void main() { while(1) //使函数一直运行 { cout\n牛顿迭代法endl; cout请输入x0:; cina; nt(); cout\n二分法 弦截法求根endl; cout请输入根所在的范围:; cinbc; 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次数是nnendl; }5)half(double b,double c)函数 void half() //二分法 { double x0,x1,x2; x1=b; x2=c; for(int i=0;(fabs(x1-x2))1e-6;i++) //判断是否满足精度 { x0=(x1+x2)/2;

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档