算法-----一苇渡江

来源:互联网 发布:知乎 如何取英文名 编辑:程序博客网 时间:2024/06/05 16:18

算法(algorithm)一词源于算术(algorism),即算术方法,是指一个由已知推求未知的运算过程。后来,人们把它推广到一般,把进行某一工作的方法和步骤称为算法。

广义地说,算法就是做某一件事的步骤或程序。菜谱是做菜肴的算法,洗衣机的使用说明书是操作洗衣机的算法,歌谱是一首歌曲的算法。在数学中,主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结果的解决问题的程序。比如解方程的算法、函数求值的算法、作图的算法,等等。

 

 

1、 例题分析:

1  任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数[1]做出判定。

算法分析:根据质数的定义,很容易设计出下面的步骤:

第一步:判断n是否等于2,若n=2,则n是质数;若n>2,则执行第二步。

第二步:依次从2至(n-1)检验是不是n的因数,即整除n的数,若有这样的数,则n不是质数;若没有这样的数,则n是质数。

这是判断一个大于1的整数n是否为质数的最基本算法。

2  用二分法设计一个求议程x22=0的近似根的算法。

算法分析:回顾二分法解方程的过程,并假设所求近似根与准确解的差的绝对值不超过0.005,则不难设计出以下步骤:

第一步:令f(x)=x22。因为f(1)<0f(2)>0,所以设x1=1x2=2

第二步:令m=(x1+x2)/2,判断f(m)是否为0,若则,则m为所长;若否,则继续判断f(x1)·f(m)大于0还是小于0

第三步:若f(x1)·f(m)>0,则令x1=m;否则,令x2=m

第四步:判断|x1x2|<0.005是否成立?若是,则x1x2之间的任意取值均为满足条件的近似根;若否,则返回第二步。

小结:算法具有以下特性:(1)有穷性;(2)确定性;(3)顺序性;(4)不惟一性;(5)普遍性

典例剖析:

1、基本概念题

                                 x-2y=-1,

3    写出解二元一次方程组                 的算法

                                 2x+y=1

解:第一步,②-①×25y=3;③

    第二步,解③得y=3/5

    第三步,将y=3/5代入①,得x=1/5

学生做一做:对于一般的二元一次方程组来说,上述步骤应该怎样进一步完善?

老师评一评:本题的算法是由加减消元法求解的,这个算法也适合一般的二元一次方程组的解法。下面写出求方程组 的解的算法:

第一步:②×A1-①×A2(A1B2-A2B1)y+A1C2-A2C1=0;③

第二步:解③,得

第三步:将 代入①,得

此时我们得到了二元一次方程组的求解公式,利用此公司可得到倒2的另一个算法:

第一步:取A1=1B1=-2C1=1A2=2B2=1C2=-1

第二步:计算

第三步:输出运算结果。

可见利用上述算法,更加有利于上机执行与操作。

 

基础知识应用题

4 写出一个求有限整数列中的最大值的算法。

解:算法如下。

   S1  先假定序列中的第一个整数为“最大值”。

   S2  将序列中的下一个整数值与“最大值”比较,如果它大于此“最大值”,这时你就假定“最大值”是这个整数。

   S3  如果序列中还有其他整数,重复S2

   S4  在序列中一直到没有可比的数为止,这时假定的“最大值”就是这个序列中的最大值。

学生做一做   写出对任意3个整数a,b,c求出最大值的算法。

老师评一评   在例2中我们是用自然语言来描述算法的,下面我们用数学语言来描述本题的算法。

S1  max=a

S2  如果b>max, max=b.

S3  如果C>max, max=c.

S4  max就是a,b,c中的最大值。

综合应用题

5 写出求1+2+3+4+5+6的一个算法。

分析:可以按逐一相加的程序进行,也可以利用公式1+2++n= 进行,也可以根据加法运算律简化运算过程。

解:算法1

S1:计算1+2得到3

S2:将第一步中的运算结果33相加得到6

S3:将第二步中的运算结果64相加得到10

S4:将第三步中的运算结果105相加得到15

S5:将第四步中的运算结果156相加得到21

算法2

S1:取n=6

S2:计算

S3:输出运算结果。

算法3

S1:将原式变形为(1+6)+(2+5)+(3+4)=3×7

S2:计算3×7

S3:输出运算结果。

小结:算法1是最原始的方法,最为繁琐,步骤较多,当加数较大时,比如1+2+3++10000,再用这种方法是行不通的;算法2与算法3都是比较简单的算法,但比较而言,算法2最为简单,且易于在计算机上执行操作。

学生做一做  1×3×5×7×9×11的值,写出其算法。

老师评一评  算法1;第一步,先求1×3,得到结果3

第二步,将第一步所得结果3再乘以5,得到结果15

第三步,再将15乘以7,得到结果105

第四步,再将105乘以9,得到945

第五步,再将945乘以11,得到10395,即是最后结果。

算法2:用P表示被乘数,i表示乘数。

S1  使P=1

S2  使i=3

S3  使P=P×i

S4  使i=i+2

S5  i11,则返回到S3继续执行;否则算法结束。

小结  由于计算机动是高速计算的自动机器,实现循环的语句。因此,上述算法2不仅是正确的,而且是在计算机上能够实现的较好的算法。在上面的算法中,S3S4S5构成一个完整的循环,这里需要说明的是,每经过一次循环之后,变量Pi的值都发生了变化,并且生循环一次之后都要在步骤S5i的值进行检验,一旦发现i的值大于11时,立即停止循环,同时输出最后一个P的值,对于循环结构的详细情况,我们将在以后的学习中介绍。

4、课堂小结

本节课主要讲了算法的概念,算法就是解决问题的步骤,平时列论我们做什么事都离不开算法,算法的描述可以用自然语言,也可以用数学语言。

例如,某同学要在下午到体育馆参加比赛,比赛下午2时开始,请写出该同学从家里发到比赛地的算法。

若用自然语言来描述可写为

11:00从家出发到公共汽车站

21:10上公共汽车

31:40到达体育馆

41:45做准备活动。

52:00比赛开始。

若用数学语言来描述可写为:

S1    1:00从家出发到公共汽车站

S2    1:10上公共汽车

S3    1:40到达体育馆

S4    1:45做准备活动

S5    2:00比赛开始

大家从中要以看出,实际上两种写法无本质区别,但我们在书写时应尽量用教学语言来描述,它的优越性在以后的学习中我们会体会到。

5、自我评价

1、写出解一元二次方程ax2+bx+c=0(a0)的一个算法。

2、写出求11000的正数中的3倍数的一个算法(打印结果)

6、评价标准

1、解:算法如下

S1    计算△=b2-4ac

S2    如果△〈0,则方程无解;否则x1=

S3    输出计算结果x1x2或无解信息。

2、解:算法如下:

S1    使i=1

S2    i3除,得余数r

S3    如果r=0,则打印i,否则不打印

S4    使i=i+1

S5    i1000,则返回到S2继续执行,否则算法结束。

7、作业:1写出解不等式x2-2x-3<0的一个算法。

解:第一步:x2-2x-3=0的两根是x1=3x2=-1

第二步:由x2-2x-3<0可知不等式的解集为{x | -1<x<3}

评注:该题的解法具有一般性,下面给出形如ax2+bx+c>0的不等式的解的步骤(为方便,我们设a>0)如下:

第一步:计算△=

第二步:若△>0,示出方程两根 (设x1>x2),则不等式解集为{x | x>x1x<x2}

第三步:若△= 0,则不等式解集为{x | xRx }

第四步:若△<0,则不等式的解集为R

2、求过P(a1,b1)Q(a2,b2)两点的直线斜率有如下的算法:

第一步:取x1= a1y1= b1x2= a2y1= b2

第二步:若x1= x2

第三步:输出斜率不存在;

第四步:若x1x2

第五步:计算

第六步:输出结果。

3、写出求过两点M(-2,-1)N(2,3)的直线与坐标轴围成面积的一个算法。

解:算法:第一步:取x1=-2y1=-1x2=2y2=3

第二步:计算

第三步:在第二步结果中令x=0得到y的值m,得直线与y轴交点(0,m)

第四步:在第二步结果中令y=0得到x的值n,得直线与x轴交点(n,0)

第五步:计算S=

第六步:输出运算结果



 

原创粉丝点击