算法案例

文档属性

名称 算法案例
格式 zip
文件大小 335.3KB
资源类型 教案
版本资源 人教新课标A版
科目 数学
更新时间 2012-02-23 21:20:57

文档简介

(共14张PPT)
算法案例
(第三课时)
一、进位制
1、什么是进位制?
2、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明.
进位制是人们为了计数和运算方便
而约定的记数系统。
1、我们了解十进制吗?所谓的十进制,它是如何构成的?
十进制由两个部分构成
例如:3721
其它进位制的数又是如何的呢?
1、它有0、1、2、3、4、5、6、7、8、9十个数字;
2、它有“权位”,即从右往左为个位、十位、百位、千位等等。
(用10个数字来记数,称基数为10)
表示有:1个1,2个十, 7个百即7个10的平方,
3个千即3个10的立方
2、 二进制
二进制是用0、1两个数字来描述的。如11001等
(1)二进制的表示方法
区分的写法:11001(2)或者(11001)2
8进制呢?
如7342(8)
k进制呢?
anan-1an-2…a2a1(k)?
二、二进制与十进制的转换
1、二进制数转化为十进制数
例1 将二进制数110011(2)化成十进制数
解:
根据进位制的定义可知
所以,110011(2)=51。
练习
将下面的二进制数化为十进制数?
(1)111
(2)1110
(2)7342(8)=________(10)
将k进制数a转换为十进制数(共有 n位)的程序
a=anan-1… a3a2a1(k)
=ank(n-1)+an-1k(n-2)+ … + a3k2 +a2k1+a1k0
b=a1k0
b=a2k1 +b
b=a3k2 + b

b=ankn-1 +b
ai=GET a[i]
GET函数用于取出a的右数第i位数
INPUT a,k,n
i=1
b=0
WHILE i<=n
t=GET a[i]
b=t*k^(i-1)+b
i=i+1
WEND
PRINT b
END
i=i+1
i=1
b=aiki-1+b
2、十进制转换为二进制
(除2取余法:用2连续去除89或所得的商,然后取余数)
例2 把89化为二进制数
解:
根据“逢二进一”的原则,有
89=2×44+1
= 2× (2×22+0)+1
= 2×( 2×( 2×11+0)+0)+1
= 2× (2× (2× (2× 5+1)+0)+0)+1
5= 2× 2+1
=2×(2×(2×(2×(22+1)+1)+0)+0)+1
89=1×26+0×25+1×24+1×23+0×22+0×21+1×20
所以:89=1011001(2)
=2×(2×(2×(23+2+1)+0)+0)+1
=2×(2×(24+22+2+0)+0)+1
=2×(25+23+22+0+0)+1
=26+24+23+0+0+21
89=2×44+1
44= 2×22+0
22= 2×11+0
11= 2× 5+1
= 2× (2× (2× (2× (2× 2+1)+1)+0)+0)+1
所以89=2×(2×(2×(2×(2 × 2 +1)+1)+0)+0)+1
2、十进制转换为二进制
例2 把89化为二进制数
5
2
2
2
1
2
0
1
0
余数
11
22
48
89
2
2
2
2
0
1
1
0
1
注意:
1.最后一步商为0,
2.将上式各步所得的余数从下到上排列,
得到:89=1011001(2)
练习
将下面的十进制数化为二进制数?
(1)20
(2)128
例3 把89化为五进制数
3、十进制转换为其它进制
解:
根据除k取余法
以5作为除数,相应的除法算式为:
所以,89=324(5)。
89
5
17
5
3
5
0
4
2
3
余数
练习:P45 3
小结与作业
2、掌握二进制与十进制之间的转换
1、进位制的概念
作业:课本P38,习题1.3
第4题(共15张PPT)
算 法 案 例
(第二课时)
1、求两个数的最大公约数的两种方法分别是( )和( )。
2、两个数21672,8127的最大公约数是 ( )
A、2709 B、2606 C、2703 D、2706
案例2、秦九韶算法
怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值呢?
计算多项式f(x) =x5+x4+x3+x2+x+1当x = 5的值
算法1:
因为f(x) =x5+x4+x3+x2+x+1
所以f(5)=55+54+53+52+5+1
=3125+625+125+25+5+1
= 3906
算法2:
f(5)=55+54+53+52+5+1
=5×(54+53+52+5+1 ) +1
=5×(5×(53+52+5 +1 )+1 ) +1
=5×(5×(5×(52+5 +1) +1 ) +1 ) +1
=5×(5×(5×(5 ×(5 +1) +1 )+1)+1) +1
算法1:
因为f(x) =x5+x4+x3+x2+x+1
所以f(5)=55+54+53+52+5+1
=3125+625+125+25+5+1
= 3906
算法2:
f(5)=55+54+53+52+5+1
=5×(54+53+52+5+1 ) +1
=5×(5×(53+52+5 +1 )+1 ) +1
=5×(5×(5×(52+5 +1) +1 ) +1 ) +1
=5×(5×(5×(5 ×(5 +1) +1 )+1)+1) +1
共做了1+2+3+4=10次乘法运算,5次加法运算。
共做了4次乘法运算,5次加法运算。
《数书九章》——秦九韶算法

是一个n 次的多项式
对该多项式按下面的方式进行改写:
这是怎样的一种改写方式?最后的结果是什么?
要求多项式的值,应该先算最内层的一次多项式的值,即
然后,由内到外逐层计算一次多项式的值,即
最后的一项是什么?
这种将求一个n次多项式f(x)的值转化成求n个一次多项式的值的方法,称为秦九韶算法。
通过一次式的反复计算,逐步得出高次多项式的值,对于一个n次多项式,只需做n次乘法和n次加法即可。
秦九韶算法的特点:
例2 已知一个五次多项式为
用秦九韶算法求这个多项式当x = 5的值。
解:
将多项式变形:
按由里到外的顺序,依此计算一次多项式当x = 5时的值:
所以,当x = 5时,多项式的值等于17255.2
你从中看到了怎样的规律?怎么用程序框图来描述呢?
算法步骤:
第一步:输入多项式次数n、最高次项的系数an和x的值.
第二步:将v的值初始化为an,将i的值初始化为n-1.
第三步:输入i次项的系数ai.
第四步:v=vx+ai,i=i-1.
第五步:判断i是否大于或等于0,若是,则返回第三步;否则,输出多项式的值v。
(1)程序框图:
输入ai
开始
输入n,an,x
i>=0
输出v
结束
v=vx+ai
i=i-1
Y
N
i=n-1
V=an
(2)程序:
INPUT “n=”;n
INPUT “an=“;a
INPUT “x=“;x
v=a
i=n-1
WHILE i>=0
PRINT “i=“;i
INPUT “ai=“;a
v=v*x+a
i=i-1
WEND
PRINT v
END
练习、已知多项式f(x)=x5+5x4+10x3+10x2+5x+1
用秦九韶算法求这个多项式当x=-2时的值。
课堂小结:
1、秦九韶算法的方法和步骤
2、秦九韶算法的程序框图(共18张PPT)
算 法 案 例
第一课时
1. 回顾算法的三种表示方法:
(1)、自然语言
(2)、程序框图
(3)、程序语言
(三种逻辑结构)
(五种基本语句)
复习引入
2. 思考:
小学学过的求两个数的最大公约数的方法?
先用两个公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来.
例:求下面两个正整数的最大公约数:
(1)求25和35的最大公约数
(2)求49和63的最大公约数
25
(1)
5
5
35
7
49
(2)
7
7
63
9
所以,25和35的最大公约数为5
所以,49和63的最大公约数为7
思考:除了用这种方法外还有没有其它方法?
例:如何算出8251和6105的最大公约数?
新课讲解:
一、辗转相除法(欧几里得算法)
1、定义:
所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。
2、步骤: (以求8251和6105的最大公约数的过程为例)
第一步 用两数中较大的数除以较小的数,求得商和余数 8251=6105×1+2146
结论: 8251和6105的公约数就是6105和2146的公约数,求8251和6105的最大公约数,只要求出6105和2146的公约数就可以了。
第二步 对6105和2146重复第一步的做法 6105=2146×2+1813 同理6105和2146的最大公约数也是2146和1813的最大公约数。
完整的过程
8251=6105×1+2146
6105=2146×2+1813
2146=1813×1+333
1813=333×5+148
333=148×2+37
148=37×4+0
例: 用辗转相除法求225和135的最大公约数
225=135×1+90
135=90×1+45
90=45×2
显然37是148和37的最大公约数,也就是8251和6105的最大公约数
显然45是90和45的最大公约数,也就是225和135的最大公约数
思考1:从上面的两个例子中可以看出计算的规律是什么?
S1:用大数除以小数
S2:除数变成被除数,余数变成除数
S3:重复S1,直到余数为0
辗转相除法是一个反复执行直到余数等于0才停止的步骤,这实际上是一个循环结构。
8251=6105×1+2146
6105=2146×2+1813
2146=1813×1+333
1813=333×5+148
333=148×2+37
148=37×4+0
m = n × q + r
用程序框图表示出右边的过程
r=m MOD n
m = n
n = r
r=0


思考:你能把辗转相除法编成一个计算机程序吗?
(1)、算法步骤:
第一步:输入两个正整数m,n(m>n).
第二步:计算m除以n所得的余数r.
第三步:m=n,n=r.
第四步:若r=0,则m,n的最大公约数等于m;
否则转到第二步.
第五步:输出最大公约数m.
(2)、程序框图:
开始
输入m,n
r=m MOD n
m=n
r=0


n=r
输出m
结束
(3)、程序:
INPUT “m,n=“;m,n
DO
r=m MOD n
m=n
n=r
LOOP UNTIL r=0
PRINT m
END
练习:P45 1 (1) (3)
二、更相减损术
可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。
第一步:任意给定两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。
(1)、《九章算术》中的更相减损术:
1、背景介绍:
(2)、现代数学中的更相减损术:
2、定义:
所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。
例: 用更相减损术求98与63的最大公约数.
解:由于63不是偶数,把98和63以大数减小数,并辗转相减
98-63=35 63-35=28 35-28=7 28-7=21
21-7=21
14-7=7
所以,98和63的最大公约数等于7
3、方法:
1、用更相减损术求两个正数84与72的最大公约数.
练习:
思路分析:先约简,再求21与18的最大公约数,然后乘以两次约简的质因数4。
2、求324、243、135这三个数的最大公约数。
思路分析:求三个数的最大公约数可以先求出两个数的最大公约数,第三个数与前两个数的最大公约数的最大公约数即为所求。
比较辗转相除法与更相减损术的区别
(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到。
小结