2.1算法的基本思想
学案
课标解读
1.通过对解决具体问题过程与步骤的分析,体会算法的思想,了解算法的含义及其基本特征(重点).2.通过分析具体问题,抽象出算法的过程,培养抽象概括能力、语言表达能力和逻辑思维能力(难点).3.通过算法的学习,进一步让学生体验到数学与现实世界的关系、数学与计算机技术的关系、提高学生学习数学的兴趣.
知识1
算法的概念
【问题导思】
电视娱乐节目中,有一种有趣的“猜数”游戏:竞猜者如在规定的时间内猜出某种商品的价格(或重量等),就可获得该件商品.
现有一商品,价格在0~8
000元之间,采取怎样的策略才能在较短的时间内猜出正确的答案呢?
解决这个问题有多种途径,其中一种较好的方法是:
第一步 报“4
000”.
第二步 若主持人说:“高了”(说明答数在0~4
000之间),就报“2
000”;否则(答数在4
000~8
000之间)报“6
000”.
第三步 重复第二步的报数方法,直至得到正确结果.
1.竞猜者每一步的报价有一定的规则吗?
【提示】 有,报价为上一个有效范围的中间值.
2.猜出这种商品的步骤是有限的吗?
【提示】 是.
算法是解决某类问题的一系列步骤或程序,只要按照这些步骤执行,都能使问题得到解决.一般来说,“用算法解决问题”都是可以利用计算机帮助完成的.
知识2
算法的基本思想
在解决某些问题时,需要设计出一系列可操作或可计算的步骤,通过实施这些步骤来解决问题,通常把这些步骤称为解决这些问题的算法.这种解决问题的思想方法称为算法的基本思想.
知识3
算法的特征
1.确定性:算法的每一步必须是确切定义的,且无二义性,算法只有唯一的一条执行路径,对于相同的输入只能得出相同的输出.
2.有穷性:一个算法必须在执行有穷次运算后结束.在所规定的时间和空间内,若不能获得正确结果,其算法也是不能被采用的.
3.可行性:算法中的每一个步骤必须能用实现算法的工具——可执行指令精确表达,并在有限步骤内完成,否则这种算法也是不会被采纳的.
4.输入:算法一定要根据输入的初始数据或给定的初值才能正确执行它的每一步骤.
5.输出:算法一定能得到问题的解,有一个或多个结果输出,达到求解问题的目的,没有输出结果的算法是没有意义的.
此外,还要求算法应具有通用性:算法应适用于某一类问题中的所有个体,而不是只能用来解决一个具体问题.
类型1
算法概念的理解
有下列说法:
①从济宁到乌鲁木齐旅游,先坐火车,再坐飞机抵达;
②解一元一次方程的步骤是去分母、去括号、移项、合并同类项、系数化为1;
③方程x2-1=0有两个实根;
④求1+2+3+4的值,先计算1+2=3,再由3+3=6,6+4=10得最终结果是10.
其中,算法的个数为( )
A.1 B.2 C.3 D.4
【思路探究】 结合算法的概念和特征→逐一验证→得出结论
【自主解答】 ①中说明了从济宁到乌鲁木齐的行程安排,完成任务;②中给出了一元一次方程这一类问题的解决方法;④中给出了求1+2+3+4的一个过程,最终得出结果;对于③这个问题,并没有说明如何去算.故①②④是算法,③不是算法.
【答案】 C
1.本题中的说法涉及生活中的方法和数学中的解题过程,①②④均体现了算法的特点,即符合“一系列步骤”.
2.判断一个说法是否是算法,关键是看它有无步骤,且每步是否是明确、有效,能否在有限步之内完成.
对算法的理解不正确的是( )
A.一个算法包含的步骤是有限的
B.一个算法中每一步都是明确可操作的,而不是模棱两可的
C.算法在执行后,结果应是明确的
D.一个问题只可以有一个算法
【解析】 由算法的不唯一性可知D错.
【答案】 D
类型2
求正约数的算法设计
求18的所有正约数,请设计两种算法.
【思路探究】 分别对1,2,3,…,18逐一检验或者对18进行因数分解,写出相关步骤即可.
【自主解答】 法一 1.1是18的正约数,将1列出;
2.2是18的正约数,将2列出;
3.3是18的正约数,将3列出;
4.4不是18的正约数,将4删除;
…
18.18是18的正约数,将18列出.
法二 1.18=2×9;
2.18=2×32;
3.列出18的所有正约数,1,2,3,32,2×3,2×32.
1.解决一个问题可以有多个算法,可以选择其中最优的,最简单的步骤的算法.
2.本例两种算法都符合题意,但法二运用了因数分解原理,这样步骤就比法一少了许多,因此更为科学.本题体现了算法的特征:(1)一个算法往往具有代表性,能够解决一类问题;(2)算法不是唯一的;(3)两个算法里面各自体现了不同的思想内涵.
设计一个算法,求出840×1
764的最大公约数.
【解】 算法步骤如下:
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.
类型3
解方程(组)问题的算法设计
写出解方程x2-4x-5=0的一个算法.
【思路探究】 本题是求一元二次方程的解的问题,方法很多,只要把平时的固有解法有条理、清晰地写出来,即为解该方程的算法.下面分别用因式分解法、配方法和求根公式法写出这个问题的三个算法.
【自主解答】 算法1:
1.将方程左边因式分解,得(x-5)(x+1)=0;①
2.由①,得x-5=0或x+1=0;②
3.由②,可得x=5或x=-1.
算法2:
1.移项,得x2-4x=5;①
2.①式两边同时加4并配方,得(x-2)2=9;②
3.②式两边开平方,得x-2=±3;③
4.解③式,得x=5或x=-1.
算法3:
1.计算方程的根的判别式,并判断其符号:Δ=(-4)2-4×1×(-5)=35>0;
2.将a=1,b=-4,c=-5代入求根公式x=,得x1=5,x2=-1.
1.本题体现了算法的不唯一性.
2.比较以上三个算法,可以看出算法3最简单,步骤最少,并且具有通用性.因此我们在设计算法时,首先考虑是否有公式可以利用.利用公式解决问题是最理想的方法,有时要综合各方面的因素选择一种比较好的算法.
写出解方程组的一个算法.
【解】 算法1:
1.将方程②的两边同时乘以3,得3x+3y=-3;③
2.将方程①和③的两边分别相加,方程左、右两边再同时除以5,得x=1;④
3.将x=1代入②,方程两边再同时加-1,得y=-2;
4.输出结果
算法2:
1.将方程②中的y移项,用y的式子表示x得x=-1-y;③
2.将③代入①,并化简,得y=-2;④
3.将④代入③,得x=1;
4.输出结果
类型4
分步求和(积)问题的算法设计
写出求1+2+3+4+5+6的一个算法.
【思路探究】 可以按逐一相加的程序进行,也可以利用公式1+2+…+n=进行,也可以根据加法运算律简化运算过程.
【自主解答】 算法1:
1.计算1+2得到3;
2.将第1步中的运算结果3与3相加得到6;
3.将第2步中的运算结果6与4相加得到10;
4.将第3步中的运算结果10与5相加得到15;
5.将第4步中的运算结果15与6相加得到21;
算法2:
1.取n=6;
2.计算;
3.输出运算结果.
1.对于数值型计算问题的算法,可以借助数学公式采用数学计算的方法,将过程分解成清晰的步骤,使之条理化即可.
2.应注意多个数进行四则运算时应分步计算,依次进行,直到算出结果.
写出求2×4×6×8×10的一个算法.
【解】 算法步骤如下:
1.计算2×4,得到8;
2.将第一步的运算结果8与6相乘,得到48;
3.将第二步的运算结果48与8相乘,得到384;
4.将第三步的运算结果384与10相乘,得到3
840.
无分类讨论或不全面致误
设计一个解方程ax2+bx+c=0的算法.
【错解】 小华采用的算法描述如下:
1.计算Δ=b2-4ac;
2.若Δ<0,则输出“方程无实根”;
3.若Δ>0,则输出方程的根.
【错因分析】 上述算法中有两处错误:
第一步是没有考虑a是否为0,显然a=0时,方程无判别式,上述算法无效;
第二步错误是漏掉了Δ=0的情况.
【防范措施】 解方程时首先要考虑方程的类型,x的最高次幂的系数是否为0,若是二次方程讨论Δ时一定要全面.
【正解】 1.输入a,b,c的值.
2.若a=0,b≠0,则输出方程的根x=-;
若a=b=0,c≠0,则输出“方程无实根”;
若a=b=c=0,则输出“方程有无数个实根”.
3.若a≠0,计算Δ=b2-4ac:
若Δ<0,则输出“方程无实根”;
若Δ≥0,则输出方程的根x1=,x2=.
1.算法的特点:有限性、确定性、逻辑性、不唯一性、普遍性.
2.算法设计的要求
(1)写出的算法必须能够解决一类问题(如判断一个整数是否为质数,求任意一个方程的近似解等),并且能够重复使用.
(2)要使算法尽量简单,步骤尽量少.
(3)要保证算法正确,且算法步骤能够一步一步执行,每一步执行的操作必须确切,不能含混不清,而且在有限步后能得到结果.
1.下列关于算法的说法中,正确的是( )
A.算法就是某个问题的解题过程
B.算法执行后可以不产生确定的结果
C.解决某类问题的算法不是唯一的
D.算法可以无限地操作下去
【解析】 算法是指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确的、有效的,而且能够在有限步内完成.算法与一般意义上具体问题的解法既有联系,又有区别,它们之间是一般与特殊,抽象与具体的关系.解决某一问题的算法不是唯一的,故选C.
【答案】 C
2.下列语句表达中是算法的有( )
①从济南到巴黎,可以先乘火车到北京,再坐飞机抵达;②利用公式S=ah,计算底为1、高为2的三角形的面积;③x>2x+4;④求M(1,2)与N(-3,-5)两点连线所在直线的方程,可先求MN的斜率,再利用点斜式求得方程.
A.1个 B.2个
C.3个
D.4个
【解析】 ①②④表达的是算法,③表达的不是算法.
【答案】 C
3.比较两个实数a与b的大小的一个算法为:
(1)若a-b>0,则a>b;
(2)________________;
(3)若a-b<0,则a请将上面的算法补充完整.
【答案】 若a-b=0,则a=b
4.求两底半径分别为2和4,高为4的圆台的表面积及体积,写出该问题的算法.
【解】 算法步骤如下:
1.取r1=2,r2=4,h=4;
2.计算l=;
3.计算s=πr+πr+π(r1+r2)·l与V=π(r+r+r1r2)h;
4.输出运算结果.
一、选择题
1.下列对算法的理解不正确的是( )
A.算法有一个共同特点就是对一类问题都有效(而不是个别问题)
B.算法要求是一步步执行,每一步都能得到唯一的结果
C.算法一般是机械的,有时要进行大量重复的计算,它们的优点是一种通法
D.任何问题都可以用算法来解决
【解析】 并不是所有的问题都可以用算法来解决,只有步骤明确,且是有限运算等才可以用算法解决.
【答案】 D
2.计算下列各式中的s值,能设计算法求解的是( )
(1)s=1+2+3+…+100;
(2)s=1+2+3+…+100+…;
(3)s=1+2+3+…+n(n≥1且n∈N).
A.(1)(2) B.(1)(3)
C.(2)(3)
D.(1)(2)(3)
【解析】 (1)(3)能设计算法求解.但(2)不能设计算法求解.原因是s是无限多个正整数相加,步骤无限步,不符合算法的特征.
【答案】 B
3.想泡茶喝,当时的情况是:火已经生起了,凉水和茶叶也有了,开水没有,开水壶要洗,茶壶和茶杯要洗,下面给出了四种不同形式的算法过程,你认为最好的一种算法是( )
A.洗开水壶,灌水,烧水,在等待水开时,洗茶壶、茶杯、拿茶叶,等水开了后泡茶喝
B.洗开水壶,洗茶壶和茶杯,拿茶叶,一切就绪后,灌水,烧水,坐等水开后泡茶喝
C.洗开水壶,灌水,烧水,坐等水开,等水开后,再拿茶叶,洗茶壶、茶杯,泡茶喝
D.洗开水壶,灌水,烧水,再拿茶叶,坐等水开,洗茶壶、茶杯,泡茶喝
【解析】 解决一个问题可以有多种算法,可以选择其中最优、最简单、步骤尽可能少的算法.选项中的四种算法中都符合题意.但算法A运用了统筹法原理,因此这个算法要比其余的三种算法科学.
【答案】 A
4.给下面一个算法:
(1)给出三个数x、y、z;
(2)计算M=x+y+z;
(3)计算N=M;
(4)得出每次计算结果.
则上述算法是( )
A.求和
B.求余数
C.求平均数
D.先求和再求平均数
【解析】 由算法过程可知,M为三数之和,N为这三数的平均数,故选D.
【答案】 D
5.下面是某个问题的算法过程:
1.比较a与b的大小,若a<b,则交换a,b的值;
2.比较a与c的大小,若a<c,则交换a,c的值;
3.比较b与c的大小,若b<c,则交换b,c的值;
4.输出a,b,c.
该算法结束后解决的问题是( )
A.输入a,b,c三个数,按从小到大的顺序输出
B.输入a,b,c三个数,按从大到小的顺序输出
C.输入a,b,c三个数,按输入顺序输出
D.输入a,b,c三个数,无规律地输出
【解析】 通过第1步和第2步可以发现,a为最大值,通过第3步可以看出,c为最小值,可知输出的三个数是按从大到小的顺序输出.
【答案】 B
二、填空题
6.在下面求15和18的最小公倍数的算法中,其中不恰当的一步是________.
(1)先将15分解素因数:15=3×5;
(2)然后将18分解素因数:18=32×2;
(3)确定它们的所有素因数:2,3,5;
(4)计算出它们的最小公倍数:2×3×5=30.
【解析】 正确的应该是:先确定素因数的指数:2,3,5的指数分别为1,2,1;然后计算出它们的最小公倍数:2×32×5=90.
【答案】 (4)
7.下列是用“二分法”求方程x2-5=0的近似解的算法,请补充完整.
1.令f(x)=x2-5,给定精度d.
2.确定区间(a,b),满足f(a)f(b)<0.
3.取区间中点m=________.
4.若f(a)f(m)<0,则含零点的区间为(a,m);否则,含零点的区间为(m,b).将新得到的含零点的区间仍记为(a,b).
5.判断(a,b)的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似解;否则,返回第三步.
【解析】 区间(a,b)的中点,就是a与b的平均数.
【答案】
8.给出下列算法:
1.输入x的值.
2.当x>4时,计算y=x+2;否则执行下一步.
3.计算y=.
4.输出y.
当输入x=0时,输出y=________.
【答案】 2
三、解答题
9.解关于x的方程ax+2=0(a∈R),写出算法.
【解】 算法如下:
(1)移项,得ax=-2.
(2)当a≠0时,x=-,输出x,结束算法;当a=0时,输出方程无实根,结束算法.
10.写出求a、b、c三个数中最小的数的算法.
【解】 (1)比较a、b的大小,若a(2)比较m与c的大小,若m(3)输出结果.
11.某节目中有一种“猜数”游戏:竞猜者在规定的时间内猜出某种商品的价格就可获得该件商品.现有一商品,价格在0~8
000元之间,采取怎样的策略才能在较短的时间内说出正确的答案呢?
【解】 算法步骤如下:
第一步:报“4
000元”.
第二步:若主持人说“高了”(说明答数在1~4
000之间),就报“2
000元”,否则(答数在4
000~8
000之间)报“6
000元”.
第三步:重复第二步的报数方法,取中间数,直至得到正确结果.