- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计应用.ppt
程序设计应用 迭 代 法 迭代法是一种不断用变量的旧值递推新值的过程。迭代算法是用计算机解决问题的一种基本方法。 例: 用迭代法求x= 。 求平方根的迭代公式为: ,要求前后两次求出的x的差的绝对值小于 。 #include math.h #include stdio.h void main() { float x,x1,a; printf(Input a:); scanf(%f,a); x=a/2; x1=(x+a/x)/2; while(fabs(x1-x)1e-5) { x=x1; x1=(x+a/x)/2; } printf(root=%f\n,x1) ; } 牛 顿 迭 代 法 牛顿迭代法(Newtons method)是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。对于大部分非线性方程的求根公式是不存在,因此求精确根非常困难,甚至不可能,牛顿迭代法是求非线性方程根的重要方法之一。 用牛顿迭代法求非线性方程的根 设f(x)=0是非线性方程,f(x)在某一区间内为单调函数(f’(x)0或f’(x)0),则方程f(x)=0在某一区间只有一个实根。 用二分法求非线性方程的根 求积分——梯形法 例:求 f(x)=x2+2x+1,设:a=2,b=3,上底为f0,下底为f1. * * #include stdio.h void main() { long i,n,sum=0,t=1; printf(“Input n:); scanf(%ld,n); for(i=1;i=n;i++) { t=t*i; sum=sum+t; } printf(%ld,sum); } 例:求1+2!+3!+...+20!的和。 P129 6.4 P129 6.11 确定迭代变量x,并赋初值x=a/2。 确定迭代终止条件: 建立迭代公式。 P130 6.11 由牛顿迭代公式: 逐次逼近求解的过程。 f(x) x 牛顿迭代法: 选一个接近x的真实根x1 x1 由x1求出f(x1) f(x1) 在f(x1)点作f(x)的切线,交x轴于x2 x2 通过x2,求f(x2) 再过f(x2)点作f(x) 的切线,交x轴于x3,用上述公式求出x3. 一直求下去,当两次求出的根之差小于给定的数时,就认为xn+1足够接近真实的根。 假设,x0 代表初始值,x 代表新求出的值,f 代表 ,f1 代表 用牛顿迭代法求下列方程的根 循环结束条件:|x-x0|10-6 #include math.h void main() { float x0,x,f,f1; scanf(%f,x); do { x0=x; f=2.0*x0*x0*x0-4.0*x0*x0+3*x0-6; f1=6.0*x0*x0-8.0*x0+3; x=x0-f/f1; } while(fabs(x-x0)=1e-5); printf(root= is%f\n,x); } 先确定一个区间[x1,x2],如果函数f(x)在此区间是单调函数,并且f(x1)和f(x2)为异号则非线性方程f(x)=0在区间[x1,x2]内有一个实根;若f(x1)和f(x2)同号,则f(x)在区间[x1,x2]内无实根。 二分法求方程的根,将给定的区间一分为二为两个区间,确定根存在的区间,再对该区间一分为二为两个区间,再次确定根存在的区间,依次类推,直到分的区间足够小为止。 P130 6.12 根据新的x1、x2求出中点x,重复上述步骤。当fabs(x1-x2)或fabs(f)小于某一给定的小数时,x为近似根。 在区间任取两端点x1和x2,判断区间[x1,x2]有无一个实根。若f(x1)×f(x2)0,则[x1,x2]之间必有一实根。取[x1,x2]的中点x, x=(x1+x2)/2 区间的舍取 判断f(x)*f(x2)是否同号,若f(x)*f(x2)0则:x1=x,即舍去[x1,x]区间,否则,x2=x,得到新区间[x1,x2] 例:用二分法求下列方程在(-10,10)区间的根。 #include math.h void main( ) { float x1=-10,x2=10,eps=1e-6,f1,f2,fx,x; f1=2*x1*x1*x1-4*x1*x1+3*x1-6; f2=2*x2*x2
文档评论(0)