内容正文:
2.4.1基于解析算法的问题解决
练 习 题
一、自由落体运动问题
从离地500m的高处自由落下一个小球,求从开始落下的时刻起,小球在最后1s内的位移(重力加速度以9.8m/s2计)
(一)根据问题,建构相应数学模型
1、 已知条件:
2、 求解目标:
3、 已知与未知的关系:
(二)填充完整下列程序
import math
h = 500
g = 9.8
t = 请填充
hx = g * (t - 1) * (t - 1) / 2
hh = h - hx
print("小球最后1秒下落的位移是:", hh, "米")2、
二、数学界的大神基斯顿·卡曼,发明的运算符号“阶乘”,记作“n!”。一个正整数的阶乘是所有小于及等于该数的正整数的积,如5!=5*4*3*2*1,请编写程序进行计算n!。要求写出算法和代码。
答案:
一、(一)根据问题,建构相应数学模型
1、 已知条件:小球离地高度500m,重力加速度9.8m/s2;
2、 求解目标:小球在下落最后1s内的位移。
3、已知与未知的关系:可用自由落体运动位移与时间关系的公式,求解出下落时间t,以及最后1s内小球的位移。
(二)填充完整下列程序
t = math.sqrt(2 * h / g)
二、 分析:
计算n!,需要定义3个变量,已知变量n,由键盘输入,输入的是几,就计算几的阶乘,变量i与s,分别用来循环计数与保存阶乘的计算结果,已知与未知的关系。
算法:
第一步:输入数存入变量n.
第二步:定义变量s与i,并赋初值为1。
第三步:循环变量从1开始,判断有没有超过终值,如果超过,跳出循环,否则执行s=s*i,并且计数器增加1。
第四步:输出s,也就是计算n!的值。
代码:
def jc(n):
i=1
s=1
for i in range(1,n+1):
s=s*i
i+=1
return s
$$