150 likes | 359 Views
算法的基本思想. 高中数学新课程必修. 算法初步. 你愿意不厌其烦地去作枯燥的、重复的、繁琐的工作吗? 用计算机代替人来完成这些工作,这恰恰是计算机的特长。 电脑发展到今天,能有如此广泛而神奇的应用,除了半导体集成电路芯片的制造工艺提高以外,主要靠软件,而软件的核心是 算法 。. 算法. “ 猜数”游戏 竞猜者如在规定的时间内猜出某种商品的价格,就可获得该件商品。现有一商品,价格在 0~1000 之间,采取怎样的策略才能在较短的时间内说出正确的答案呢 ?. 算法. 什么是算法?
E N D
算法的基本思想 高中数学新课程必修
算法初步 • 你愿意不厌其烦地去作枯燥的、重复的、繁琐的工作吗? • 用计算机代替人来完成这些工作,这恰恰是计算机的特长。 • 电脑发展到今天,能有如此广泛而神奇的应用,除了半导体集成电路芯片的制造工艺提高以外,主要靠软件,而软件的核心是算法。
算法 “猜数”游戏 • 竞猜者如在规定的时间内猜出某种商品的价格,就可获得该件商品。现有一商品,价格在0~1000之间,采取怎样的策略才能在较短的时间内说出正确的答案呢?
算法 • 什么是算法? • 算法(algorithm)一词源于算术(algorism),算术方法的原义是一个由已知推求未知的运算过程。后来,人们把它推广到一般,算法是解决某类问题的一系列步骤或程序。 • 例如,人们在计算过程中,先乘除,后加减,从内到外去括号等规则,都是按部就班必须遵守的算法。 • 又如求解方程的步骤;发送电子邮件;计算机动画的设计等
例1 在给定素数表的条件下,设计算法, 将936分解成素因数的乘积. 1. 判断936是否为素数:否. 936=2×468 2. 确定936的最小素因数:2. 3. 判断468是否为素数:否. 4. 确定468的最小素因数:2. 936=2×2×234 5. 判断234是否为素数:否. 6. 确定234的最小素因数:2. 936=2×2×2×117 7. 判断117是否为素数:否. 936=2×2×2×3×39 8. 确定117的最小素因数:3. 9. 判断39是否为素数:否. 936=2×2×2×3×3×13 10. 确定39的最小素因数:3. 11. 判断13是否为素数:是.
例2 设计算法,找出三个数中的最大 。 (1) 输入三个数:a,b,c 解: (2) 比较a与b的大小,max{a,b}=M 若a<b,则M=b;否则M=a. (3) 比较M与c的大小,max{M,c}=N. 若M<c,则N=c;否则N=M. (4) 输出N. N为三数中的最大数.
例3 设计一个算法,求840与1764的最大公因数. 1. 先将840进行素因数分解: 840=23×3×5×7 2. 将1764进行素因数分解: 1764=22×32×72 3. 确定它们的公共素因数: 2,3,7 4. 确定它们的公共素因数的指数: 2,1,1 5. 最大公因数为: 22×3×7=84 练习1 请设计一个算法,求三个数: 324,440,556的最大公因数?
设计一个算法,求100以内能被3整数的数。 例4 分析问题: 设能被3整除的数为I,令I=1,2,3,…,100,如果I能被3整数,则输出I,否则,检查下一个,知道I=100为止。 设计算法: 1)令I=1; (2)如果I能被3整除的数,则输出I; (3)I=I+1; (4)如果I<=100,则返回第(2)步; (5)结束。
例5 描述一元二次方程求解的算法 1. 计算判别式△=b2-4ac. 解: 2. 判断△的符号: (1)若△<0,则输出方程无实数解; (2)若△=0,则输出方程有两相等实数解: (3)若△>0,则输出方程有两不等实数解:
例6 找假银元问题 有9枚银元,其中有一枚略轻的是假银元, 你能用天平(不用砝码)将假银元找出来吗?
例7 欧几里得算法——辗转相除法 设给定的两个正整数为m和n,求它们的最大公约数的步骤(算法)为: (1)以m除以n,令所得的余数为r(r必小于n); (2)若r=0,则输出结果n,算法结束;否则,继续步骤(3) (3)令m=n,n=r,并返回步骤(1)继续进行。
例8 韩信点兵: 令士兵从1~3报数,结果最后一个士兵报2; 令士兵从1~5报数,结果最后一个士兵报3; 令士兵从1~7报数,结果最后一个士兵报4; 你能算出韩信至少有多少兵吗?
分油问题 例9 一个大油瓶装 8kg油,还有两个空油瓶, 一个能装5kg,另一个能装3kg,请设计一种算法, 将这8kg油平均分成两份. 1. 将这8kg油倒满5kg的油瓶. 2. 将5kg油瓶中的油倒满3kg的油瓶. 3. 将3kg油倒入8kg的油瓶. 4. 将这5kg油瓶中的2kg油倒入3kg的油瓶. 5. 将8kg油瓶中的油倒满5kg的油瓶. 6. 将5kg油瓶中的油倒满3kg的油瓶. 7. 将这3kg油倒入8kg的油瓶.
设区间[a,b]是方程f(x)=0的有解区间, 画出用二分法算法求方程f(x)=0在区间[a,b] 上的一个近似解的流程图,要求精确度为 . 例10 1. 确定有解区间[a,b] (f(a)·f(b)<0) 2. 取[a,b]的中点x= 3. 计算f( )的值 4. 判断 是否为0 (1) 如果为0, 就是方程的解. (2) 如果不为0,分两种情况确定新的有解区间 5. 判断新的有解区间长度是否小于精确度 (1)如果不是,则在新区间的基础上取中点,重复上述步骤 (2)如果是,则取新区间的中点为方程的解