典型例题探究(算法案例).docVIP

  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文档。上传文档
查看更多
典型例题探究(算法案例)

[典型例题探究] 规律发现 【例1】 我国《算经十书》之一《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何?答曰:二十三.”你能用程序解决这个问题吗? 分析:设物共m个,被3,5,7除所得的商分别为x、y、z,则这个问题相当于求不定方程 这个问题的通用解法称为“孙子剩余定理”或“中国剩余定理”.著名的“韩信点兵问题”即为此例的应用. 的正整数解. m应同时满足下列三个条件:(1)m MOD 3=2;(2)m MOD 5=3; (3)m MOD 7=2.因此,可以让m从2开始检验,若3个条件中有任何一个不成立,则m递增1,一直到m同时满足三个条件为止. 考虑到m被7除余数为2,故m至少是9,也可以从m=9开始验证. 解:m=2 f=0 WHILE f=0 IF m MOD 3=2 AND m MOD 5=3 AND m MOD 7=2 THEN PRINT “物体的个数为:”;m f=1 ELSE 设置f=0,f=1的目的是让循环进行或结束,否则循环无法停下来.此处让f=0时进行循环,f=1时中止循环. m=m+1 END IF WEND END 实际上按此法求出来的只是符合条件的最小正整数. 【例2】我国古代数学家张邱建编《张邱建算经》中记有有趣的数学问题:“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一凡百钱,买鸡百只,问鸡翁、母、雏各几何?”你能用程序解决这个问题吗? 分析:设鸡翁、母、雏各x、y、z只,则 这个问题在数学上称为“百鸡问题”. 由②,得z=100-x-y, ③ 把三元一次方程组转化为二元一次不定方程. ③代入①,得5x+3y+=100, 即7x+4y=100. ④ 求方程④的解,可由程序解之. 解:x=1 y=1 WHILE x<=14 WHILE y<=25 IF 7*x+4*y=100 THEN z=100-x-y PRINT “鸡翁、母、雏的个数别为:”;x,y,z END IF y=y+1 WEND x=x+1 y=1 WEND END 实际上,该题可以不对方程组进行化简,通过设置多重循环的方式得以实现.由①、②可得x最大值为20,y最大值为33,z最大值为100,且z为3的倍数.程序如下: 从x的最小值开始验证,循环进行. 由于7x+4y=100,且x、y∈Z,故x≤14,y≤25. x=1 y=1 z=3 WHILE x<=20 WHILE y<=33 WHILE z<=100 IF 5*x+3*y+z/3=100 AND x+y+z=100 THEN PRINT “鸡翁、母、雏的个数分别为:”;x、y、z END IF z=z+3 WEND y=y+1 z=3 WEND x=x+1 y=1 WEND END 对于多重循环或条件嵌套,要注意每一重都有开头和结尾,程序本身也有一个结尾,不能丢掉任何一个. 【例3】写出用二分法求方程x3-x-1=0在区间[1,1.5]上的一个解的算法(误差不超过0.001). 分析:教材P23练习第1题已研究过求x2-2=0的近似根的方法.本例与上述方法类似,只是方程稍微复杂了些.由于f(1)=13-1-1=-1<0,f(1.5)=1.53-1.5-1=0.875>0,所以取[1,1.5]中点=1.25研究,以下同求x2-2=0的根的方法. 解:a=1 b=1.5 c=0.001 DO x=(a+b)/2 f(a)=a∧3-a-1 f(x)=x∧3-x-1 IF f(x)=0 THEN PRINT “x=”;x ELSE IF f(a)*f(x)<0 THEN b=x ELSE a=x END IF END IF LOOP UNTIL ABS(a-b)<=c PRINT “方程的一个近似解x=”;x END 【例4】 (1)将101111011(2)转化为十进制的数; (2)将53(8)转化为二进制的数. 分析:(1)将各位上的数字与基数的幂的积求和. (2)先转化为十进制的数,再利用除2取余法. 解:(1)101111011(2)=1×28+0×27+1×26+1×25+1×24+1×23+0×22+1×21+1=379. (2)53(8)=5×81+3=43. 用二分法求方程的近似值一般取区间[a,

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档