“算法”是培养逻辑推理能力的非常好的载体,它是计算机理论和技术的核心,也是开展“实验数学”的重要工具。它不需要很多的准备知识,就可以产生足够丰富的问题;这些问题会很有趣,也会具有一定的挑战性。《普通高中数学课程标准》第一次把算法列为必修内容,指出“算法思想将贯穿高中数学课程的相关部分”;要求“体会算法的基本思想,以及算法的重要性和有效性,发展有条理的思考与表达能力,提高逻辑思维能力”。
“算法”思想就是指按照一定的步骤,一步一步去解决某个问题的程序化思想,可以展示数学解题的探究过程。例如在问题解决的教学中,引导学生分析问题,发现已知与未知之间的联系,可以采用如下程序进行启发:
为什么想到……→怎么想到?→从这里想到了什么?→还想到了什么?→打算如何做?→先做什么?→再做什么?……
课程标准明确提出,算法不仅仅是必修③的内容,更是贯穿于高中数学的各个模块,因而探讨算法思想在各个模块中的渗透和应用显得必要和迫切。下面,我就算法思想的理解,以及它的应用进行一定的分析。
算法的基本思想是程序化思想。要理解算法的基本思想,一定要把握算法的主要特征:
①有穷性:一个算法的步骤序列是有限的,它应在有限步操作之后停止,而不能是无限的;
②确定性:算法中的每一步应该是确定的并且能有效地执行且得到确定的结果;
③可行性:算法中的每一步都能精确的执行,得到确定的结果。
④可输入和输出性:给与一定赋值后,算法必须有确定结果的输出。
⑤通用性:算法针对的不仅仅某个具体问题,而是一类问题的通用的解决方法。这一点是区别算法与解法的本质区别。
实行新课程的几个省份在安排必修模块的教学时,顺序不尽相同,浙江为①→④→⑤→②→③(人教版A)。算法属于必修③这个模块,从而给其思想的渗透带来了一定的问题。因此,我们在教学其他模块的过程中,渗透更多的是一种算法思想,而不必苛求对算法的形式等一步到位。
下面,我结合模块内容和部分精选例题,来具体地分析算法思想的渗透。
一、算法思想在必修①中的渗透
必修①集合的有关知识、函数的大部分性质,以及方程不等式中都渗透了算法的思想。
如函数的单调性。利用定义证明函数的单调性的步骤极具程序化,可分为设点、做差、比较、结论。所有此类问题都可以利用这个步骤去进行。这说明算法的思想及方法可以在此渗透,而这也恰恰是新教材引入算法的目的所在。
又如函数的奇偶性,用算法框图描述判断的步骤:算法分析第1步:判断,f(x)定义域是否关于原点对称,若否,则f(x)非奇非偶;若是,则执行第2步.第2步:计算,f(-x)判断,f(-x)与的关系,若f(-x)=f(x)(1),则f(x)是偶函数;若f(-x)=-f(x)(2),则f(x)是奇函数;若(1)、(2)都成立,则f(x)是既奇又偶函数:若(1)、(2)都不成立,则f(x)是非奇非偶函数.如图1所示.
二、算法思想在必修⑤中的渗透
必修⑤中,数列这个部分与算法的关系尤其紧密,不仅是基本概念的判断,解题技巧的延伸,而且是数列中的创新题型,都可以结合、渗透算法思想。
例1:(2008年山东卷·理)执行图2的程序框图,若P=0.8,则输出z=?摇?摇?摇?摇.
解析:该程序框图解决的问题是求出满足S(n)≥p的最小正整数n,再加1,其中S(n)是一个等比数列的前n项和.
本题将算法与数列问题有机结合起来,立意新、角度好.以循环结构流程图的形式给出了等比数列求和的算法,把握循环的出口(控制条件)是解决问题的关键,考查了学生对循环结构、终止条件的理解和学生的估算能力.
例2:对于斐波那契数列:f=1,f=1,f=f+f(n≥3),计算并输出f和前20项和S.
解:(ⅰ)把1赋予f和f,把2赋予S,把3赋予n.
(ⅱ)计算f=f+f,计算S=S+f.
(ⅲ)把n+1赋予n.
(ⅳ)如果n≤20,那么再执行第(ⅱ)步;如果n>20,那么输出f和S并结束.
我们把上述计算过程作为求f和S的一种算法。当然我们还可以设计出与此数列的实际问题(兔子繁殖问题)相对应的算法和流程图。
三、算法思想在必修②中的渗透
必修②中教授的是几何模块,同样几何中也渗透了算法的思想。我们来看一个例子。
例:求点P到直线l的距离.
在直线l:Ax+By+C=0上任取一点Q(x,y),则得到向量=(x-x,y-y),又直线的法向量为=(A,B),利用向量数量积的几何意义,可知点P到直线的距离就是在方向投影的绝对值,即
算法步骤:
①在直线上任取一点(可以取直线与坐标轴的交点)Q,其坐标记为,点P的坐标记为(x,y),
②求出向量和直线的法向量的坐标,
③计算两向量的数量积和法向量的模,
④由向量数量积的几何意义得到点P到直线的距离d=.
在必修模块中,解析几何体现出一定得算法思想.事实上,在选修模块中,立体几何方面的求空间角、距离等会有更加广泛的展示.
如“求点P到平面的距离为d”,可以写出下面的算法步骤:
第一步:在平面上确定一个已知点A,作出向量;第二步:求出平面α的法向量,进而得出平面α的单位法向量n=;第三步:得出d=|·n|.
四、算法思想在必修③中的渗透
通过本模块的学习,对于算法思想不仅要求了解操作过程,而且要能够把它用流程图表示出来,还要能结合一定的程序语言能力,会读懂程序,能写出程序。其中的辗转相除法、更相减损术、割圆术、秦九韶算法不但能让学生进一步理解算法的本质,渗透算法思想,更能欣赏中国古代的伟大成就,激发学生学习算法的兴趣。
必修③还包括统计和概率的问题,同样渗透了算法的思想。
例:口袋中装有8个小球,其中有3个白球,5个黄球,从中一次取出2个球,那么取出的2个球都是白球的概率是多大?
分析:可以用0到7这8个数代表8个球,其中编号为0—2的球代表白球,但要注意,随机地选择了一个x以后,要保证再次随机选择的y不能和x重复,故可采用如下算法.
Sub不放回()
S=0
n=InputBox(″实验次数″)
For i=l To n
x=Int(8*Rnd)
z=Int(7*Rnd)+l
y=(x+z) Mod 8
If x<3 And y<3 Then s=s+l
Next i
MsgBox(″同时摸到两个白球的概率约为″)&s/n
End Sub
(注:Int(8*Rnd)表示在0—7中随机地选一个整数)
实验重复了次后得到的概率是0.1071192,而由公式算出的概率是0.10714.
本题可以看作是算法思想的一种渗透,当然更可以把算法看成一种工具,进行的一种数学实验。在本模块中,这样的例子非常普遍。
五、算法思想在其他模块中的渗透
必修4的主题是三角函数,存在着大量的公式,事实上,每一个公式都可以看做一种算法,具体流程:
除了必修模块,选修模块中也有多处渗透算法思想,如导数中渗透算法的题型。同时,结合数学史内容,甚至可以认为,东方文明是算法的源泉,如《九章算术》中“盈不足问题”的解法、《孙子算经》中“鸡兔同笼”问题的解法、秦九韶解决一次同余式组的“大衍求一术”,《详解九章算法·纂类》所载的贾宪增乘开方法,等等。
作为数学教学工作者,我们不应该为教而教,而应该把这种科学的算法思维渗透到各个模块中乃至内化为学生学习和生活的思考方式之一。这样不但可以有效地培养学生思维的条理性和逻辑性,发展有条理地表达和交流思想的能力,提高逻辑思维能力,而且有利于培养学生的理性精神、问题解决能力和实践能力。
注:“本文中所涉及到的图表、公式、注解等请以PDF格式阅读”