数学模型(插值、拟合和微分方程)-python实现
问题1 车辆数量估计
题目描述
交通管理部门为了掌握一座桥梁的通行情况,在桥梁的一端每隔一段不等的时间,连续记录1min内通过桥梁的车辆数量,连续观测一天24h的通过车辆,车辆数据如下表所示。试建立模型分析估计这一天中总共有多少车辆通过这座桥梁。
python 实现(关键程序)
def get_line(xn, yn): def line(x): index = -1 # 找出x所在的区间 for i in range(1, len(xn)): if x <= xn[i]: index = i - 1 break else: i += 1 if index == -1: return -100 # 插值 result = (x - xn[index + 1]) * yn[index] / float((xn[index] - xn[index + 1])) + (x - xn[index]) * yn[ index + 1] / float((xn[index + 1] - xn[index])) return result return line time = [0, 2, 4, 5, 6, 7, 8, 9, 10.5, 11.5, 12.5, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24] num = [2, 2, 0, 2, 5, 8, 25, 12, 5, 10, 12, 7, 9, 28, 22, 10, 9, 11, 8, 9, 3] # 分段线性插值函数 lin = get_line(time, num) # time_n = np.arange(0, 24, 1/60) time_n = np.linspace(0, 24, 24*60+1) num_n = [lin(i) for i in time_n] sum_num = sum(num_n) print("估计一天通过的车辆:%d" % sum_num)