新课标人教版高中(必修3)第一章算法初步1.3算法案例(1)(学案++课时达标训练+素材)ppt课件_第1页
新课标人教版高中(必修3)第一章算法初步1.3算法案例(1)(学案++课时达标训练+素材)ppt课件_第2页
新课标人教版高中(必修3)第一章算法初步1.3算法案例(1)(学案++课时达标训练+素材)ppt课件_第3页
新课标人教版高中(必修3)第一章算法初步1.3算法案例(1)(学案++课时达标训练+素材)ppt课件_第4页
新课标人教版高中(必修3)第一章算法初步1.3算法案例(1)(学案++课时达标训练+素材)ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章第一章 算法初步算法初步 1.3 1.3 算法案例算法案例3 59 15 问题问题11:在小学,我们曾经学过求最大公约数:在小学,我们曾经学过求最大公约数的知识,他能求出的知识,他能求出1818与与3030的最大公约数吗?的最大公约数吗?创设情景,提示课题创设情景,提示课题18 30231818和和3030的最大公约数是的最大公约数是2 23=6.3=6.先用两个数公有的质因数延续去除先用两个数公有的质因数延续去除,不断除到不断除到所得的商是互质数为止所得的商是互质数为止,然后把一切的除数连然后把一切的除数连乘起来乘起来.案例案例1 1 辗转相除法与更相减损术辗转相除法与更相减损术创设情

2、景,提示课题创设情景,提示课题 问题问题2:2:我们都是利用找公约数的方法来求我们都是利用找公约数的方法来求最大公约数,假设两个数比较大而且根据我最大公约数,假设两个数比较大而且根据我们的察看又不能得到一些公约数,我们又应们的察看又不能得到一些公约数,我们又应该怎样求它们的最大公约数?比如求该怎样求它们的最大公约数?比如求82518251与与61056105的最大公约数的最大公约数? ? 研探新知研探新知1.1.辗转相除法辗转相除法: :例例1 1 求两个正数求两个正数82518251和和61056105的最大公约数。的最大公约数。分析:分析:82518251与与61056105两数都比较大,

3、而且没两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数据已有的知识即可求出最大公约数. .解:解:82518251610561051 121462146显然显然82518251与与61056105的最大公约数也必是的最大公约数也必是21462146的约数,同样的约数,同样61056105与与21462146的公约数也必是的公约数也必是82518251的约数,所以的约数,所以82518251与与61056105的最大公约数也是的最大公约数也是61056105与与21462146的最大公约数。的最大公约数。1.1.辗

4、转相除法辗转相除法: :例例1 1 求两个正数求两个正数82518251和和61056105的最大公约数。的最大公约数。解:解:82518251610561051 12146;2146;6105214621813;214618131333333148237;1483740.那么那么3737为为82518251与与61056105的最大公约数。的最大公约数。以上我们求最大公约数的方法就是辗转相以上我们求最大公约数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在除法。也叫欧几里德算法,它是由欧几里德在公元前公元前300300年左右首先提出的。年左右首先提出的。 第

5、一步第一步, ,给定两个正数给定两个正数m,nm,n 第二步第二步, ,计算计算m m除以除以n n所得到余数所得到余数r r 第三步第三步,m=n,n=r,m=n,n=r 第四步第四步, ,假设假设r=0,r=0,那么那么m,nm,n的最大公约数等的最大公约数等于于m;m;否那么前往第二步否那么前往第二步辗转相除法求最大公约数算法:辗转相除法求最大公约数算法:思索思索 :需不需求比较:需不需求比较m,n的大小的大小不需求不需求否否开场开场 输入两个正数输入两个正数m,nr=m MOD nr=0?输出输出m终了终了m=nn=r是是程序框图练习练习1 1:利用辗转相除法求两数:利用辗转相除法求两

6、数40814081与与2072320723的最大公约数的最大公约数. . (53)(53)20723=40815+318;4081=31812+265;318=2651+53;265=535+0.2.2.更相减损术更相减损术: :我国早期也有处理求最大公约数问题的算我国早期也有处理求最大公约数问题的算法,就是更相减损术。法,就是更相减损术。更相减损术求最大公约数的步骤如下:可更相减损术求最大公约数的步骤如下:可半者半之,不可半者,副置分母、子之数,以半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。少减多,更相减损,求其等也,以等数约之。翻译出来为:第一步:恣意给

7、出两个正数;翻译出来为:第一步:恣意给出两个正数;判别它们能否都是偶数。假设是,用判别它们能否都是偶数。假设是,用2 2约简;假设约简;假设不是,执行第二步。不是,执行第二步。第二步:以较大的数减去较小的数,接着把第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。继较小的数与所得的差比较,并以大数减小数。继续这个操作,直到所得的数相等为止,那么这个续这个操作,直到所得的数相等为止,那么这个数等数就是所求的最大公约数。数等数就是所求的最大公约数。例例2 2 用更相减损术求用更相减损术求9898与与6363的最大公约数的最大公约数. .解:由于解:由于6363不是偶数,

8、把不是偶数,把9898和和6363以大数以大数减小数,并辗转相减,减小数,并辗转相减, 即:即:986335; 633528; 35287; 28721; 21714; 1477.所以,所以,9898与与6363的最大公约数是的最大公约数是7 7。练习练习2 2:用更相减损术求两个正数:用更相减损术求两个正数8484与与7272的最大的最大公约数。公约数。 (12)(12)辗转相除法与更相减损术的比较辗转相除法与更相减损术的比较: : 1 1都是求最大公约数的方法,计算上都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为辗转相除法以除法为主,更相减损术以减法为主主; ;计算

9、次数上辗转相除法计算次数相对较少,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区特别当两个数字大小区别较大时计算次数的区别较明显。别较明显。2 2从结果表达方式来看,辗转相除法从结果表达方式来看,辗转相除法表达结果是以相除余数为表达结果是以相除余数为0 0那么得到,而更相减那么得到,而更相减损术那么以减数与差相等而得到损术那么以减数与差相等而得到. .教学设计教学设计 问题问题11设计求多项式设计求多项式f(x)=2x5-5x4-4x3+3x2-f(x)=2x5-5x4-4x3+3x2-6x+76x+7当当x=5x=5时的值的算法时的值的算法, ,并写出程序并写

10、出程序. .x=5f=2x5-5x4-4x3+3x2-6x+7PRINT fEND程序程序点评点评: :上述算法一共做了上述算法一共做了1515次乘法运算次乘法运算,5,5次加法次加法运算运算. .优点是简单优点是简单, ,易懂易懂; ;缺陷是不通用缺陷是不通用, ,不能处不能处理恣意多项式求值问题理恣意多项式求值问题, ,而且计算效率不高而且计算效率不高. .n n次多项式至多次多项式至多n(n+1)/2n(n+1)/2次乘法运算和次乘法运算和n n次加法运算次加法运算案例案例2 2 秦九韶算法秦九韶算法 这析计算上述多项式的值这析计算上述多项式的值,一共需求一共需求9次乘次乘法运算法运算,

11、5次加法运算次加法运算.问题问题2有没有更高效的算法有没有更高效的算法?分析分析:计算计算x的幂时的幂时,可以利用前面的计算结可以利用前面的计算结果果,以减少计算量以减少计算量,即先计算即先计算x2,然后依次计算然后依次计算222,(),()xx xxxxxxx的值的值.第二种做法与第一种做法相比第二种做法与第一种做法相比,乘法的运乘法的运算次数减少了算次数减少了,因此能提高运算效率因此能提高运算效率.而且对于而且对于计算机来说计算机来说,做一次乘法所需的运算时间比做一做一次乘法所需的运算时间比做一次加法要长得多次加法要长得多,因此第二种做法能更快地得到因此第二种做法能更快地得到结果结果.问题

12、问题3能否探求更好的算法能否探求更好的算法,来处理恣意多来处理恣意多项式的求值问题项式的求值问题?f(x)=2x5-5x4-4x3+3x2-6x+7=(2x4-5x3-4x2+3x-6)x+7=(2x3-5x2-4x+3)x-6)x+7=(2x2-5x-4)x+3)x-6)x+7=(2x-5)x-4)x+3)x-6)x+7v0=2v1=v0 x-5=25-5=5v2=v1x-4=55-4=21v3=v2x+3=215+3=108v4=v3x-6=1085-6=534v5=v4x+7=5345+7=2677所以所以,当当x=5时时,多项式的值是多项式的值是2677.这种求多项式值的方法就叫秦九韶

13、算法这种求多项式值的方法就叫秦九韶算法.变为求几个一次式的值变为求几个一次式的值几个乘法几个乘法几个加法?几个加法?秦九韶秦九韶.2 -5 0 -4 3 -6 0 x=5105252512512160560830403034所以所以,当当x=5时时,多项式的值是多项式的值是15170.练习练习:用秦九韶算法求多项式用秦九韶算法求多项式 f(x)=2x6-5x5-4x3+3x2-6x当当x=5时的值时的值.解解:原多项式先化为原多项式先化为: f(x)=2x6-5x5 +0 x4-4x3+3x2-6x+0列表列表21517015170 留意留意:n次多项式有次多项式有n+1项项,因此短少哪一项因

14、此短少哪一项应将其系数补应将其系数补0.f(x)=anxn+an-1xn-1+an-2xn-2+a1x+a0.我们可以改写成如下方式我们可以改写成如下方式:f(x)=(anx+an-1)x+an-2)x+a1)x+a0.求多项式的值时求多项式的值时,首先计算最内层括号内一首先计算最内层括号内一次多项式的值次多项式的值,即即 v1=anx+an-1,然后由内向外逐层计算一次多项式的值然后由内向外逐层计算一次多项式的值,即即普通地普通地,对于一个对于一个n次多项式次多项式v2=v1x+an-2, v3=v2x+an-3, ,vn=vn-1x+a0.这样这样,求求n次多项式次多项式f(x)的值就转化

15、为求的值就转化为求n个个一次多项式的值一次多项式的值.这种算法称为秦九韶算法这种算法称为秦九韶算法.点评点评:秦九韶算法是求一元多项式的值的秦九韶算法是求一元多项式的值的一种方法一种方法.它的特点是它的特点是:把求一个把求一个n次多项式的值转化次多项式的值转化为求为求n个一次多项式的值个一次多项式的值,经过这种转化经过这种转化,把运算把运算的次数由至多的次数由至多n(n+1)/2次乘法运算和次乘法运算和n次加法次加法运算运算,减少为减少为n次乘法运算和次乘法运算和n次加法运算次加法运算,大大大大提高了运算效率提高了运算效率.v1=anx+an-1,v2=v1x+an-2,v3=v2x+an-3

16、, ,vn=vn-1x+a0.察看上述秦九韶算法中的察看上述秦九韶算法中的n个一次式个一次式,可见可见vk的计算要用到的计算要用到vk-1的值的值.假设令假设令v0=an,得得v0=an,vK=vK-1x+an-k(k=1,2,n这是一个在秦九韶算法中反复执行的步这是一个在秦九韶算法中反复执行的步骤骤,因此可用循环构造来实现因此可用循环构造来实现. 第一步第一步, ,输入多项式次数输入多项式次数n n、最高次项的系数、最高次项的系数anan和和x x的值的值 第二步第二步, ,将将v v的值初始化为的值初始化为anan,将,将i i的值初始化为的值初始化为n-1n-1 第三步第三步, ,输入输

17、入i i次项的系数次项的系数aiai 第四步第四步,v=vx+ai,i=i-1,v=vx+ai,i=i-1 第五步第五步, ,假设假设i=0,i=0,那么前往第三步,否那么输出那么前往第三步,否那么输出v v算法分析:算法分析:否否程序框图程序框图开场开场输入输入n,an,x的值的值输入输入aii=0?i=n-1v=anv=vx+aii=i-1输出输出v终了终了是是 问题问题11我们常见的数字都是十进制的我们常见的数字都是十进制的, ,但是并不是生活中的每一种数字都是十进制的但是并不是生活中的每一种数字都是十进制的. .比如时间和角度的单位用六十进位制比如时间和角度的单位用六十进位制, ,电子

18、计电子计算机用的是二进制算机用的是二进制. .那么什么是进位制那么什么是进位制? ?不同的不同的进位制之间又有什么联络呢进位制之间又有什么联络呢? ?进位制是人们为了计数和运算的方便而进位制是人们为了计数和运算的方便而商定的一种记数系统,商定满二进一商定的一种记数系统,商定满二进一, ,就是二就是二进制进制; ;满十进一满十进一, ,就是十进制就是十进制; ;满十六进一满十六进一, ,就就是十六进制是十六进制; ;等等等等. . “满几进一满几进一, ,就是几进制就是几进制, ,几进制的基数就是几几进制的基数就是几. .可运用数字符号的个数称为基数可运用数字符号的个数称为基数. .基数基数都是

19、大于都是大于1 1的整数的整数. . 案例案例3 3 进位制进位制如二进制可运用的数字有如二进制可运用的数字有0和和1,基数是基数是2; 十进制可运用的数字有十进制可运用的数字有0,1,2,8,9等十个等十个数字数字,基数是基数是10; 十六进制可运用的数字或符号有十六进制可运用的数字或符号有09等等10个数字以及个数字以及AF等等6个字母个字母(规定字母规定字母AF对应对应1015),十六进制的基数是十六进制的基数是16.留意留意: :为了区分不同的进位制为了区分不同的进位制, ,常在数字常在数字的右下脚标明基数的右下脚标明基数,. ,. 如如111001(2)111001(2)表示二进制数

20、表示二进制数,34(5),34(5)表示表示5 5进制数进制数. .十进制数普通不标注基数十进制数普通不标注基数.问题问题2十进制数十进制数3721中的中的3表示表示3个千个千,7表示表示7个百个百,2表示表示2个十个十,1表示表示1个一个一,从而它可以写成从而它可以写成下面的方式下面的方式:3721=3103+7102+2101+1100.想一想二进制数想一想二进制数1011(2)可以类似的写成什可以类似的写成什么方式么方式?1011(2)=123+022+121+120.同理同理:3421(5)=353+452+251+150.C7A16(16)=12164+7163+10162 +116

21、1+6160.普通地普通地,假设假设k是一个大于是一个大于1的整数的整数,那么以那么以k为基数的为基数的k进制数可以表示为一串数字连写在进制数可以表示为一串数字连写在一同的方式一同的方式anan-1a1a0(k) (0ank,0an-1,a1,a0k)意思是意思是:(1):(1)第一个数字第一个数字anan不能等于不能等于0;0;(2)(2)每一个数字每一个数字an,an-1,a1,a0an,an-1,a1,a0都须小于都须小于k.k.k进制的数也可以表示成不同位上数字与进制的数也可以表示成不同位上数字与基数基数k的幂的乘积之和的方式的幂的乘积之和的方式,即即anan-1a1a0(k)=ank

22、n+an-1kn-1 +a1k1+a0k0 .留意这是一留意这是一个个n+1位数位数.问题问题3二进制只用二进制只用0和和1两个数字两个数字,这正这正好与电路的通和断两种形状相对应好与电路的通和断两种形状相对应,因此计算因此计算机内部都运用二进制机内部都运用二进制.计算机在进展数的运算计算机在进展数的运算时时,先把接遭到的数转化成二进制数进展运算先把接遭到的数转化成二进制数进展运算,再把运算结果转化为十进制数输出再把运算结果转化为十进制数输出.那么二进制数与十进制数之间是如何转那么二进制数与十进制数之间是如何转化的呢化的呢?例例3:把二进制数把二进制数110011(2)化为十进制数化为十进制数

23、.分析分析:先把二进制数写成不同位上数字与先把二进制数写成不同位上数字与2的幂的乘积之和的方式的幂的乘积之和的方式,再按照十进制数的运算再按照十进制数的运算规那么计算出结果规那么计算出结果.解解:110011(2) =125+124+023+022+121+120 =132+116+12+1=51. k k进制数转化为十进制数的方法进制数转化为十进制数的方法先把先把k k进制的数表示成不同位上数字与基进制的数表示成不同位上数字与基数数k k的幂的乘积之和的方式的幂的乘积之和的方式, ,即即anan-1a1a0(k)anan-1a1a0(k)=an=ankn+an-1kn+an-1kn-1+a1kn-1+a1k1+a0k1+a0k0 .k0 .再按照十进制数的运算规那么计算出结果再按照十进制数的运算规那么计算出结果. .例例4:把把89化为二进制的数化为二进制的数.分析分析:把把89化为二进制的数化为二进制的数,需想方法将需想方法将89先写成如下方式先写成如下方式89=an2n+an-12n-1+a121+a020 .89=442+1, 44=222+0, 22=112+0, 11=52+1, 5=22+1, 89=442+1, =(222+0)2+1 =(112+0)2+0)2+1 =(52

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论