内容正文:
广义上讲,算法是解决一个特定问题而采取的确定的、有限的步骤。
在计算机领域,算法作为一个精心设计的运算序列,描述了计算机如何将输入转化为输出的过程
2.4 常见算法的程序实现
1.基于解析算法的问题解决
2.基于枚举算法的问题解决
学习目标
理解解析算法和枚举算法,根据需要选用这两种算法,编程实现简单问题求解。
认识问题解决中不同算法的效率,完成项目程序的调试与运行
体验探索
绿灯时长的最优设置
通常,行人步行速度约为4.4km/h,观察到信号灯变化一的反应时间约为2s。要保证过街行人能走过长为20m的人行横道,人行过街绿灯时长至少需要设置为多少?
思考:
1.写出求解绿灯最短时长的计算公式: 。
2.结合实际道路情况,思考在设置人行过街绿灯时长时需要考虑哪些因素,试着给出绿灯时长的最优设置模型。
自助式人行过街红绿灯
分析问题
已知条件
求解目标
确立数学关系,建立数学模型。
1.写出求解绿灯最短时长的计算公式: t=s/v+t 。
建立数学模型
数学模型是用数学符号、数学式子、程序、图形等对实际问题本质属性的抽象而又简洁的刻画。
建立数学模型,就是根据实际问题来简化假设、分析内在规律,之后抽象成为数学的符号和语言。
2.结合实际道路情况,思考在设置人行过街绿灯时长时需要考虑哪些因素,试着给出绿灯时长的最优设置模型。
成人 1.2 1~2
老人和孩子 0.9 3
要在学校门口(马路宽20 m)设置一个“自助式人行过街红绿灯”,参考下表数据,绿灯时长最少应为多少秒?
此处的“最少”≠数值“最小”
向上取整 / s
18.7
25.2
19
26
步行速度/( m·s-1)
反应时间 / s
计算结果 / s
马路宽度
s
步行速度
v
人反应时间
t0
2.4.1 基于解析算法的问题解决
定义:解析算法指通过找出解决问题的前提条件与结果之间关系的表达式,并计算表达式来实现问题的求解。
例如,在“体验探索”中求解行人过马路最短绿灯时长公式:
t绿灯时长= t人反应 + s/v
编程
调试
已知
条件
求解
目标
二者
关系
计算
基于解析算法的问题解决方法及步骤
解析算法
通过分析问题的已知条件和求解目标,抽象成数学模型,借助解析式,用已知条件为变量赋值进行求解。
例如:绿灯时长的最优设置
已知
求解
解析式
研究性学习中的问题
现实生活中的问题
km
km
km
例1:自由落体运行问题
问题:从离地500m的高处自由落下一个小球,求从开始落下的时刻起,小球在最后1s内的位移(重力加速度g以9.8m/s2计)
已知条件:小球离地高度500m,重力加速度g以9.8m/s2重力;
求解目标:小球在下落最后1s内的位移;
已知与未知的关系:可用自由落体运行位移与时间公式h=1/2gt2,求解出下落时间t,以及最后1s内小球的位移。
(1)分析问题
(2)设计算法
在该问题中,要计算最后1s内小球的位移,首先要求出小球的落地时间t,由h=1/2gt2 可以得出落地t= ;然后计算前(t-1)s小球下落的高度hx;最后求出总高度h(500m)与hx的差hh,即为最后1s内小球的位移。
开始
h←500,g←9.8
结束
输出最后1秒的位移hh
hh ← h-hx
求解算法的流程图如下图示:
自由落体运动问题求解流程图
运行结果
(3)编程实现与调试
(4)保存文件,调试运行程序
import math
h=500
g=9.8
t=math.sqrt(2*h/g)
hx=0.5*g*(t-1)**2
hh=h-hx
print("小球最后1秒下落的位移是:",hh,"米")
实践活动
编写程序研究某山地的气温分布P72
某地区为了开发山区农业,需要了解山地的变化。现已知该地山区海拔每升高100m,气温下降约0.5°C,山地最高海拔为1500m,山脚下的年平均气温为22°C(假设山脚海拔为0m).
1.依据气温随海拔升高而变化的规律,写出计算该山地不同海拔调试的气温的解析式,并编程实现。
2.某种植物适宜生长在气温为18~20°C的山区,如果要分析这种植物应被种植在该山地多高的地区为宜,需要如何修改算法?试编程实现。
现有一段长度为66 km的测速区间,汽车的限速是100 km/h。数据中心需要编写一段程序来判断汽车是否超速通过。
例2: 区间测速
要判断小车是否在区间内超速,需要求得小车的平均时速,并与限速对比,如果大于限速则超速,否则就是正常通过。
求平均时速需要提供区间距离和通过时间。
区间距离已