必修三数学 算法的基本思想 教案

必修三数学 算法的基本思想 教案

三维目标

1.正确理解算法的概念,掌握算法的基本特点. 2.通过例题教学,使学生体会设计算法的基本思路.

3.通过有趣的实例使学生了解算法这一概念的同时,激发学生学习数学的兴趣.

重点难点

教学重点:算法的含义及应用.

教学难点:写出解决一类问题的算法. 课时安排 1课时

教学过程 导入新课

思路1. 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量狼就会吃掉羚羊.此人如何将动物完好地转移过河?请同学们写出解决问题的步骤,解决这一问题将要用到我们今天学习的内容——算法.

思路2. 大家都看过赵本山与宋丹丹演的小品吧,宋丹丹说了一个笑话,把大象装进冰箱总共分几步?

答案:分三步,第一步:把冰箱门打开;第二步:把大象装进去;第三步:把冰箱门关上.

上述步骤构成了把大象装进冰箱的算法,今天我们开始学习算法的概念. 思路3. 算法不仅是数学及其应用的重要组成部分,也是计算科学的重要基础.在现代社会里,计算机已成为人们日常生活和工作中不可缺少的工具.如听音乐、看电影、玩游戏、打字、画卡通画、处理数据都能通过计算机实现,计算机是怎样工作的呢?要想弄清楚这个问题,算法的学习是一个开始.

推进新课 新知探究 提出问题

1.解二元一次方程组有几种方法?

⎧x -2y =-1,①

2.结合实例⎨ 总结用加减消元法解二元一次方程组的步

2x +y =1,②⎩

骤.

⎧x -2y =-1,①

3.结合实例⎨

⎩2x +y =1,②

总结用代入消元法解二元一次方程组的步

骤.

4.请写出解一般二元一次方程组的步骤. 5.根据上述实例谈谈你对算法的理解. 6.请同学们总结算法的特征. 7.请思考我们学习算法的意义. 讨论结果:

1.代入消元法和加减消元法. 2.回顾二元一次方程组 ⎧⎨x -2y =-1,①⎩2x +y =1②

的求解过程,我们可以归纳出以下步骤: 第一步,①+②×2,得5x =1. ③

第二步,解③,得x =1

5

第三步,②-①×2,得 5y =3. ④

第四步,解④,得y =3

5⎧⎪x =15,

第五步,得到方程组的解为⎨

⎪⎩y =35.

3.用代入消元法解二元一次方程组

⎧⎨x -2y =-1,①⎩2x +y =1,②

我们可以归纳出以下步骤: 第一步,由①得 x =2y -1. ③

第二步,把③代入②,得2(2y -1) +y =1. ④ 第三步,解④得

y =35

. ⑤

第四步,把⑤代入③,得x =2×31

51=5⎧x =1,第五步,得到方程组的解为⎪⎨

5

⎪⎩y =35.

4.对于一般的二元一次方程组

⎧⎨a 1x +b 1y =c 1,

①⎩a 2x +b 2y =c 2,

其中a 1b 2-a 2b 1≠0,可以写出类似的求解步骤:

第一步,①×b 2-②×b 1,得 (a 1b 2-a 2b 1) x =b 2c 1-b 1c 2. ③

第二步,解③,得x =b 2c 1-b 1c 2

a 1b 2-a 2b 1

第三步,②×a 1-①×a 2,得 (a 1b 2-a 2b 1) y =a 1c 2-a 2c 1. ④

第四步,解④,得y =

a 1c 2-a 2c 1

a 1b 2-a 2b 1

21111222

12222111

b c -b c ⎧x =

⎪a b -a b ,

第五步,得到方程组的解为⎨

a c -a c y =⎪⎩a b -a b .

5.算法的定义:广义的算法是指完成某项工作的方法和步骤,那么我们可

以说洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法,等等.

在数学中,算法通常是指按照一定规则解决某一类问题的明确有限的步骤. 现在,算法通常可以编成计算机程序,让计算机执行并解决问题.

6.算法的特征:①确定性:算法的每一步都应当做到准确无误、“不重不漏”.“不重”是指不是可有可无的,甚至无用的步骤,“不漏” 是指缺少哪一步都无法完成任务.②逻辑性:算法从开始的“第一步”直到“最后一步”之间做到环环相扣,分工明确,“前一步”是“后一步”的前提, “后一步”是“前一步”的继续.③有穷性:算法要有明确的开始和结束,当到达终止步骤时所要解决的问题必须有明确的结果,也就是说必须在有限步内完成任务,不能无限制地持续进行.

7.在解决某些问题时,需要设计出一系列可操作或可计算的步骤来解决问题,这些步骤称为解决这些问题的算法.也就是说,算法实际上就是解决问题的一种程序性方法.算法一般是机械的,有时需进行大量重复的计算,它的优点是一种通法,只要按部就班地去做,总能得到结果.因此算法是计算科学的重要基础.

应用示例

思路1

1在给定素数表的条件下,设计算法,将936分解成素因数的乘积.(4 000以内的素数表见教科书附录1)

分析:1. 查表判断936是否为素数: (1)如果936是素数,则分解结束;

(2)如果936不是素数,则进行第2步.

2.确定936的最小素因数:2. 936=2×468. 3.查表判断468是否为素数: (1)如果468是素数,则分解结束;

(2)如果468不是素数,则重复上述步骤,确定468的最小素因数. 重复进行上述步骤,直到找出936的所有素因数. 解:算法步骤如下:

1.判断936是否为素数:否.

2.确定936的最小素因数:2. 936=2×468. 3.判断468是否为素数:否.

4.确定468的最小素因数:2. 936=2×2×234. 5.判断234是否为素数:否.

6.确定234的最小素因数:2 936=2×2×2×117. 7.判断117是否为素数:否.

8.确定117的最小素因数:3. 936=2×2×2×3×39.

9.判断39是否为素数:否.

10.确定39的最小素因数:3. 936=2×2×2×3×3×13. 11.判断13是否为素数:13是素数,所以分解结束. 分解结果是936=2×2×2×3×3×13. 点评:以上步骤是解决素因数分解问题的一个过程,只要依照这一系列步骤,都能解决这个问题.我们把这一系列步骤称为解决这个问题的一个算法.

变式训练

设计一个算法,求840与1 764的最大公因数.

分析:我们已经学习了对自然数进行素因数分解的方法,下面的算法就是在此基础上设计的.解答这个问题需要按以下思路进行.

首先,对两个数分别进行素因数分解: 840=23×3×5×7, 1 764=22×32×72. 其次,确定两数的公共素因数:2,3,7.

接着,确定公共素因数的指数:对于公共素因数2,22是1 764的因数,23

是840的因数,因此22是这两个数的公因数,这样就确定了公共素因数2的指数为2. 同样,可以确定出公因数3和7的指数均为1. 这样,就确定了840与1 764

211

的最大公因数为2×3×7=84.

解:算法步骤如下:

1.先将840进行素因数分解:840=23×3×5×7; 2.然后将1 764进行素因数分解:1 764=22×32×72; 3.确定它们的公共素因数:2,3,7;

4.确定公共素因数的指数:公共素因数2,3,7的指数分别为2,1,1; 5.最大公因数为22×31×71=84.

例2 一位商人有9枚银元,其中有1枚略轻的是假银元.你能用天平(不用砝码) 将假银元找出来吗?

分析:最容易想到的解决这个问题的一种方法是:把9枚银元按顺序排成一列,先称前2枚,若不平衡,则可找出假银元;若平衡,则2枚银元都是真的,再依次与剩下的银元比较,就能找出假银元.

图1

解:按照下列步骤,就能将假银元找出来:

1.任取2枚银元分别放在天平的两边.如果天平左右不平衡,则轻的一边就是假银元;如果天平平衡,则进行第2步.

2.取下右边的银元,放在一边,然后把剩余的7枚银元依次放在右边进行称量,直到天平不平衡,偏轻的那一枚就是假银元.

这种算法最少要称1次,最多要称7次.是不是还有更好的办法,使得称量次数少一些?我们可以采用下面的方法:

图2

1.把银元分成3组,每组3枚.

2.先将两组分别放在天平的两边.如果天平不平衡,那么假银元就在轻的那一组;如果天平左右平衡,则假银元就在未称的第3组里.

3.取出含假银元的那一组,从中任取两枚银元放在天平的两边.如果左右不平衡,则轻的那一边就是假银元;如果天平两边平衡,则未称的那一枚就是假银元.

点评:经分析发现,后一种算法只需称量2次,这种做法要明显好于前一种做法.当然,这两种方法都具有一般性,同样适用于n 枚银元的情形.这是信息论中的一个模型,可以帮助我们找出某些特殊信息.

从上面的问题中可以看出,同一个问题可能存在着多种算法,其中一些可能要比另一些好.在实际问题和算法理论中,找出好的算法是一项重要的工作.

思路2

例1 (1)设计一个算法,判断7是否为质数; (2)设计一个算法,判断35是否为质数.

分析:(1)根据质数的定义,可以这样判断:依次用2~6除7,如果它们中有一个能整除7,则7不是质数,否则7是质数.

解:(1)①用2除7,得到余数1. 因为余数不为0,所以2不能整除7. ②用3除7,得到余数1. 因为余数不为0,所以3不能整除7. ③用4除7,得到余数3. 因为余数不为0,所以4不能整除7. ④用5除7,得到余数2. 因为余数不为0,所以5不能整除7.

⑤用6除7,得到余数1. 因为余数不为0,所以6不能整除7. 因此,7是质数.

(2)类似地,可写出“判断35是否为质数”的算法:①用2除35,得到余数1. 因为余数不为0,所以2不能整除35.

②用3除35,得到余数2. 因为余数不为0,所以3不能整除35. ③用4除35,得到余数3. 因为余数不为0,所以4不能整除35.

④用5除35,得到余数0. 因为余数为0,所以5能整除35. 因此,35不是质数.

点评:上述算法有很大的局限性,用上述算法判断35是否为质数还可以,如果判断1 997是否为质数就比较麻烦了,因此,我们需要寻找更实用的算法步骤.

变式训练

请写出判断n (n >2) 是否为质数的算法.

分析:对于任意的整数n (n >2) ,若用i 表示2~(n -1) 中的任意整数,则“判断n 是否为质数”的算法包含下面的重复操作:用i 除n ,得到余数r . 判断余数r 是否为0,若是,则不是质数;否则,将i 的值增加1,再执行同样的操作.

这个操作一直要进行到i 的值等于(n -1) 为止.

解:1. 给定大于2的整数n . 2.令i =2.

3.用i 除n ,得到余数r .

4.判断“r =0”是否成立.若是,则n 不是质数,结束算法;否则,将i 的值增加1,仍用i 表示.

5.判断“i >(n -1)”是否成立.若是,则n 是质数,结束算法;否则,返回第3步.

例2 写出用“二分法”求方程x 2-2=0 (x >0) 的近似解的算法.

分析:令f (x ) =x 2-2,则方程x 2-2=0 (x >0) 的解就是函数f (x ) 的零点. “二分法”的基本思想是:把函数f (x ) 的零点所在的区间[a ,b ]〔满足f (a )·f (b ) <0〕“一分为二”,得到[a ,m ]和[m ,b ].根据“f (a )·f (m ) <0”是否成立,取出零点所在的区间[a ,m ]或[m ,b ],仍记为[a ,b ].对所得的区间[a ,b ]重复上述步骤,直到包含零点的区间[a ,b ]“足够小”,则[a ,b ]内的数可以作为方程的近似解.

解:1. 令f (x ) =x 2-2,给定精度d .

2.确定区间[a ,b ],满足f (a )·f (b ) <0.

a +b

3.取区间中点m = 2

4.若f (a )·f (m ) <0,则含零点的区间为[a ,m ];否则,含零点的区间为[m ,b ].将新得到的含零点的区间仍记为[a ,b ].

5.判断[a ,b ]的长度是否小于d 或f (m ) 是否等于0. 若是,则m 是方程的近似解;否则,返回第三步.

当d

0.0052的近似解的一个算法.

点评:算法一般是机械的,有时需要进行大量的重复计算,只要按部就班地去做,总能算出结果,通常把算法过程称为“数学机械化”.数学机械化的最大优点是它可以借助计算机来完成,实际上处理任何问题都需要算法.如:中国象棋有中国象棋的棋谱、走法、胜负的评判准则;而国际象棋有国际象棋的棋谱、走法、胜负的评判准则;再比如申请出国有一系列的先后手续,购买物品也有相关的手续„„

变式训练

求方程f (x ) =x 3+x 2-1=0在区间[0,1]上的近似解,精度为0.01. 解:根据上述分析,可以通过下列步骤求得方程的近似解:

1.因为f (0)=-1,f (1)=1,f (0)·f (1)<0,则区间[0,1]为有解区间,精度1-0=1>0.01;

2.取[0,1]的区间中点0.5; 3.计算f (0.5)=-0.625;

4.由于f (0.5)·f (1)<0,可得新的有解区间[0.5,1],精度1-0.5=0.5>0.01;

5.取[0.5,1]的区间中点0.75; 6.计算f (0.75)=-0.015 625;

7.由于f (0.75)·f (1)<0,可得新的有解区间[0.75,1],精度1-0.75=0.25>0.01;

„„

当得到新的有解区间[0.75,0.757 82]时,由于|0.757 82-0.75|=0.007 82<0.01,

该区间精度已满足要求,所以取区间[0.75,0.757 82]的中点0.753 91,它是方程的一个近似解.

例3 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量狼就会吃掉羚羊.此人如何将动物转移过河?请设计算法.

分析:任何动物同船不用考虑动物的争斗但需考虑承载的数量,还应考虑到两岸的动物都得保证狼的数量要小于羚羊的数量,故在算法的构造过程中应尽可能保证船里面有狼,这样才能使得两岸的羚羊数量占到优势.

解:具体算法如下: 算法步骤:

1.人带两只狼过河,并自己返回. 2.人带一只狼过河,自己返回.

3.人带两只羚羊过河,并带两只狼返回. 4.人带一只羚羊过河,自己返回. 5.人带两只狼过河.

点评:算法是解决某一类问题的精确描述,有些问题使用形式化、程序化的刻画是最恰当的.这就要求我们在写算法时应精练、简洁、清晰地表达,要善于分析任何可能出现的情况,体现思维的严密性和完整性.本题型解决问题的算法中某些步骤重复进行多次才能解决,在现实生活中,很多较复杂的问题经常遇到这样的问题,设计算法的时候,如果能够合适地利用某些步骤的重复,不但可以使问题变得简单,而且可以提高工作效率.

变式训练

喝一杯茶需要这样几个步骤:洗刷水壶、烧水、洗刷茶具、沏茶.如何安排这几个步骤?请给出两种算法,并加以比较.

分析:本题主要为加深对算法概念的理解,可结合生活常识对问题进行分析,然后解决问题.

解:算法一: 1.洗刷水壶. 2.烧水.

3.洗刷茶具. 4.沏茶.

算法二:

1.洗刷水壶.

2.烧水,烧水的过程当中洗刷茶具. 3.沏茶.

上面的两种算法都符合题意,但是算法二运用了统筹方法的原理,因此这个算法要比算法一更科学.

点评:解决一个问题可有多个算法,可以选择其中最优的、最简单的、步骤尽量少的算法.

知能训练

设计算法判断一元二次方程ax 2+bx +c =0是否有实数根. 解:算法步骤如下:

1.输入一元二次方程的系数:a ,b ,c .

2

2.计算Δ=b -4ac 的值.

3.判断Δ≥0是否成立.若Δ≥0成立,输出“方程有实根”;否则输出“方程无实根”,结束算法.

点评:用算法解决问题的特点是:具有很好的程序性,是一种通法,并且具有确定性、逻辑性、有穷性.

拓展提升

中国网通规定:拨打市内电话时,如果不超过3分钟,则收取话费0.22元;如果通话时间超过3分钟,则超出部分按每分钟0.1元收取通话费,不足一分钟按一分钟计算.设通话时间为t (分钟) ,通话费用为y (元) ,如何设计一个程序,计算通话的费用?

解:算法分析:

数学模型实际上为y 关于t 的分段函数. 关系式如下:

⎧0.22,0

y =⎨0.22+0.1 t -3 ,t >3,t ∈Z ,

⎩0.22+0.1 [t -3]+1 ,t >3,t ∉Z .

其中[t -3]表示取不大于t -3的整数部分. 算法步骤如下: 1.输入通话时间t .

2.如果t ≤3,那么y = 0.22;否则判断t ∈Z 是否成立,若成立执行 y = 0.2+0.1× (t -3) ;否则执行y = 0.2+0.1×( [t -3]+1) . 3.输出通话费用y . 课堂小结

1.正确理解算法这一概念.

2.结合例题掌握算法的特点,能够写出常见问题的算法. 作业

课本本节练习1、练习2.

必修三数学 算法的基本思想 教案

三维目标

1.正确理解算法的概念,掌握算法的基本特点. 2.通过例题教学,使学生体会设计算法的基本思路.

3.通过有趣的实例使学生了解算法这一概念的同时,激发学生学习数学的兴趣.

重点难点

教学重点:算法的含义及应用.

教学难点:写出解决一类问题的算法. 课时安排 1课时

教学过程 导入新课

思路1. 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量狼就会吃掉羚羊.此人如何将动物完好地转移过河?请同学们写出解决问题的步骤,解决这一问题将要用到我们今天学习的内容——算法.

思路2. 大家都看过赵本山与宋丹丹演的小品吧,宋丹丹说了一个笑话,把大象装进冰箱总共分几步?

答案:分三步,第一步:把冰箱门打开;第二步:把大象装进去;第三步:把冰箱门关上.

上述步骤构成了把大象装进冰箱的算法,今天我们开始学习算法的概念. 思路3. 算法不仅是数学及其应用的重要组成部分,也是计算科学的重要基础.在现代社会里,计算机已成为人们日常生活和工作中不可缺少的工具.如听音乐、看电影、玩游戏、打字、画卡通画、处理数据都能通过计算机实现,计算机是怎样工作的呢?要想弄清楚这个问题,算法的学习是一个开始.

推进新课 新知探究 提出问题

1.解二元一次方程组有几种方法?

⎧x -2y =-1,①

2.结合实例⎨ 总结用加减消元法解二元一次方程组的步

2x +y =1,②⎩

骤.

⎧x -2y =-1,①

3.结合实例⎨

⎩2x +y =1,②

总结用代入消元法解二元一次方程组的步

骤.

4.请写出解一般二元一次方程组的步骤. 5.根据上述实例谈谈你对算法的理解. 6.请同学们总结算法的特征. 7.请思考我们学习算法的意义. 讨论结果:

1.代入消元法和加减消元法. 2.回顾二元一次方程组 ⎧⎨x -2y =-1,①⎩2x +y =1②

的求解过程,我们可以归纳出以下步骤: 第一步,①+②×2,得5x =1. ③

第二步,解③,得x =1

5

第三步,②-①×2,得 5y =3. ④

第四步,解④,得y =3

5⎧⎪x =15,

第五步,得到方程组的解为⎨

⎪⎩y =35.

3.用代入消元法解二元一次方程组

⎧⎨x -2y =-1,①⎩2x +y =1,②

我们可以归纳出以下步骤: 第一步,由①得 x =2y -1. ③

第二步,把③代入②,得2(2y -1) +y =1. ④ 第三步,解④得

y =35

. ⑤

第四步,把⑤代入③,得x =2×31

51=5⎧x =1,第五步,得到方程组的解为⎪⎨

5

⎪⎩y =35.

4.对于一般的二元一次方程组

⎧⎨a 1x +b 1y =c 1,

①⎩a 2x +b 2y =c 2,

其中a 1b 2-a 2b 1≠0,可以写出类似的求解步骤:

第一步,①×b 2-②×b 1,得 (a 1b 2-a 2b 1) x =b 2c 1-b 1c 2. ③

第二步,解③,得x =b 2c 1-b 1c 2

a 1b 2-a 2b 1

第三步,②×a 1-①×a 2,得 (a 1b 2-a 2b 1) y =a 1c 2-a 2c 1. ④

第四步,解④,得y =

a 1c 2-a 2c 1

a 1b 2-a 2b 1

21111222

12222111

b c -b c ⎧x =

⎪a b -a b ,

第五步,得到方程组的解为⎨

a c -a c y =⎪⎩a b -a b .

5.算法的定义:广义的算法是指完成某项工作的方法和步骤,那么我们可

以说洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法,等等.

在数学中,算法通常是指按照一定规则解决某一类问题的明确有限的步骤. 现在,算法通常可以编成计算机程序,让计算机执行并解决问题.

6.算法的特征:①确定性:算法的每一步都应当做到准确无误、“不重不漏”.“不重”是指不是可有可无的,甚至无用的步骤,“不漏” 是指缺少哪一步都无法完成任务.②逻辑性:算法从开始的“第一步”直到“最后一步”之间做到环环相扣,分工明确,“前一步”是“后一步”的前提, “后一步”是“前一步”的继续.③有穷性:算法要有明确的开始和结束,当到达终止步骤时所要解决的问题必须有明确的结果,也就是说必须在有限步内完成任务,不能无限制地持续进行.

7.在解决某些问题时,需要设计出一系列可操作或可计算的步骤来解决问题,这些步骤称为解决这些问题的算法.也就是说,算法实际上就是解决问题的一种程序性方法.算法一般是机械的,有时需进行大量重复的计算,它的优点是一种通法,只要按部就班地去做,总能得到结果.因此算法是计算科学的重要基础.

应用示例

思路1

1在给定素数表的条件下,设计算法,将936分解成素因数的乘积.(4 000以内的素数表见教科书附录1)

分析:1. 查表判断936是否为素数: (1)如果936是素数,则分解结束;

(2)如果936不是素数,则进行第2步.

2.确定936的最小素因数:2. 936=2×468. 3.查表判断468是否为素数: (1)如果468是素数,则分解结束;

(2)如果468不是素数,则重复上述步骤,确定468的最小素因数. 重复进行上述步骤,直到找出936的所有素因数. 解:算法步骤如下:

1.判断936是否为素数:否.

2.确定936的最小素因数:2. 936=2×468. 3.判断468是否为素数:否.

4.确定468的最小素因数:2. 936=2×2×234. 5.判断234是否为素数:否.

6.确定234的最小素因数:2 936=2×2×2×117. 7.判断117是否为素数:否.

8.确定117的最小素因数:3. 936=2×2×2×3×39.

9.判断39是否为素数:否.

10.确定39的最小素因数:3. 936=2×2×2×3×3×13. 11.判断13是否为素数:13是素数,所以分解结束. 分解结果是936=2×2×2×3×3×13. 点评:以上步骤是解决素因数分解问题的一个过程,只要依照这一系列步骤,都能解决这个问题.我们把这一系列步骤称为解决这个问题的一个算法.

变式训练

设计一个算法,求840与1 764的最大公因数.

分析:我们已经学习了对自然数进行素因数分解的方法,下面的算法就是在此基础上设计的.解答这个问题需要按以下思路进行.

首先,对两个数分别进行素因数分解: 840=23×3×5×7, 1 764=22×32×72. 其次,确定两数的公共素因数:2,3,7.

接着,确定公共素因数的指数:对于公共素因数2,22是1 764的因数,23

是840的因数,因此22是这两个数的公因数,这样就确定了公共素因数2的指数为2. 同样,可以确定出公因数3和7的指数均为1. 这样,就确定了840与1 764

211

的最大公因数为2×3×7=84.

解:算法步骤如下:

1.先将840进行素因数分解:840=23×3×5×7; 2.然后将1 764进行素因数分解:1 764=22×32×72; 3.确定它们的公共素因数:2,3,7;

4.确定公共素因数的指数:公共素因数2,3,7的指数分别为2,1,1; 5.最大公因数为22×31×71=84.

例2 一位商人有9枚银元,其中有1枚略轻的是假银元.你能用天平(不用砝码) 将假银元找出来吗?

分析:最容易想到的解决这个问题的一种方法是:把9枚银元按顺序排成一列,先称前2枚,若不平衡,则可找出假银元;若平衡,则2枚银元都是真的,再依次与剩下的银元比较,就能找出假银元.

图1

解:按照下列步骤,就能将假银元找出来:

1.任取2枚银元分别放在天平的两边.如果天平左右不平衡,则轻的一边就是假银元;如果天平平衡,则进行第2步.

2.取下右边的银元,放在一边,然后把剩余的7枚银元依次放在右边进行称量,直到天平不平衡,偏轻的那一枚就是假银元.

这种算法最少要称1次,最多要称7次.是不是还有更好的办法,使得称量次数少一些?我们可以采用下面的方法:

图2

1.把银元分成3组,每组3枚.

2.先将两组分别放在天平的两边.如果天平不平衡,那么假银元就在轻的那一组;如果天平左右平衡,则假银元就在未称的第3组里.

3.取出含假银元的那一组,从中任取两枚银元放在天平的两边.如果左右不平衡,则轻的那一边就是假银元;如果天平两边平衡,则未称的那一枚就是假银元.

点评:经分析发现,后一种算法只需称量2次,这种做法要明显好于前一种做法.当然,这两种方法都具有一般性,同样适用于n 枚银元的情形.这是信息论中的一个模型,可以帮助我们找出某些特殊信息.

从上面的问题中可以看出,同一个问题可能存在着多种算法,其中一些可能要比另一些好.在实际问题和算法理论中,找出好的算法是一项重要的工作.

思路2

例1 (1)设计一个算法,判断7是否为质数; (2)设计一个算法,判断35是否为质数.

分析:(1)根据质数的定义,可以这样判断:依次用2~6除7,如果它们中有一个能整除7,则7不是质数,否则7是质数.

解:(1)①用2除7,得到余数1. 因为余数不为0,所以2不能整除7. ②用3除7,得到余数1. 因为余数不为0,所以3不能整除7. ③用4除7,得到余数3. 因为余数不为0,所以4不能整除7. ④用5除7,得到余数2. 因为余数不为0,所以5不能整除7.

⑤用6除7,得到余数1. 因为余数不为0,所以6不能整除7. 因此,7是质数.

(2)类似地,可写出“判断35是否为质数”的算法:①用2除35,得到余数1. 因为余数不为0,所以2不能整除35.

②用3除35,得到余数2. 因为余数不为0,所以3不能整除35. ③用4除35,得到余数3. 因为余数不为0,所以4不能整除35.

④用5除35,得到余数0. 因为余数为0,所以5能整除35. 因此,35不是质数.

点评:上述算法有很大的局限性,用上述算法判断35是否为质数还可以,如果判断1 997是否为质数就比较麻烦了,因此,我们需要寻找更实用的算法步骤.

变式训练

请写出判断n (n >2) 是否为质数的算法.

分析:对于任意的整数n (n >2) ,若用i 表示2~(n -1) 中的任意整数,则“判断n 是否为质数”的算法包含下面的重复操作:用i 除n ,得到余数r . 判断余数r 是否为0,若是,则不是质数;否则,将i 的值增加1,再执行同样的操作.

这个操作一直要进行到i 的值等于(n -1) 为止.

解:1. 给定大于2的整数n . 2.令i =2.

3.用i 除n ,得到余数r .

4.判断“r =0”是否成立.若是,则n 不是质数,结束算法;否则,将i 的值增加1,仍用i 表示.

5.判断“i >(n -1)”是否成立.若是,则n 是质数,结束算法;否则,返回第3步.

例2 写出用“二分法”求方程x 2-2=0 (x >0) 的近似解的算法.

分析:令f (x ) =x 2-2,则方程x 2-2=0 (x >0) 的解就是函数f (x ) 的零点. “二分法”的基本思想是:把函数f (x ) 的零点所在的区间[a ,b ]〔满足f (a )·f (b ) <0〕“一分为二”,得到[a ,m ]和[m ,b ].根据“f (a )·f (m ) <0”是否成立,取出零点所在的区间[a ,m ]或[m ,b ],仍记为[a ,b ].对所得的区间[a ,b ]重复上述步骤,直到包含零点的区间[a ,b ]“足够小”,则[a ,b ]内的数可以作为方程的近似解.

解:1. 令f (x ) =x 2-2,给定精度d .

2.确定区间[a ,b ],满足f (a )·f (b ) <0.

a +b

3.取区间中点m = 2

4.若f (a )·f (m ) <0,则含零点的区间为[a ,m ];否则,含零点的区间为[m ,b ].将新得到的含零点的区间仍记为[a ,b ].

5.判断[a ,b ]的长度是否小于d 或f (m ) 是否等于0. 若是,则m 是方程的近似解;否则,返回第三步.

当d

0.0052的近似解的一个算法.

点评:算法一般是机械的,有时需要进行大量的重复计算,只要按部就班地去做,总能算出结果,通常把算法过程称为“数学机械化”.数学机械化的最大优点是它可以借助计算机来完成,实际上处理任何问题都需要算法.如:中国象棋有中国象棋的棋谱、走法、胜负的评判准则;而国际象棋有国际象棋的棋谱、走法、胜负的评判准则;再比如申请出国有一系列的先后手续,购买物品也有相关的手续„„

变式训练

求方程f (x ) =x 3+x 2-1=0在区间[0,1]上的近似解,精度为0.01. 解:根据上述分析,可以通过下列步骤求得方程的近似解:

1.因为f (0)=-1,f (1)=1,f (0)·f (1)<0,则区间[0,1]为有解区间,精度1-0=1>0.01;

2.取[0,1]的区间中点0.5; 3.计算f (0.5)=-0.625;

4.由于f (0.5)·f (1)<0,可得新的有解区间[0.5,1],精度1-0.5=0.5>0.01;

5.取[0.5,1]的区间中点0.75; 6.计算f (0.75)=-0.015 625;

7.由于f (0.75)·f (1)<0,可得新的有解区间[0.75,1],精度1-0.75=0.25>0.01;

„„

当得到新的有解区间[0.75,0.757 82]时,由于|0.757 82-0.75|=0.007 82<0.01,

该区间精度已满足要求,所以取区间[0.75,0.757 82]的中点0.753 91,它是方程的一个近似解.

例3 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量狼就会吃掉羚羊.此人如何将动物转移过河?请设计算法.

分析:任何动物同船不用考虑动物的争斗但需考虑承载的数量,还应考虑到两岸的动物都得保证狼的数量要小于羚羊的数量,故在算法的构造过程中应尽可能保证船里面有狼,这样才能使得两岸的羚羊数量占到优势.

解:具体算法如下: 算法步骤:

1.人带两只狼过河,并自己返回. 2.人带一只狼过河,自己返回.

3.人带两只羚羊过河,并带两只狼返回. 4.人带一只羚羊过河,自己返回. 5.人带两只狼过河.

点评:算法是解决某一类问题的精确描述,有些问题使用形式化、程序化的刻画是最恰当的.这就要求我们在写算法时应精练、简洁、清晰地表达,要善于分析任何可能出现的情况,体现思维的严密性和完整性.本题型解决问题的算法中某些步骤重复进行多次才能解决,在现实生活中,很多较复杂的问题经常遇到这样的问题,设计算法的时候,如果能够合适地利用某些步骤的重复,不但可以使问题变得简单,而且可以提高工作效率.

变式训练

喝一杯茶需要这样几个步骤:洗刷水壶、烧水、洗刷茶具、沏茶.如何安排这几个步骤?请给出两种算法,并加以比较.

分析:本题主要为加深对算法概念的理解,可结合生活常识对问题进行分析,然后解决问题.

解:算法一: 1.洗刷水壶. 2.烧水.

3.洗刷茶具. 4.沏茶.

算法二:

1.洗刷水壶.

2.烧水,烧水的过程当中洗刷茶具. 3.沏茶.

上面的两种算法都符合题意,但是算法二运用了统筹方法的原理,因此这个算法要比算法一更科学.

点评:解决一个问题可有多个算法,可以选择其中最优的、最简单的、步骤尽量少的算法.

知能训练

设计算法判断一元二次方程ax 2+bx +c =0是否有实数根. 解:算法步骤如下:

1.输入一元二次方程的系数:a ,b ,c .

2

2.计算Δ=b -4ac 的值.

3.判断Δ≥0是否成立.若Δ≥0成立,输出“方程有实根”;否则输出“方程无实根”,结束算法.

点评:用算法解决问题的特点是:具有很好的程序性,是一种通法,并且具有确定性、逻辑性、有穷性.

拓展提升

中国网通规定:拨打市内电话时,如果不超过3分钟,则收取话费0.22元;如果通话时间超过3分钟,则超出部分按每分钟0.1元收取通话费,不足一分钟按一分钟计算.设通话时间为t (分钟) ,通话费用为y (元) ,如何设计一个程序,计算通话的费用?

解:算法分析:

数学模型实际上为y 关于t 的分段函数. 关系式如下:

⎧0.22,0

y =⎨0.22+0.1 t -3 ,t >3,t ∈Z ,

⎩0.22+0.1 [t -3]+1 ,t >3,t ∉Z .

其中[t -3]表示取不大于t -3的整数部分. 算法步骤如下: 1.输入通话时间t .

2.如果t ≤3,那么y = 0.22;否则判断t ∈Z 是否成立,若成立执行 y = 0.2+0.1× (t -3) ;否则执行y = 0.2+0.1×( [t -3]+1) . 3.输出通话费用y . 课堂小结

1.正确理解算法这一概念.

2.结合例题掌握算法的特点,能够写出常见问题的算法. 作业

课本本节练习1、练习2.


相关文章

  • 高中数学二分法查找教案
  • 二分法查找教学设计 江苏省东台中学 朱世华 一.教学课题 第三章第三节<二分法查找>--算法与程序设计(新课标教科书:教育科学出版社) 二.教材及学者分析 <二分法查找>这部分知识在新课程数学必修1中已经涉及到,在前 ...查看


  • 四川省高中数学新课程必修教材的解读与建议
  • 高中数学新课程必修教材的解读与建议(四川高中课改讲座九之1) 主讲人:钟炜(四川省自贡市荣县教研室主任) 时间:2010年12月8日 本文<高中数学新课程必修教材的解读与建议>分为四个版块: 一是高中数学新课程的课程结构与课程设 ...查看


  • 第一学期计划高中数学必修一和必修三
  • 高一数学第一学期教学工作计划 (2013-2014学年度) 李 海 燕 太原市第五十九中学校 2013.09 高一数学第一学期教学工作计划 2013.9-2013.1 一.学情分析 高一131班全班50人,男生20人,女生30人,高一132 ...查看


  • 新课标高中数学必修模块不同顺序的教学之我
  • 新课标高中数学必修模块不同顺序的教学之我见 新课标高中数学已实施了7年,我对必修模块不同顺序的教学会带来的问题和各自的利弊进行了多次反思,据悉北京海淀区等不少地区对模块的顺序1.2.3.4.5做了一下调整,他们的顺序是按照必修的1.4.5. ...查看


  • 数学史的意义
  • 数学史的意义 新课程增加了学习数学史,我想他的目的,不仅是单纯地让学生了解数学的 发展史,更重要的是揭示数学的奥秘,激发学习数学的热情.看下面的故事. 蒙蒂克拉在他的<数学史>中讲述了古希腊大数学家阿基米德(Archimedes ...查看


  • 论高观点下的初等数学及其在新课标中的体现
  • 论"高观点"下的初等数学及其在新课标中的 体现 (许昌市第三初级中学 赵永) 1 引言 19世纪末20世纪初, 英国爆发了一场数学改革的运动, 人们称之为"克莱茵---贝利"运动. 在这次运动中, 克 ...查看


  • 高中数学新课改的几个新变化
  • 高中数学新课改的几个变化 一 高中数学课程标准在课程目标上的新变化 1. 在知识技能领域 学生应当获得必要的基础知识.基本技能,同时要了解它们的来龙去脉,体会其中的思想方法. 2. 在数学思维.解决问题的能力以及数学意识培养等方面 五项基本 ...查看


  • 人教版高中数学必修(1-5)目录
  • 必修一(高一) 第一章 集合与函数概念 一 总体设计 二 教科书分析 1.1 集合 1.2 函数及其表示 1.3 函数的基本性质 实习作业 三 自我检测题 四 拓展资源 第二章 基本初等函数(Ⅰ) 一 总体设计 二 教科书分析 2.1 指数 ...查看


  • 天津高考数学考试大纲
  • 2011高考数学考试大纲 必修部分和选修部分以及选修4系列的4-1,4-4共19个模块: (1) 集合与常用逻辑用语(必修1及2-1) (2) 函数概念,指数函数,对数函数,幂函数(必修1) (3) 三角函数,三角恒等变换,解三角形(必修4 ...查看


热门内容