人教A版高中数学必修三 13 算法案例 教案Word文件下载.docx
《人教A版高中数学必修三 13 算法案例 教案Word文件下载.docx》由会员分享,可在线阅读,更多相关《人教A版高中数学必修三 13 算法案例 教案Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
这就是我们这一堂课所要探讨的内容。
(二)研探新知
1.辗转相除法
例1求两个正数8251和6105的最大公约数。
(分析:
8251与6105两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数)
解:
8251=6105×
1+2146
显然8251的最大公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数,所以8251与6105的最大公约数也是6105与2146的最大公约数。
6105=2146×
2+1813
2146=1813×
1+333
1813=333×
5+148
333=148×
2+37
148=37×
4+0
则37为8251与6105的最大公约数。
以上我们求最大公约数的方法就是辗转相除法。
也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。
利用辗转相除法求最大公约数的步骤如下:
第一步:
用较大的数m除以较小的数n得到一个商q0和一个余数r0;
第二步:
若r0=0,则n为m,n的最大公约数;
若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;
第三步:
若r1=0,则r1为m,n的最大公约数;
若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2;
……
依次计算直至rn=0,此时所得到的rn-1即为所求的最大公约数。
练习:
利用辗转相除法求两数4081与20723的最大公约数(答案:
53)
2.更相减损术
我国早期也有解决求最大公约数问题的算法,就是更相减损术。
更相减损术求最大公约数的步骤如下:
可半者半之,不可半者,副置分母·
子之数,以少减多,更相减损,求其等也,以等数约之。
翻译出来为:
任意给出两个正数;
判断它们是否都是偶数。
若是,用2约简;
若不是,执行第二步。
以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。
继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
例2用更相减损术求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。
用更相减损术求两个正数84与72的最大公约数。
(答案:
12)
3.比较辗转相除法与更相减损术的区别
(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到
4.辗转相除法与更相减损术计算的程序框图及程序
利用辗转相除法与更相减损术的计算算法,我们可以设计出程序框图以及BSAIC程序来在计算机上实现辗转相除法与更相减损术求最大公约数,下面由同学们设计相应框图并相互之间检查框图与程序的正确性,并在计算机上验证自己的结果。
(1)辗转相除法的程序框图及程序
程序框图:
程序:
INPUT“m=”;
m
INPUT“n=”;
n
IFm<
nTHENx=m
m=n
n=x
ENDIF
r=mMODn
WHILEr<
>
0
m=n
n=r
WEND
PRINTm
END
5.课堂练习
一.用辗转相除法求下列各组数的最大公约数,并在自己编写的BASIC程序中验证。
(1)225;
135
(2)98;
196(3)72;
168(4)153;
119
二.思考:
用求质因数的方法可否求上述4组数的最大公约数?
可否利用求质因数的算法设计出程序框图及程序?
若能,在电脑上测试自己的程序;
若不能说明无法实现的理由。
三。
思考:
利用辗转相除法是否可以求两数的最大公倍数?
试设计程序框图并转换成程序在BASIC中实现。
6.小结:
辗转相除法与更相减损术求最大公约数的计算方法及完整算法程序的编写。
(5)评价设计
作业:
P38A
(1)B
(2)
补充:
设计更相减损术求最大公约数的程序框图
第三、四课时秦九韶算法与排序
1.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质。
2.掌握数据排序的原理能使用直接排序法与冒泡排序法给一组数据排序,进而能设计冒泡排序法的程序框图及程序,理解数学算法与计算机算法的区别,理解计算机对数学的辅助作用。
模仿秦九韶计算方法,体会古人计算构思的巧妙。
能根据排序法中的直接插入排序法与冒泡排序法的步骤,了解数学计算转换为计算机计算的途径,从而探究计算机算法与数学算法的区别,体会计算机对数学学习的辅助作用。
通过对秦九韶算法的学习,了解中国古代数学家对数学的贡献,充分认识到我国文化历史的悠久。
通过对排序法的学习,领会数学计算与计算机计算的区别,充分认识信息技术对数学的促进。
1.秦九韶算法的特点
2.两种排序法的排序步骤及计算机程序设计
1.秦九韶算法的先进性理解
2.排序法的计算机程序设计
1.探究秦九韶算法对比一般计算方法中计算次数的改变,体会科学的计算。
2.模仿排序法中数字排序的步骤,理解计算机计算的一般步骤,领会数学计算在计算机上实施的要求。
我们已经学过了多项式的计算,下面我们计算一下多项式
当
时的值,并统计所做的计算的种类及计算次数。
根据我们的计算统计可以得出我们共需要10次乘法运算,5次加法运算。
我们把多项式变形为:
再统计一下计算当
时的值时需要的计算次数,可以得出仅需4次乘法和5次加法运算即可得出结果。
显然少了6次乘法运算。
这种算法就叫秦九韶算法。
1.秦九韶计算多项式的方法
例1已知一个5次多项式为
用秦九韶算法求这个多项式当
时的值。
略
(1)例1计算时需要多少次乘法计算?
多少次加法计算?
(2)在利用秦九韶算法计算n次多项式当
时需要多少次乘法计算和多少次加法计算?
利用秦九韶算法计算
时的值,并统计需要多少次乘法计算和多少次加法计算?
例2设计利用秦九韶算法计算5次多项式
时的值的程序框图。
程序框图如下:
利用程序框图试编写BASIC程序并在计算机上测试自己的程序。
2.排序
在信息技术课中我们学习过电子表格,电子表格对分数的排序非常简单,那么电子计算机是怎么对数据进行排序的呢?
阅读课本P30—P31面的内容,回答下面的问题:
(1)排序法中的直接插入排序法与冒泡排序法的步骤有什么区别?
(2)冒泡法排序中对5个数字进行排序最多需要多少趟?
(3)在冒泡法排序对5个数字进行排序的每一趟中需要比较大小几次?
游戏:
5位同学每人拿一个数字牌在讲台上演示冒泡排序法对5个数据4,11,7,9,6排序的过程,让学生通过观察叙述冒泡排序法的主要步骤.并结合步骤解决例3的问题.
例3用冒泡排序法对数据7,5,3,9,1从小到大进行排序
解:
P32
练习:
写出用冒泡排序法对5个数据4,11,7,9,6排序的过程中每一趟排序的结果.
例4设计冒泡排序法对5个数据进行排序的程序框图.
程序框图如下:
思考:
直接排序法的程序框图如何设计?
可否把上述程序框图转化为程序?
用直接排序法对例3中的数据从小到大排序
3.小结:
(1)秦九韶算法计算多项式的值及程序设计
(2)数字排序法中的常见的两种排序法直接插入排序法与冒泡排序法
(3)冒泡法排序的计算机程序框图设计
P38A
(2)(3)
设计程序框图对上述两组数进行排序
第五课时进位制
了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换。
学习各种进位制转换成十进制的计算方法,研究十进制转换为各种进位制的除k去余法,并理解其中的数学规律。
领悟十进制,二进制的特点,了解计算机的电路与二进制的联系,进一步认识到计算机与数学的联系。
各进位制表示数的方法及各进位制之间的转换
除k去余法的理解以及各进位制之间转换的程序框图的设计
在学习各种进位制特点的同时探讨进位制表示数与十进制表示数的区别与联系,熟悉各种进位制表示数的方法,从而理解十进制转换为各种进位制的除k去余法。
我们常见的数字都是十进制的,但是并不是生活中的每一种数字都是十进制的.比如时间和角度的单位用六十进位制,电子计算机用的是二进制.那么什么是进位制?
不同的进位制之间又又什么联系呢?
进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。
可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。
现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。
对于任何一个数,我们可以用不同的进位制来表示。
比如:
十进数57,可以用二进制表示为111001,也可以用八进制表示为71、用十六进制表示为39,它们所代表的数值都是一样的。
表示各种进位制数一般在数字右下脚加注来表示,如111001
(2)表示二进制数,34(5)表示5进制数.
电子计算机一般都使用二进制,下面我们来进行二进制与十进制之间的转化
例1把二进制数110011
(2)化为十进制数.
110011=1*25+1*24+0*23+1*24+0*22+1*21+1*20
=32+16+2+1
=51
例2把89化为二进制数.
根据二进制数满二进一的原则,可以用2连续去除89或所得商,然后去余数.
具体的计算方法如下:
89=2*44+1
44=2*22+0
22=2*11+0
11=2*5+1
5=2*2+1
所以:
89=2*(2*(2*(2*(2*2+1)+1)+0)+0)+1
=1*26+0*25+1*24+1*23+0*22+0*21+1*20
=1011001
(2)
这种算法叫做除2取余法,还可以用下面的除法算式表示:
余数
1
把上式中的各步所得的余数从下到上排列即可得到89=1011001
(2)
上述方法也可以推广为把十进制化为k进制数的算法,这种算法成为除k取余法.
当数字较小时,也可直接利用各进位制表示数的特点,都是以幂的形式来表示各位数字,比如2*103表示千位数字是2,所以可以直接求出各位数字.即把89转换为二进制数时,直接观察得出89与64最接近故89=64*1+25
同理:
25=16*1+9
9=8*!
+1
即89=64*1+16*1+8*!
+1=1*26+1*24+1*23+1*20
位数
6
5
4
3
2
数字
即89=1011001
(2)
(1)把73转换为二进制数
(2)利用除k取余法把89转换为5进制数
把k进制数a(共有n位)转换为十进制数b的过程可以利用计算机程序来实现,语句为:
INPUTa,k,n
i=1
b=0
WHILEi<
=n
t=GETa[i]
b=b+t*k^(i-1)
i=i+1
PRINTb
(1)请根据上述程序画出程序框图.
参考程序框图:
(2)设计一个算法,实现把k进制数a(共有n位)转换为十进制数b的过程的程序中的GET函数的功能,输入一个正5位数,取出它的各位数字,并输出.
小结:
(1)进位制的概念及表示方法
(2)十进制与二进制之间转换的方法及计算机程序
P38A(4)
补充:
设计程序框图把一个八进制数23456转换成十进制数.