文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
1.4 算法案例第3课时
重点难点
重点:理解区间二分法的意义;学会分析类似的问题;通过案例分析,体会算法
思想,
难点:理解二分法的算法思想和算法表示
学习要求
1.理解区间二分法的意义,二分法主要是采用了循环结构处理问题要会分析类似的问题。 2.能由流程图分析出期所含有的结构并用为代码表示出相应的算法. 3.GoTo语句的认识及其他语句的进一步熟悉。[来源:.]
【课堂互动】
问题:用区间二分法写出方程x?x?1?0在区间[1,1.5]内的一个近似解(误差不超过0.001)的一个算法。
3算法设计思想:
3*令函数f(x)?x?x?1.如图,如果估计出方程f(x)?0在某区间[a,b]内有一个根x,就能用二分法搜索求得符合误差限制c的近似解.
*取[a,b]的中点x0,如果f(x0)=0,则x0就是方程的根;否则判断根x在x0的左侧还是右侧,如果在左侧,就用[a,x0]代替区间 [a,b]。如果在右侧,就用[x0,b]代替区间
[a,b],如此循环下去,直到|a-b|<(c是约定的误差范围,本例中为0.001)时终止,此时x≈x0。
算法步骤:
*1(a?b),将区间一分为二; 2*S2 若f(x0)?0,则x0就是方程的根;否则判断根x在x0的左侧还是右侧:
S1 取[a,b]的中点x0?*若f(a)f(x0)>0,则x?(x0,b),以x0代替a; *若f(a)f(x0)<0,则x?(a,x0),以x0代替b;
S3 若a?b 开始 [来源:.] *【伪代码】代码1: Read a,b,c 输入a,b,c 3While |a?b|?c And x0?x0?1?0 If (a?a?1)?(x0?x0?1)<0 Else a?x0 3End If f(a)←a?a?1 End While Print x0 f ( x ) ← x3?x?1 03300代码2: 10 Read a,b,c N N Y - 1 -文档收集于互联网,如有不妥请联系删除. Y f(a)f(x0)<0 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. (a?b) 2330 f(a)?a?a?1 340 f(x0)?x0?x0?1 20 x0?50 If f(x0)?0 Then GoTo 120 60 If f(a)f(x0)?0 Then 70 b?x0 80 Else 90 a?x0 100 End If 110 If |a?b|?c Then GoTo 20 120 Print x0 【追踪训练】 1.在直角坐标系中作出函数y?2和y?4?x的图象,根据图象判断方程2?4?x的解的范围,再用二分法求这个方程的近似解(误差不超过0.001),并写出这个算法的伪代码,画出流程图。 开始 【解】由图像可知方程2x?4?x有一个根在[1,2]内。 a←1 b←2 c←0.001 While a?b≥c x0←(a+b)/2 f(a)←2?a?4 f(x0)←2x0xx输入a,b,c a?x0?4 f(a)←2a?a?4 f(x0)←2x0?x0?4 Y N N If f(x0)=0 Then Exit While If f(a)f(x0)<0 Then b←x0[来源:..] Else a←x0[来源:.] End If End While Print x0 流程图如下: f(a)f(x)<0 Y b←x0 a←x0 第12课时算法案例(3) 分层训练[来源:.] 1、阅读下列代码,写出该代码的运行结果 p←20 m←2 do p←p-m m←m+3 - 2 -文档收集于互联网,如有不妥请联系删除. N a?b Until m>p Print m 思考?运用 2. 设计求解不定方程 x1?2x2?3x3??11x11?12x12?0(x1,x2,,x12?{?1,1})的一个算法,(提示:可用循 环语句或条件语句) 3.判断某年是否为闰年,要看此年份数能否被4整除,但又不能被100整除;或者看此年份数能否被400整除。画出上述算法的流程图,并写出伪代码。 4.函数y?x与y?2有三个交点(x1,y1),(2,4),(4,16),其中-1<x1<0。试用二分法求出x1近似值(误差不超过0.01)。 5、求满足不等式:1×2×3×┅×I<10000的最大正整数I,写出代码。 [来源:..] 6、求出平方数小于1000的所有正整数的和,并写出代码。 [来源:.] [来源:.] 2x探究?拓展: 7. 要判断一个数x是否为质数,我们可以把它分别除以从2到x-1的每一个整数,如果都除不尽,则x为质数。要判断a是否能被b整除,只要看a/b是否等于Int(a/b),若相等则能整除。 下面是寻找3~100之内质数的一个算法的伪代码: 10 For x From 3 To 100 20 .or I From 2 To x-1 30 If Int(x/i)=x/i Then GoTo 10 40 End For 50 Print x 60 End For 实际上,上述算法的运算次数较多,可以加以改进,首先,偶数不可能是质数,因此第1行的步长可改为2,其次,第2行中的x-1可以改为x(为什么?)。 写出改进后的伪代码,你有寻找质数更好的方法吗?[来源:.] 8. 满足方程a?b?c的一组正整数称为勾股数或商高数,试设计一个满足a≤30,b≤40,c≤50的勾股数的算法(写出算法步骤,画出流程图)。 9、输入一个数,将该数反向输出(如1234→4321)。写出一个解决该问题的算法,并用伪代码表示。 222- 3 -文档收集于互联网,如有不妥请联系删除.