1.3算法案例
高中数学 1.3 算法案例--进位制新课件 新人教版必修3
十进制:
我们最常用最熟悉的就是十进制数,它的数值部分是十个不 同的数字符号0,1,2,3,4,5,6,7,8,9来表示的。
例如133.59,它可用一个多项式来表示:
133.59=1*102+3*101+3*100 +5*10-1+9*10-2
式中1处在百位,第一个3所在十位,第二个3所在 个位,5和9分别处在十分位和百分位。十进制数是逢 十进一的。
为了区分不同的进位制,常在数的右下角标明基数, 十进制一般不标注基数.
例如十进制的133.59,写成133.59(10) 七进制的13,写成13(7);二进制的10,写成10(2)
一般地,若k是一个大于1的整数,那么以k 为基数的k进制可以表示为一串数字连写在一起 的形式:
a n a n 1a 1 a 0 (k )( 0 a n k ,0 a n 1 ,,a 1 ,a 0 k ) .
结束
练习:
完成下列进位制之间的转化:
(1)10231(4)= (2)235(7)= (3)137(10)= (4)1231(5)= (5)213(4)= (6)1010111(2)=
(10); (10); (6); (7); (3);
(4)。
小结
• 1.进位制是一种记数方式,用有限的数 字在不同的位置表示不同的数值。可使 用数字符号的个数称为基数,基数为k, 即可称k进位制,简称k进制。k进制需要 使用k个数字;
课堂小结
1.十进制数与k进制数之间的转 化方法
2.体会用算法解决上述问题的 过程,体验算法在解决问题中 的重要作用
89=1×26+0×25+1×24+1×23+0×22+0×21+1×20
1.3算法案例-秦九韶算法教学设计
1.3算法案例(二)__秦九韶算法一、内容及其解析本节的教学内容是算法案例中的秦九韶算法,它是求一元多项式的值的一种方法.在初中,学生已经学习了多项式的有关知识,那里是把多项式看作代数式.因此在本段内容的教学之前,应当先向学生说明,这里是函数的观点考察多项式,因此,求自变量取某个实数时的函数值问题,即求多项式的值就是一个常规问题.二、教学目标及其解析目标定位知识与技能:了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质.过程与方法:模仿秦九韶计算方法,体会古人计算构思的巧妙.了解数学计算转换为计算机计算的途径,从而探究计算机算法与数学算法的区别,体会计算机对数学学习的辅助作用.情感态度与价值观目标:通过对秦九韶算法的学习,了解中国古代数学对世界数学发展的贡献,充分认识到我国文化历史的悠久.目标解析1 秦九韶算法是我国南宋数学家秦九韶在他的代表作《数书九章》中提出的一种用于计算一元n 次多项式的值的方法.三、问题诊断分析在本节主要存在的问题是学生不能对秦九韶算法的先进性及其程序设计的理解,所以教师要强调当多项式的次数增大时,此种方法的先进性就体现出来了,所以教师要找到规律,让学生体会此种解法的先进性.四、教学支持条件分析的一般模式在本节课的教学中准备使用多媒体辅助教学.五、教学过程设计问题一 什么事了解秦九韶算法?小问题1 怎样求多项式1)(2345+++++=x x x x x x f 当x=5时的值呢?(设计意图:通过具体的例子引入秦九韶算法.)结论:第一种一共用了10次乘法运算,5次加法运算.而第二种一共用了5次乘法运算,5次加法运算.小问题2 用秦九韶算法求n 次多项式0111...)(a x a x a x a x f n n n n ++++=--当0x x =(0x 是任意实数)时的值,需要多少次乘法运算,多少次加法运算?小问题 3 如何用秦九韶算法完成一般多项式1110()n n n n f x a x a x a x a --=++++的求值问题?要求多项式的值,我们可以把它改写成:11101210()(()))n n n n n n n f x a x a x a x a a x a x a x a x a ----=++++=+++++.首先计算最内层括号内一次多项式的值,即11n n v a x a -=+,然后由内向外逐层计算一次多项式的值,即212n v v x a -=+,323n v v x a -=+,,10n n v v x a -=+.例题1 (课本第38页例2)(设计意图:从实例到一般,先总结实例进而引申到一般) 变式巩固 用秦九韶算法求多项式1432)(2367+-+-=x x x x x f 当x=2时的函数值.小问题4 你是怎么理解秦九韶算法的?结论:秦九韶算法将求n 次多项式的值转化为求n 个一次多项式的值.课堂小结(提问方式)秦九韶算法计算多项式的值及程序设计上述的整个过程只需n 次乘法运算和n 次加法运算;观察上述n 个一次式,可发出k v 的计算要用到1k v -的值,若令0n v a =,可得到下列递推公式:01,(1,2,,)n k k n k v a v v x a k n --=⎧⎨=+=⎩. 这是一个反复执行的步骤,因此可用循环结构来实现.【程序框图】:六 目标检测1、利用秦九韶算法求多项式1153723+-+x x x 在23=x 的值时,在运算中下列哪个值用不到( )A 、164B 、3767C 、86652D 、851692、利用秦九韶算法求多项式1352.75.38123)(23456-++-++=x x x x x x x f 在2=x 的值,写出详细步骤.七 配餐作业A 组②秦九韶算法计算多项式f(x)=12+35x-8x 2+79x 3+6x 4+5x 5+3x 6,当x=-4时的值时,υ3的值为( )A .-845B .220C .-57D .34③用秦九韶算法,求当x=2时,f(x)=x 5-5x 4+x 3-1的函数值.B 组1.秦九韶算法与直接计算相比较,下列说法错误的是( )A 、秦九韶算法与直接计算相比较,大大减少了乘法的次数,使计算量减少,并且逻辑结构简单.B 、秦九韶算法减少了做乘法的次数,在计算机上也就加快了计算的速度.C 、秦九韶算法减少了做乘法的次数,在计算机上也就降低了计算的速度.D 、秦九韶算法避免对自变量x 单独做幂的计算,而是与系数一起逐次增长幂次,从而可提高计算的精度.2.用秦九韶算法和直接算法求当0x x =时()654323126016024019264f x x x x x x x =-+-+-+的值,做的乘法次数分别为( )A.6,20B.7,20C.7,21D.6,21C 组求15.033.016.041.083.0)(2345+++++=x x x x x x f 当x=5时的值.八、教学反思1、学生还是不会分析运算次数的问题,应该给学生详细讲解.2、学生在多项式 11101210()(()))n n n n n n n f x a x a x a x a a x a x a x a x a ----=++++=+++++按照秦九韶算法写成标准形式是容易出错,且速度很慢,应教会学生快速的写法及检验方法.3、应多给学生介绍一些有关秦九韶算法的背景知识,这样更能吸引学生的注意力和学习兴趣,另外介绍历史名人的大致成就,扩大学生的文化视野.。
1.3算法案例(进位制)(yong)
思考:生活最常见的进位制是什么?除此之外还有
哪些常见的进位制?请举例说明. • 最常见的进位制应该是我们数学中的十进制,比 如一般的数值计算,但是并不是生活中的每一种 数字都是十进制的. • 古人有半斤八两之说,就是十六进制与十进制的 转换. • 比如时间和角度的单位用六十进制, 计算“一打” 数值时是12进制的。 • 电子计算机用的是二进制 。
思考:其它进制是否也有类似的规律呢?
八进制
7342(8) =783+382+48+2 110011(2)=125+124+023 +022+12+1
二进制
一般地,若k是一个大于1的整数,那么以k为基 数的k进制可以表示为以下形式:
a n a n 1 a 1 ( k ) ( 0 a n k , 0 a 1 , , a n 1 k ).
a×82+b×8+c=c×72+b×7+a,得:63a+b﹣48c=0, b=3(16c﹣21a), 由此知b是三的倍数,且是整数, ∴b=0,3,6, 21 a 当b=0时,可得c= 1 6 又1≤a≤6,检验知,不存在符合条件的a使得c是整数,
当3时,得c=
当b=6时,得c=
21a 1 16
开始
输入a ,k,n b=0 i=1
把a的右数第i位数字赋给t b=b+t*ki-1 i=i+1
否
i>n
是
输出结果b 结束
三、十进制化为k进制 思考:既然,k进制转化为十进制有前述的方法与 相应的算法,那么十进数又是如何才能转化为k进 数呢? 回想:a=anan-1…a2a1(k) =ankn-1+an-1kn-2+ …+a2k+a1 =b
人教课标版高中数学必修三《算法案例(第3课时)》教案(1)-新版
⼈教课标版⾼中数学必修三《算法案例(第3课时)》教案(1)-新版1.3 算法案例第3课时⼀、教学⽬标 1.核⼼素养在学习古代数学家解决数学问题的⽅法的过程中培养严谨的逻辑思维能⼒,在利⽤算法解决数学问题的过程中培养理性的精神和动⼿实践的能⼒. 2.学习⽬标(1)1.3.3.1理解进位制的概念,掌握各种进位制与⼗进制之间的转换规律.(2)1.3.3.2掌握⼗进位制转化为各种进位制的除k 余法. 3.学习重点各种进位制与⼗进制之间的转换规律. 4.学习难点不同进位制之间的转化规律及其思想⼆、教学设计(⼀)课前设计 1.预习任务任务1阅读教材P40-P45,思考:各种进位制与⼗进制之间转换的规律是什么?任务2你可以熟练的进⾏各进位制之间的转换吗? 2.预习⾃测1.在2进制中,0+0,0+1,1+0,1+1的值分别是多少?【解析】:分别是0,1,1,10 2.把⼆进制数()2110011化为⼗进制数【解析】:()=?+?+?+?+?+?=+++=543210211001112120202121232162151(⼆)课堂设计1.知识回顾(1)⽣活中常见的进位制有哪些(例如时间、钱等)(2)计算机中的2进制和通常的10进制怎么进⾏转换(3)⾮10的两种不同进制之间怎么进⾏转换 2.问题探究问题探究⼀认识进位制,将⼗进制数转化为k 进制数●活动⼀什么是n 进位制?我们常见的数字都是⼗进制的,但是并不是⽣活中的每⼀种数字都是⼗进制的.⽐如时间和⾓度的单位⽤六⼗进位制,电⼦计算机⽤的是⼆进制.那么什么是进位制?不同的进位制之间⼜⼜什么联系呢?进位制是⼀种记数⽅式,⽤有限的数字在不同的位置表⽰不同的数值.可使⽤数字符号的个数称为基数,基数为n ,即可称n 进位制,简称n 进制.现在最常⽤的是⼗进制,通常使⽤10个阿拉伯数字0-9进⾏记数.对于任何⼀个数,我们可以⽤不同的进位制来表⽰.⽐如:⼗进制数57,可以⽤⼆进制表⽰为111001,也可以⽤⼋进制表⽰为71、⽤⼗六进制表⽰为39,它们所代表的数值都是⼀样的.表⽰各种进位制数⼀般在数字右下脚加注来表⽰,如()2110011表⽰⼆进制数,(5)34表⽰5进制数.●活动⼆如何将10进制数转化为2进制数?解:根据⼆进制数满⼆进⼀的原则,可以⽤2连续去除89或所得商,然后去余数. 具体的计算⽅法如下:=?+=?+=?+=?+=?+892441442220222110112515221()(((())))=+++++=?+?+?+?+?+?+?=654321028922222211001120212120202121011001 这种算法叫做除2取余法,还可以⽤下⾯的除法算式表⽰:把上式中的各步所得的余数从下到上排列即可得到89=1011001(2)●活动三如何将10进制数转化为k进制数?上述⽅法可以推⼴为把⼗进制化为k进制数的算法,这种算法成为除k取余法. ⼗进制数化为k进制数(除k取余法)的步骤:1.除:把⼗进制数连续去除以k,直到商为0为⽌,同时将各步的余数写出2.取余:将各步所得的余数倒叙写出,即为所求的k进制数3.标基数:写出k进制数后将基数k⽤括号括起来标在右下⾓例1.将⼗进制数458分别转化为四进制数和六进制数.解:算式如下图,则458=13022(4)=2042(6)问题探究⼆不同进制数相互转换●活动⼀如何将10进制数与k进制数进⾏相互转换?⼆进制数110 011(2)化为⼗进制数是什么数?110 011(2)=1×25+1×24+0×23+0×22+1×21+1×20=32+16+2+1=51.那么如何将⼀个k进制数转换为⼗进制数?将k进制数a n a n-1…a1a0(k)化为⼗进制的⽅法:把k进制数a n a n-1…a1a0(k)写成各数位上的数字与基数k的幂的乘积之和的形式,然后计算出结果即为对应的⼗进制数.这样我们就可以进⾏10进制数与k进制数进⾏相互转换●活动⼆如何将⾮10的不同进制数进⾏相互转换?进制的数转化为10进制数后再把10进制的⼗进制是连接其他进制的桥梁.把k1进制数,各个进制数之间就能实现互相转换.数转化为k2例2.1 011 001(2)=______(10)=______(5).解:89,324 ⾸先将1011001(2) 化为⼗进制数为1×26+0+1×24+1×23+0+0+1×20=89,再将89化成五进制数:89除以5的商是17,余数为4,17除以5的商是3,余数为2,所以五进制数为324.3.课堂总结【知识梳理】(1)k进制化成⼗进制,幂积求和法(2)⼗进制化成k进制,除k取余法进制的数转化为10进制数后再把10进制的数转(3)不同进制之间转换:把k1化为k进制数2【重难点突破】(1)进位制之间的转换⽅法:k进制化成⼗进制,幂积求和法;⼗进制化成k 进制,除k取余法.(2)把⼀个⾮⼗进制数转化为另⼀种⾮⼗进制数,通常是把这个数先转化为⼗进制数,然后再利⽤除k取余法,把⼗进制数转化为k进制数.⽽在使⽤除k 取余法时要注意以下⼏点:1.必须除到所得的商是0为⽌;2.各步所得的余数必须从下到上排列;3.切记在所求数的右下⾓标明基数4.随堂检测1.下列各进制数中值最⼩的是( )A.85(9)B.210(6)C.1 000(4)D.111 111(2)【解析】:D 由进位制的知识易得,故选D.2.把189化为三进制数,则末位数是( )A.0 B.1 C.2 D.3【解析】:A将189除以3得余数为0,所以189化为三进制数的末位数为0. 故选A.3.已知⼀个k进制的数132与⼗进制的数30相等,那么k等于( )A.7或4 B.-7C.4 D.都不对【解析】:C132(k)=1×k2+3×k+2=k2+3k+2,∴k2+3k+2=30,即k2+3k-28=0,解得k=4或k=-7(舍去).故选C.4.四位⼆进制数能表⽰的最⼤⼗进制数是( )A.4 B.64 C.255 D.15【解析】:D由⼆进制数化为⼗进制数的过程可知,当四位⼆进制数为1 111时表⽰的⼗进制数最⼤,此时,1 111(2)=15.故选D5.七进制数中各个数位上的数字只能是______中的⼀个.【解析】:0、1、2、3、4、5、6“满⼏进⼀”就是⼏进制.∵是七进制.∴满七进⼀,根本不可能出现7或⽐7⼤的数字,所以各个数位上的数字只能是0、1、2、3、4、5、6中的⼀个.6.已知三个数12(16),25(7),33(4),将它们按由⼩到⼤的顺序排列为________.【解析】:33(4)<12(16)<25(7)将三个数都化为⼗进制数.12(16)=1×16+2=18,25(7)=2×7+5=19,33(4)=3×4+3=15,∴33(4)<12(16)<25(7).(三)课后作业基础型⾃主突破1.⼆进制数111.11(2)转换成⼗进制数是( )A.7.3 B.7.5 C.7.75 D.7.125【解析】:C 由题意知⼆进制对应的⼗进制是:1×22+1×21+1×20+1×2-1+1×2-2=4+2+1+0.5+0.25=7.75. 故选A2.将⼆进制110 101(2)转化为⼗进制为( )A.106 B.53 C.55 D.108【解析】:B110 101(2)=1+1×22+1×24+1×25=53. 故选B3.下列与⼆进制数1 001 101(2)相等的是( )A.115(8)B.113(8)C.114(8)D.116(8)【解析】:A 先化为⼗进制数:1 001 101(2)=1×26+1×23+1×22+1×20=77,再化为⼋进制数.所以77=115(8),1 001 101(2)=115(8)故选A.4.下列各数中,与1 010(4)相等的数是( )A.76(9)B.103(8)C.2 111(3)D.1 000 100(2)【解析】:D 1 010(4)=1×43+1×4=68.因为76(9)=7×9+6=69;103(8)=1×82+3=67;2111(3)=2×33+1×32+1×3+1=67;1000100(2)=1×26+1×22=68,所以1 010(4)=1 000 100(2)故选D..5.⼀个k进制的三位数与某六进制的⼆位数等值,则k不可能是( )A.3 B.4 C.5 D.7【解析】:D k进制的最⼩三位数为k2,六进制的最⼤⼆位数为5×6+5=35,由k2≤35得0…a1a0(k)表⽰⼀个k进制数,若21(k)=9,则321(k)在⼗进制中所表⽰的6.记anan-1数为( )A.86 B.57 C.34 D.17【解析】:B 由已知中21(k)=9,求出k值,进⽽利⽤累加权重法,可得答案.若21(k)=9,则2k+1=9,解得k=4,故321(k)=321(4)在+进制中所表⽰的数为:3×42+2×4+1=57. 故选B能⼒型师⽣共研7.已知1 0b1(2)=a02(3),求数字a,b的值.【解析】:a=1,b=1 ∵1 0b1(2)=1×23+b×2+1=2b+9,a02(3)=a×32+2=9a+2,∴2b+9=9a+2,即9a-2b=7.∵a∈{1,2},b∈{0,1},∴当a=1时,b=1符合题意,当a=2时,b=112不合题意,∴a=1,b=1.8.已知44(k)=36,把67(k)转化为⼗进制数为( )A.8 B.55 C.56 D.62【解析】:B 由题意得,36=4×k1+4×k0,所以k=8.则67(k)=67(8)=6×81+7×80=55. 故选B9.古时候,当边境有敌⼈来犯时,守边的官兵通过在烽⽕台上举⽕向国内报告,如图,烽⽕台上点⽕,表⽰数字1,不点⽕表⽰数字0,约定⼆进制数对应的⼗进制的单位是1 000,请你计算⼀下,这组烽⽕台表⽰约有多少敌⼈⼊侵?【解析】:27 000 由图可知从左到右的五个烽⽕台,表⽰⼆进制数的⾃左到右五个数位,依题意知这组烽⽕台表⽰的⼆进制数是11 011,改写为⼗进制为:11 011(2)=1×24+1×23+0×22+1×21+1×20=16+8+2+1=27(10).⼜27×1 000=27 000,所以这组烽⽕台表⽰边境约有27 000个敌⼈来犯.探究型多维突破10.分别⽤算法步骤、程序框图、程序语句表⽰把k进制数a(共有n位数)转化成⼗进制数b.【解析】:算法步骤:第⼀步,输⼊a,k,n的值.第⼆步,赋值b=0,i=1.第三步,b=b+a i·k i-1,i=i+1.第四步,判断i>n是否成⽴.若是,则执⾏第五步;否则,返回第三步.第五步,输出b的值.程序框图:程序语句:11.若10y1(2)=x02(3),求数字x,y的值及与此两数等值的⼗进制数.【解析】:x=y=1,11∵10y1(2)=x02(3),∴1×23+0×22+y×2+1=x×32+0×3+2,将上式整理得9x-2y=7,由进位制的性质知,x∈{1,2},y∈{0,1},当y=0时,x=(舍),当y=1时,x=1.∴x=y=1,已知数为102(3)=1 011(2),与它们相等的⼗进制数为1×32+0×3+2=11.⾃助餐1.在什么进位制中,⼗进位制数71记为47( )A.17 B.16 C.8 D.12【解析】:B 设为k进制,有:4k+7=71,从⽽可解得k=16.因此是16进制.故选B.2.把⼗进制数20化为⼆进制数为( )A.10 000(2)B.10 100(2)C.11 001(2)D.10 001(2)【解析】:B 利⽤除2取余数可得.故选B3.在⼋进制中12(8)+7(8)=21(8),则12(8)×7(8)的值为( )A.104(8)B.106(8)C.70(8)D.74(8)【解析】:B 12(8)=1×81+2×80=10(10),7(8)=7×80=7(10),12(8)×7(8)=70(10).故70(10)=106(8).即12(8)×7(8)=106(8).故选B4.将四位⼋进制数中的最⼩数转化为六进制数为( )A.2 120 B.3 120 C.2 212 D.4 212【解析】:C 四位⼋进制中的最⼩数为1 000(8).所以1 000(8)=1×83=512.再将512除以6取余得512=2 212(6).故选C5.两个⼆进制数101(2)与110(2)的和⽤⼗进制数表⽰为( )A.12 B.11 C.10 D.9【解析】:B101(2)=1×22+0×21+1×20=5,110(2)=1×22+1×21+0×20=6,5+6=11.故选B6.在计算机的运⾏过程中,常常要进⾏⼆进制数与⼗进制数的转换与计算.如⼗进制数8转换成⼆进制数是1 000,记作8(10)=1 000(2);⼆进制数111转换成⼗请进制数是7,记作111(2)=7(10)等.⼆进制的四则运算,如11(2)+101(2)=1 000(2).计算:11(2)×111(2)=________,10 101(2)+1 111(2)=________.【解析】:10 101(2),100 100(2)由题可知,在⼆进制数中的运算规律是“满⼆进⼀”,∴11(2)×111(2)=10 101(2),10 101(2)+1 111(2)=100 100(2).7.1 101(2)+1 011(2)=__________(⽤⼆进制数表⽰).【解析】:11 000(2)1 101(2)=1×23+1×22+1=13;1 011(2)=1×23+1×2+1=11,则1101(2)+1011(2)=24.即24=11 000(2).。
§1.3算法案例
为了区别进制,我们就用下 标(k)表示k进制数
an k
n1
an1 k
n 2
a3 k a2 k a1
2
下面我们来用一个具体的例子来分析:
例3.将二进制数110 011(2)化成十进制数
解 根据k进制数的实际意义,我们可以这样来转换:
110011(2) 1 2 1 2 0 2 0 2 1 2 1 2 1 32 1 16 1 2 1 51
已知一个5次多项式为
f ( x) 4x 2x 3.5x 2.6x 1.7 x 0.8
5 4 3 2
当
x5
用秦九韶算法求这个多项式的值。
根据秦几韶算法,把多项式改写成如下形式: f ( x) ((((4 x 2) x 3.5) x 2.6) x 1.7) x 0.8 按照从内到外的顺序,依次计算一次多项式当绵值: v0 4; v1 4 5 2 22; v2 22 3.5 113.5; v3 113.5 5 2.6 564.9; v4 564.9 5 1.7 2826.2; v5 2826.2 5 0.8 14130.2. 所以,当x 5时, 多项式的值等于14130.2.
3. 已知一个5次多项式为
f ( x) 5x 2x 3.5x 2.6x 1.7 x 0.8
5 4 3 2
用秦九韶算法求这个多项式当
x5
时的值。
思考:(1)上式计算时需要多少次乘法计 算?多少次加法计算? (2)在利用秦九韶算法计算n次多项式 当时需要多少次乘法计算和多少次加法计算?
f ( x) an xn an1xn1 an2 xn2 a1x a0 把一个多项式
1.3算法案例(一)辗转相除法
练习:
• 教材48页——1
程序框图
开始 输入m,n
①
否
求m除以n的余数r
m<n? 是
m=n t=m n=r
m=n n=t
r=0? 是 输出m
否
①
结束
程序语言
INPUT m,n IF n>m THEN t=m m=n n=t END IF DO r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m END
例1、用辗转相除法 求8251与6105的最大公因数
8251=6105×1+2146 6105=2146×2+1813
2146=1813×1+333 1813=333×5+148
333=148×2+37 148=37×4 8251与6105的最大公因数是37
辗转相除法:
给定两个正数,用 较大的数 除以 较小的数 ,
1.3算法案例(一)
辗转相除法
复习提问:
小学学过的求两个数的最大公约数的方法:
先用两个数公有的 质因数 连续去除,
一直除到所得的商是 互质数 为止,
然后把所有的除数 连乘 起来.
例如:求18与30的最大公约数.
2 3 18 9 3 30 15 5
所以18与30的最大公约数是2×3=6
1、辗转相除法
求得 商 和 余数 ,若余数不为一对数继续上面
的除法,直到大数被小数除尽,这时的 较小数
就是原来两数的最大公约数。
练习:
• 教材:45页——1
2、辗转相除法计算的程序框图及程序
算法步骤: • 第一步,给定两个正整数m,n. • 第二步,比较m,n的大小,若n>m则交换 m,n,否则直接执行下一步. • 第三步,计算m除以n所得的余数r. • 第四步,m=n,n=r. • 第五步,若r=0,则m,n的最大公约数等于m; 否则,返回第三步.
1.3 算法案例1---辗转相除法与更相减损术 8
1.3 算法案例1.3 算法案例——案例1 辗转相除法与更相减损术8**学习目标**1.理解辗转相除法与更相减损术求最大公约数的方法。
2.把辗转相除法与更相减损术的方法转换成程序框图与程序语言.**要点精讲**1.辗转相除法例如,求两个正数8251和6105的最大公约数。
分析与解:8251与6105两数都比较大,而且没有明显的公约数,可以考虑用两数中较大的数除以较小的数,求得商和余数:8251=6105×1+2146显然8251与6105的公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数, 所以8251与6105的最大公约数也是6105与2146的最大公约数。
6105=2146×2+1813,2146=1813×1+333,1813=333×5+148333=148×2+37,148=37×4+0则37为37与148的最大公约数,也是148与333的最大公约数,也是333与1813的最大公约数,也是1813与2146的最大公约数,也是2146与6105的最大公约数。
所以,2146与6105的最大公约数是37。
以上我们求最大公约数的方法就是辗转相除法。
也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。
2.更相减损术我国早期也有解决求最大公约数问题的算法,就是更相减损术。
在《九章算术》中记载了更相减损术求最大公约数的步骤:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。
翻译为:(1)任意给出两个正数;判断它们是否都是偶数。
若是,用2约简;若不是,执行第二步。
(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。
继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
**范例分析**例1.试分别用辗转相除法和更相减损术求840与1764、440与556的最大公约数。
人教版高中数学必修三课件:1.3 算法案例(共55张PPT)
解:用辗转相除法求最大公约数:612=468×1+144,468=144×3+36,144=36×4,即612
和468的最大公约数是36. 用更相减损术检验:612和468均为偶数,两次用2约简得153和117,153-117=36,11736=81,81-36=45,45-36=9,36-9=27,27-9=18,18-9=9,所以612和468的最大公约数为
转化为求n个一次多项式的值.
预习探究
知识点二 进位制
1.进位制:进位制是为了计数和运算方便而约定的记数系统,约定“满k进一”就 是 k进制 ,k进制的基数(大于1的整数)就是 k . 2.将k进制数化为十进制数的方法:先把k进制数写成各位上的数字与k的幂的乘积之和 的形式,再按照十进制数的运算规则计算出结果. 3.将十进制数化为k进制数的方法是 除k取余法 .即用k连续去除十进制数所得 的 商 ,直到商为零为止,然后把各步得到的余数 倒序 写出.所得到的就是相应的k 进制数. 4.k进制数之间的转化:首先转化为十进制数,再转化为 k进制数.
第一章 算法初步
1.3 算法案例 第2课时 秦九韶算法与进位制
预习探究
知识点一 秦九韶算法
1.秦九韶算法是我国南宋数学家秦九韶在他的著作《数书九章》中提出的一 个用于计算多项式值的方法. 2.秦九韶算法的方法: 把一个n次多项式f(x)=anxn+an-1xn-1+…+a1x+a0 改写成下列的形式: f(x)=(anxn-1+an-1xn-2+…+a1)x+a0= ((anxn-2+an-1xn-3+…+a2)x+a1)x+a0 =…=
1.3算法案例
(c)情感态度与价值观 1.通过阅读中国古代数学中的算法案例,体会中 国古代数学对世界数学发展的贡献。 2.在学习古代数学家解决数学问题的方法的过程 中培养严谨的逻辑思维能力,在利用算法解决数学问题 的过程中培养理性的精神和动手实践的能力。 二、教学重难点 重点:理解辗转相除法与更相减损术求最大公约数 的方法。 难点:把辗转相除法与更相减损术的方法转换成程 序框图与程序语言。 三、学法 在理解最大公约数的基础上去发现辗转相除法与更 相减损术中的数学规律,并能模仿已经学过的程序框图 与算法语句设计出辗转相除法程序框图与算法程序。
二、教学重难点 重点:各进位制表示数的方法及各进位制 之间的转换 难点:除k去余法的理解以及各进位制之 间转换的程序框图的设计 三、学法 在学习各种进位制特点的同时探讨进位制 表示数与十进制表示数的区别与联系,熟悉各 种进位制表示数的方法,从而理解十进制转换 为各种进位制的除k去余法。
[问题1]我们常见的数字都是十进制的, 但是并不是生活中的每一种数字都是十进制的. 比如时间和角度的单位用六十进位制,电子计 算机用的是二进制.那么什么是进位制?不同的 进位制之间又有什么联系呢? 进位制是人们为了计数和运算的方便而 约定的一种记数系统,约定满二进一,就是二 进制;满十进一,就是十进制;满十六进一,就 是十六进制;等等. “满几进一”,就是几进制,几进制的基数就是几. 可使用数字符号的个数称为基数.基数 都是大于1的整数.
案例1 辗转相除法与更相减损术
一、三维目标 (a)知识与技能 1.理解辗转相除法与更相减损术中蕴含的数学原 理,并能根据这些原理进行算法分析。 2.基本能根据算法语句与程序框图的知识设计完 整的程序框图并写出算法程序。 (b)过程与方法 在辗转相除法与更相减损术求最大公约数的学习 过程中对比我们常见的约分求公因式的方法,比较它 们在算法上的区别,并从程序的学习中体会数学的严 谨,领会数学算法计算机处理的结合方式,初步掌握 把数学算法转化成计算机语言的一般步骤。
第一章 1.3 算法案例:辗转相除法、秦九韶算法
3,答案:C
返回
• 4.用秦九韶算法求f(x)=3x?+4x?+5x? +6x?+7x?+8x+1,当x=0.4时的值, 需进行乘法运算和加法运算的次数分别为 ( ) • A. 6 6 B. 5 6 • C.6 5 D.6 12 • 解析:改写多项多f(x)=(((((3x+4)x+5)x+ 6)x+7)x+8)x+1,则需要6次乘法和6次加 法. • 答案:A
返回
课堂练习
2.用辗转相除法求294和84的最大公约数时,需要 做除法的次数是( ) A.1 B. 2 C.3 D. 4 3.用秦九韶算法求多项式的值,可用哪种结构的算 法实现( ) A.顺序结构 B.条件结构 C.循环结构 D.A、B两种 • 2,解析:由294=84×3+42,84=42×2知,共需 做2次除法. • 答案:B
返回
法二:更相减损术:
因为378与90都是偶数. 所以用2约简得189和45. 189-45=144,144-45=99, 99-45=54,54-45=9, 45-9=36,36-9=27, 27-9=18,18-9=9.
所以378与90的最大公约数为2×9=18.
返回
[例2]
用秦九韶算法求多项式
1.3 算法案例 辗转相除法、秦九韶算法
返回
预习思考
• 1,用辗转相除法求80和36的最大公约数, 并用更相减损术检验所得结果.
• 2,用秦九韶算法求多项式f(x)=2x4-6x3 -5x2+4x-6在x=5时的值.
返回
[例1]
用辗转相除法求80和36的最大公约数,并
用更相减损术检验所得结果. [自主解答] 用辗转相除法:
返回
1.秦九韶算法的步骤
返回
2.应用秦九韶算法计算多项式的值应注意的问题 (1)要正确将多项式的形式进行改写. (2)计算应由内向外依次计算. (3)当多项式函数中间出现空项式,要以系数为零的
高中数学必修三1.3算法案例-辗转相除法
1734=816×2+102
816=102×8
2)再求102与1343的最大公约数
1343=102×13+17
102=17×6
所以17为102与1343的最大公约数
所以17为1734、816、1343这三个数的最大公约数
板
书
设
计
第1.3节算法案例-----辗转相除法
............................... ................................... ...............
课后作业
P45练习:1.
P48习题1.3A组:1.
课
后
反
思
1.辗转相除法的思想2.辗转相除法算法框图3.例题讲解
................................ ................................... ...............
............................... ................................... ...............
2.基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序。
(b)过程与方法
在辗转相除法求最大公约数的学习过程中体会我们常见的约分求公因式的方法,,并从程序的学习中体会数学的严谨,领会数学算法计算机处理的结合方式,初步掌握把数学算法转化成计算机语言的一般步骤。
(c)情态与价值
1.通过阅读中国古代数学中的算法案例,体会中国古代数学对世界数学发展的贡献。
PRINT m
END
课堂练习:1.求两数4081与20723的最大公约数.
山东省高中数学《1.3 算法案例》教案1 新人教A版必修3
1.3 算法案例整体设计教学分析在学生学习了算法的初步知识,理解了表示算法的算法步骤、程序框图和程序三种不同方式以后,再结合典型算法案例,让学生经历设计算法解决问题的全过程,体验算法在解决问题中的重要作用,体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力.三维目标1.理解算法案例的算法步骤和程序框图.2.引导学生得出自己设计的算法程序.3. 体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力.重点难点教学重点:引导学生得出自己设计的算法步骤、程序框图和算法程序.教学难点:体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力. 课时安排3课时教学过程第1课时案例1 辗转相除法与更相减损术导入新课思路1(情境导入)大家喜欢打乒乓球吧,由于东、西方文化及身体条件的不同,西方人喜欢横握拍打球,东方人喜欢直握拍打球,对于同一个问题,东、西方人处理问题方式是有所不同的.在小学,我们学过求两个正整数的最大公约数的方法:先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来. 当两个数公有的质因数较大时(如 8 251 与6 105),使用上述方法求最大公约数就比较困难.下面我们介绍两种不同的算法——辗转相除法与更相减损术,由此可以体会东、西方文化的差异.思路2(直接导入)前面我们学习了算法步骤、程序框图和算法语句.今天我们将通过辗转相除法与更相减损术来进一步体会算法的思想.推进新课新知探究提出问题(1)怎样用短除法求最大公约数?(2)怎样用穷举法(也叫枚举法)求最大公约数?(3)怎样用辗转相除法求最大公约数?(4)怎样用更相减损术求最大公约数?讨论结果:(1)短除法求两个正整数的最大公约数的步骤:先用两个数公有的质因数连续去除,一直除到所得的商是两个互质数为止,然后把所有的除数连乘起来.(2)穷举法(也叫枚举法)穷举法求两个正整数的最大公约数的解题步骤:从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数.(3)辗转相除法辗转相除法求两个数的最大公约数,其算法步骤可以描述如下:第一步,给定两个正整数m,n.第二步,求余数r:计算m除以n,将所得余数存放到变量r中.第三步,更新被除数和余数:m=n,n=r.第四步,判断余数r是否为0.若余数为0,则输出结果;否则转向第二步继续循环执行.如此循环,直到得到结果为止. 这种算法是由欧几里得在公元前300年左右首先提出的,因而又叫欧几里得算法.(4)更相减损术我国早期也有解决求最大公约数问题的算法,就是更相减损术. 《九章算术》是中国古代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.”翻译为现代语言如下:第一步,任意给定两个正整数,判断它们是否都是偶数,若是,用2约简;若不是,执行第二步.第二步,以较大的数减去较小的数,接着把所得的差与较小的数比较,并以大数减小数,继续这个操作,直到所得的数相等为止,则这个数(等数)或这个数与约简的数的乘积就是所求的最大公约数.应用示例例1 用辗转相除法求8 251与6 105的最大公约数,写出算法分析,画出程序框图,写出算法程序.解:用两数中较大的数除以较小的数,求得商和余数:8 251=6 105×1+2 146.由此可得,6 105与2 146的公约数也是8 251与6 105的公约数,反过来,8 251与6 105的公约数也是6 105与2 146的公约数,所以它们的最大公约数相等.对6 105与2 146重复上述步骤:6 105=2 146×2+1 813.同理,2 146与1 813的最大公约数也是6 105与2 146的最大公约数.继续重复上述步骤:2 146=1 813×1+333,1 813=333×5+148,333=148×2+37,148=37×4.最后的除数37是148和37的最大公约数,也就是8 251与6 105的最大公约数.这就是辗转相除法.由除法的性质可以知道,对于任意两个正整数,上述除法步骤总可以在有限步之后完成,从而总可以用辗转相除法求出两个正整数的最大公约数.算法分析:从上面的例子可以看出,辗转相除法中包含重复操作的步骤,因此可以用循环结构来构造算法.算法步骤如下:第一步,给定两个正整数m,n.第二步,计算m除以n所得的余数为r.第三步,m=n,n=r.第四步,若r=0,则m,n的最大公约数等于m;否则,返回第二步.程序框图如下图:程序:INPUT m,nDOr=m MOD nm=nn=rLOOP UNTIL r=0PRINT mEND点评:从教学实践看,有些学生不能理解算法中的转化过程,例如:求8 251与6 105的最大公约数,为什么可以转化为求6 105与2 146的公约数.因为8 251=6 105×1+2 146,可以化为8 251-6 105×1=2 164,所以公约数能够整除等式两边的数,即6 105与2 146的公约数也是8 251与6 105的公约数.变式训练你能用当型循环结构构造算法,求两个正整数的最大公约数吗?试画出程序框图和程序.解:当型循环结构的程序框图如下图:程序:INPUT m,nr=1WHILE r>0r=m MOD nm=nn=rWENDPRINT mEND例2 用更相减损术求98与63的最大公约数.解:由于63不是偶数,把98和63以大数减小数,并辗转相减,如下图所示.98-63=3563-35=2835-28=728-7=2121-7=1414-7=7所以,98和63的最大公约数等于7.点评:更相减损术与辗转相除法的比较:尽管两种算法分别来源于东、西方古代数学名著,但是二者的算理却是相似的,有异曲同工之妙.主要区别在于辗转相除法进行的是除法运算,即辗转相除;而更相减损术进行的是减法运算,即辗转相减,但是实质都是一个不断的递归过程.变式训练用辗转相除法或者更相减损术求三个数324,243,135的最大公约数.解:324=243×1+81,243=81×3+0,则324与243的最大公约数为81.又135=81×1+54,81=54×1+27,54=27×2+0,则 81 与 135的最大公约数为27.所以,三个数324、243、135的最大公约数为27.另法:324-243=81,243-81=162,162-81=81,则324与243的最大公约数为81.135-81=54,81-54=27,54-27=27,则81与135的最大公约数为27.所以,三个数324、243.135的最大公约数为27.例3 (1)用辗转相除法求123和48的最大公约数.(2)用更相减损术求80和36的最大公约数.解:(1)辗转相除法求最大公约数的过程如下:123=2×48+27,48=1×27+21,27=1×21+6,21=3×6+3,6=2×3+0,最后6能被3整除,得123和48的最大公约数为3.(2)我们将80作为大数,36作为小数,因为80和36都是偶数,要除公因数2.80÷2=40,36÷2=18.40和18都是偶数,要除公因数2.40÷2=20,18÷2=9.下面来求20与9的最大公约数,20-9=11,11-9=2,9-2=7,7-2=5,5-2=3,3-2=1,2-1=1,可得80和36的最大公约数为22×1=4.点评:对比两种方法控制好算法的结束,辗转相除法是到达余数为0,更相减损术是到达减数和差相等.变式训练分别用辗转相除法和更相减损术求1 734,816的最大公约数.解:辗转相除法:1 734=816×2+102,816=102×8(余0),∴1 734与816的最大公约数是102.更相减损术:因为两数皆为偶数,首先除以2得到867,408,再求867与408的最大公约数.867-408=459,459-408=51,408-51=357,357-51=306,306-51=255,255-51=204,204-51=153,153-51=102,102-51=51.∴1 734与816的最大公约数是51×2=102.利用更相减损术可另解:1 734-816=918,918-816=102,816-102=714,714-102=612,612-102=510,510-102=408,408-102=306,306-102=204,204-102=102.∴1 734与816的最大公约数是102.知能训练求319,377,116的最大公约数.解:377=319×1+58,319=58×5+29,58=29×2.∴377与319的最大公约数为29,再求29与116的最大公约数.116=29×4.∴29与116的最大公约数为29.∴377,319,116的最大公约数为29.拓展提升试写出利用更相减损术求两个正整数的最大公约数的程序.解:更相减损术程序:INPUT “m,n=”;m,nWHILE m<>nIF m>n THENm=m-nELSEm=n-mEND IFWENDPRINT mEND课堂小结(1)用辗转相除法求最大公约数.(2)用更相减损术求最大公约数.思想方法:递归思想.作业分别用辗转相除法和更相减损术求261,319的最大公约数.分析:本题主要考查辗转相除法和更相减损术及其应用.使用辗转相除法可依据m=nq+r,反复执行,直到r=0为止;用更相减损术就是根据m-n=r,反复执行,直到n=r为止.解:辗转相除法:319=261×1+58,261=58×4+29,58=29×2.∴319与261的最大公约数是29.更相减损术:319-261=58,261-58=203,203-58=145,145-58=87,87-58=29,58-29=29,∴319与261的最大公约数是29.设计感想数学不仅是一门科学,也是一种文化,本节的引入从东、西方文化的不同开始,逐步向学生渗透数学文化.从知识方面主要学习用两种方法求两个正整数的最大公约数,从思想方法方面,主要学习递归思想.本节设置精彩例题,不仅让学生学到知识,而且让学生进一步体会算法的思想,培养学生的爱国主义情操.。
课件11:1.3 算法案例(二)
[针对训练 3] 将 53(8)转化为二进制数. [解] 先将八进制数 53(8)转化为十进制数: 53(8)=5×81+3×80=43; 再将十进制数 43 转化为二进制数:
所以 53(8)=101011(2).
课堂归纳小结 把一个非十进制数转化为另一种非十进制数,通常 是把这个数先转化为十进制数,然后再利用除 k 取余法, 把十进制数转化为 k 进制数.而在使用除 k 取余法时要 注意以下 几点:(1)必须除到所得的商是 0 为止;(2)各步所得 的余数必须从下到上排列;(3)切记在所求数的右下角标 明基数.
[针对训练 2] (1)把十进制数 15 化为二进制数为( )
A.1011
B.1001(2)
C.1111(2)
D.1111
(2)把四进制数 13022 化为六进制数.
[解析] (1)因为 所以 15=1111(2),故 C 正确.
(2)先把四进制数 13022 化为十进制数. 13022(4)=1×44+3×43+0×42+2×4+2×40=256+192+0+8+2=458. 再把十进制数 458 化为六进制数. 458=2042(6). 故 13022(4)=2042(6).
本课结束
名师提醒 将 k 进制数化为十进制数的方法
先把 k 进制数写成各位上的数字与 k 的幂的乘积之 和的形式,再按照十进制数的运算规则计算出结果.
[针对训练 1] (1)101(2)转化为十进制数是( )
A.2
B.5
C.20
D.101
(2)下列最大数是( )
A.110(2)
B.18
C.16(8)
D.20(5)
[答案] (1)C (2)2042(6)
题型三 不同进位制间的转化 典例 3 把五进制数 1234(5)转化为十进制数,再把它转 化为八进制数. [解] ∵1234(5)=1×53+2×52+3×51+4×50=194,而
1.3算法案例 课件-高一数学人教A版必修3
用秦九韶算法求这个多项式当x=5时的值。
解:根据秦九韶算法,把多项式改写成如下 形式:
f (x) ((((4x 2)x 3.5)x 2.6)x 1.7)x 0.8
按照从内到外的顺序,依次计算一次多项式当 x=5时的值:
WHILE d<>n
IF d>n THEN m=d
ELSE m=n
n=d
END IF d=m-n WEND d=2^k*d
PRINT d
END
问题2:怎样求多项式 f (x) x5 x4 x3 x2 x 1当x=5 的值呢?
方法1:把5代入多项式,计算各项的值,然后把它们加 起来。这时共做了1+2+3+4=10次乘法运算,5 次加法运算。
例1:用更相减损术求98与63的最大公约数。
解:由于63不是偶数,把98和63以大数减小数, 并辗转相减得,如图所示:
98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7
所以,98和63的最大公约数等于7。
思考:把更相减损术与辗转相除法比较,你有什么
发现?你能根据更相减损术设计程序,求两个正数的 最大公约数吗?
v1 an x an1
然后由内向外逐层计算一次多项式的值,即
v2 v1 x an2 ,
v3 v2 x an3 ,
vn vn1 x a0 ,
这样,求n次多项式f(x)的值就转化为求n个一次多项 式的值。
上述方法称为秦九韶算法。直到今天, 这种算法仍是 多项式求值比较先进的算法。
例2、已知一个5次多项式为
⑤十进制化k进制
2014年人教A版必修三课件 1.3 算法案例
输入正数m,n
m>n? 是 m=m-n 否 m=n? 是 输出m 结束
否 n=n-m
案例2 秦九韶算法 问题2. 下面是求多项式 f(x)=x5+x4+x3+x2+x+1 的 值的两种算法, 你认为哪种算法要快一些? 为什么? 算法 1: 直接将 x 的值代入多项式计算; 算法 2: 将多项式变形成 f(x)=((((x+1)x+1)x+1)x+1)x+1. 算法 1 要做 10 次乘法和 5 次加法. 算法 2 只做 4 次乘法和 5 次加法. 计算机做一次乘法用的时间比做一次加法所用 的时间长得多. 对于 n 次多项式的求值运算, 我国南宋时期的 秦九韶有如下的算法:
5. 什么是秦九韶算法? 它的特点是什么? 6. 你能写出秦九韶算法的程序吗?
Hale Waihona Puke 案例1 辗转相除法与更相减损术 问题1. 你能求两个数的最大公约数吗? 看下面 一列等式, 请问: 37 是 2146 与 1813 的公约数吗? 2146 1813 余 333, 2146 = 1813 1 +333, 有37的约数, 1813 333 余 148, 1813 = 333 5 +148, 有37的约数, 333 148 余 37, 333 = 148 2 +37, 有37的约数, 148 37 余 0. 有37的约数, 148 = 37 4. 求两个数的最大公约数的算法步骤: (1) 大数除以小数取余数; (2) 较小的数与余数又进行大数除以小数取余数; 如此重复进行, 直到余数为 0. 余数为 0 时的除数就是最大公约数. 这叫辗转相除法, 又叫欧几里得算法.
否则, 返回第二步进入循环.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P x a0 a1x a2 x an x n
2
n
uk a0 a1x a2 x ak x
2
k
由于x的k次幂实际上等于其次幂再乘上x,而 前k+1项的部分和等于前k项的部分和再加上第 k +l项,因此,逐项求和的方法可以归结为如 下的递推关系:
t k xtk 1 k 1,2,, n u k u k 1 a k t k
把30723分解为3个大于10的因子的乘积只有5种情况 ①11×19×147(三个因子的和是177) ②11×21×133(三个因子的和是165) ③19×49×57 (三个因子的和是101)
④11×49×57 (三个因子的和是117)
⑤19×21×77 (三个因子的和是117)
在这5种情况中考察,符合a>b+c而且最大的数小于100的,
p A0 A1 x; t x
PROCEDURE CPOLY(A,n,x,P)
t t x; P P Ai t
OUTPUT P RETURN
FOR i=2 TO n DO
在这个算法中,为了计算一个x点处的函数,共需要作2n1次乘法和n次加法。还能不能减少乘法的次数呢?我们 可以将式(3. 4. 1)的右端按降幂次序重新排列,并将它 表述成如下嵌套形式 Pn x an x an1 x an2 x a1 x a0 (3.4.4) 这样,就可以利用式(3.4.4)的特殊结构,从里往外一 层一层地进行计算,即按如下递推关系进行计算: u n an k n 1,,1,0 (3.4.5) u k u k 1x ak
老师后来告诉小陆,她用的是穷举法。 穷举算法的思路是,列举出所有可能的情况,逐个判断有哪
些是符合问题所要求的条件,从而得到问题的解答。
.Q.题很有意思,但它用对话的形式表达,有些条件不够 明确,因此需要用数学语言来描述它。(用数学语言描述 问题,叫做建立数学模型。在解决实际问题时,一般都需 要为这个问题建立数学模型)。
设计算法 根据上述的分析,我们可以写出解决问题的算法如下: ①令H=10; ②令S=0;
③L=0.7×H; ④S=S+H+L; ⑤H=L; ⑥如果L≥10/1000,返回第③ ⑦输出S的值;
⑧结束
例一个关于栽树数量的I.Q.题 小陆学校的3个环保活动小组经常利用节假日去栽树。有一
天,李老师问小陆3个小组各栽了多少树?因为李老师是教
i 1 k
k
2.对半法查找(二分法)算法
对这种算法的实质是在一个有限且有序的对象中,通
过每次缩减一半查找范围而达到迅速确定目的一个有
效算法。因此有着很广泛的应用。例如,在数学中有
很多方程是写不出根的解析表达式的,但是根的存在
范围比较容易确定,那么如何才能找到它的根的一个 足够准确的近似值呢?这时对半查找算法就可以大显 身手了。
PROCEDURE CHORNER(A,n,x,P) P An
FOR i=n-1 TO 0 BY -1 DO P P x Ai OUTPUT P RETURN
由秦九韶算法可以看出,多项式函数的求 值只要用一个很简单的循环就能完成,并 且在这个循环中只需要作n次乘法和n次加 法就够了。它在实际使用中是一个很有效 的方法。
(1)若y不能被100整除,则输出“y是闰年” (2)若y能被100整除,则判断y是否能被400整除,则: ① 若y能被400整除,则输出“y是闰年”;
② 若y不能被400整除,则输出“y不是闰 年”。 这个算法的流程图如下图4-3:
小球运动问题
问题: 小球从10米高处自由下落,每次弹回的高度大约是 下落高度的70%。当小球弹起的高度不足最初高度 的千分之一时,小球很快就会停止跳动。计算小球 在整个弹跳过程中所经历的总路程(忽略高度不足 原高度千分之一的部分)。 分析问题
作为递推公式(3.4.2)的初值为: t 0 1 u 0 a 0
(3.4.2)
(3.4.3)
这样,就可以利用初值(3.4.3),对于k=1, 2,…直到n,反复利用公式(3.4.2)进行计算, 最后就可以得到。其算法描述如下:
(1)逐项法多项式求值。 输入:存放 Pn x 的系数数组A(0:n); 自变量x值。其中 n 1 输出: Pn x 值P
由初等函数f(x)=0构成的方程,如果有f(a)f(b)<0,则
可以肯定方程f(x)=0在(a , b)至少有一个实数根。 选择(a , b)的中点c,若f(c)=0,则根就是x=c。 若f(c)<0或f(c)>0,则用c值取代相应的a或b(取代原则 是:保证有f(a)f(b)<0),这样(a , b)的长度就只有
算法案例
1.多项式求值的秦九韶方法 如果给定一个多项式,
(3. 4.1) 其中 n 1 现在的问题是,给定一个x的值,要求 多项式函数Pn x 的值。对于这个问题,一种看起来 很“自然”的方法是直接逐项求和。如果用 表示 tk u x的k次幂,k 表示式(3. 4.1)右端前k +l项的部分 和,即 x k t
最后可得结果
Pn x u0
这种多项式求值的方法是由我国宋代的一位 数学家秦九韶最先提出的,我们称之为秦九 韶方法,在有的书上也叫霍纳(Horner)方法。 其算法描述如下: 算法3.2多项式求值的秦九韶方法. 输入:存放 Pn x 的系数数组A(0:n); 自变量x值。其中 n 1。 输出: n x 值P。 P
从表中容易看出:小球每次弹起的距离就是本次下落距离的0.7 倍,而每一次下落距离等于上一次弹起的距离,即 Ln=0.7Hn Hn+1=Ln 其中Hn第n次下落的距离,Ln为第n次弹起的距离,n=1,2, 3,…,H1=10。把它们都相加,即可求出问题的解: S=(H1+L1)+(H2+L2)+(H3+L3)+……
原来的一半,我们可以更小的范围找到根。当有根的
区间的长度足够小(通常是小于预先指定的误差),
这时区间内任意两点的距离都小于区间的长度,所以
区间内的任意一点都可以用来当方程根的近似值。这 个就是对半求根法
参考算法: 第一步 确定有解区间 [a, b]
( f (a) f (b) 0)
第二步 取 [a, b] 的中点 (a b)/2
3
例 闰年问题:输入年份y,判断该年份是否为闰年 并输出结果。
设y为年份,按照历法的规定,如果y为闰年, 那么或者y能被4整除但不能被100整除,或者y能被 400整除。可以用选择结构将上述算法表示如下:
若y不能被4整除,则输出“y不是闰年”;
若y能被4整除,则判断y是否被100整除,则:
图 3.17 y=x-3s inx 的 象 用 半 图 及 对 5 ( , )的中点 ,则因 法缩小有根范围示意图: 2 4 8 5 为 f ( ) 0, 所以,方程 根 位 的 置 8 3 5 3 在( , )应当有根。 2 8 4 1 不断重复这个过程,要 么 2 某一次区间的中点就是 根, 0 要么有根的范围缩小了 一 半,当有根的范围小于 题 c a b 目要求的精度0.0001 ,那么 有根范围1: 2 c 3 这个区间中的任意一点 都 有根范围2: a b 2 4 可以当作是方程根的近 似 c 3 5 有 范 3: 根 围 a b 值。 4 8
第三步 计算函数f(x)在中点处的函数值
f(
ab ) 2
。
第四步 判断函数值
f(
ab ) 2
是否为0。 就是方程的解,问题就得 不为0,则分下列两种
x (1) 如果为0, 到了解决。
ab 2
(2) 如果函数值 情形:
f(
ab ) 2
①若 为 ( a, a b ) ;
2
f (a) f (
只有最后一种情况,即a=77,b=21,c=19。
计算算法 设计穷举算法的关键是如何列举所有可能的情况,绝对不能 遗漏,最好不要重复。在列举时注意变量的范围,可以减少 工作量。 我们可以从最小的变量c入手,让它从10开始变化。但变化 的范围到哪里为止呢?粗略估算一下,三个数相乘是30723, 最小的c不超过它的立方根。我们可以用平方根做近似替代, 不必作太多推算。 当c值产生之后,就可以处理变量b。因为它不小于c,让它 从c开始,也让它变化到30723的平方根。 有了c和b的值之后,就要判断他们是否都是30723的因子。 如果是,计算出第三个因子a,然后进行判断:a是否大于 b+c并且a<100。满足条件就是解答了。
例(对半法求方程解): 方程x-3sinx=0 有一个根,试把它求出来,要求准确到 0.0001。
分析问题: 记 f ( x) x 3 sin x。 注意到 f ( ) 3 0, 2 2 及 f ( ) 3 sin 0, 而y x 3 sin x的图线在 ( ,)是没有间断的,所以 我们有理由认为,方 2 程x 3 sin x 0 在( ,)之间应当有一个根。 2 3 同样的,如果我们取( ,)的中点 ,则因 2 4 3 3 为 f ( ) 0, 所以方程在( , )应当有根。取 4 2 4
M 1. 设 M mi 分别计算M i (i 1, ...,k ) mi i 0 2. 分别解关于M i'的同余方程: i' M i 1(modmi ) M (i 1, ..., k) 3. 令a i M i' M i,则同余方程组的正整 数解是: x ai bi (modM )
问题 a、b、c是三个整数,100 > a > b > c > 10, a×b×c==30723,且a > b+c,试确定a、b、c的值。 分析问题