数学建模计算实验 下载本文

-

《数学建模》

实验一:matlab函数拟合

学时:4学时

实验目的:掌握用matlab进行函数拟合的方法。 实验内容:

解:

问题分析 制定“2秒准则”是为了在后车急刹车的情况下不致撞上前车,即要确定汽车的刹车距离。显然,刹车距离与车速有关。

刹车过程分为两个阶段,第一阶段:司机反应阶段,是指从司机决定刹车到制动机开始起作用,这个阶段时间内汽车行驶的距离称为反应距离;第二阶段:从制动机开始起作用到汽车完全停止行驶,这个阶段称为制动阶段,在这阶段时间内汽车行驶的距离称为制动距离。因此,刹车距离=反应距离+制动距离。

反应距离由反应时间和车速决定,反应时间取决于司机个人状况和制动机的灵敏性,对于一般规则可以视反应时间为常数,且在这段时间内车速未改变。

制动距离与制动器作用力、车重、车速以及道路、气候等因素有关,制动器是一个能量耗散装置,制动力做的功被汽车动能的改变所抵消。对于一般规则又可以看做固定的。

模型假设 基于上述分析,做以下假设: 1)

刹车距离为d,反应距离为d1,制动距离为d2,且刹车距离等于反应距离与制动距离之和,即d?d1?d2. 2) 3)

模型建立 由假设2,

反应距离为d1与车速为v成正比,比例系数为反应时间t1.

刹车使用最大制动力F,F作的功等于汽车功能的改变,且F与车的质量m成正比,即F?ma.

d1?t1v?k1v (1)

-

由假设3,在F的作用下行驶了距离

d2所作的功为Fd2使车速从v变成0,动能

的变化为mv22,有Fd2?mv22,又F?ma,即F?m,由牛顿第二定律知,刹车时的加速度a为常数,于是

d2?kv2 (2)

而实际上mv22?mad2?d2?v22?kv2,k?12a. 由假设1,刹车距离为

d?t1v?kv2 (3)

模型求解 用matalb函数拟合法求解. 先做M文件:

function e=fitf(c)

x=[20/3.6 40/3.6 60/3.6 80/3.6 100/3.6 120/3.6 140/3.6]; y=[6.5 17.8 33.6 57.1 83.4 118.0 153.5]; e=y-(c(1)*x.^2+c(2)*x);

然后执行c=lsqnonlin(@fitf,[0,0])

Optimization terminated: norm of the current step is less than OPTIONS.TolX. c =

0.0853 0.6522

则得d=0.0853*v^2+0.6522*v

模型应用 根据经验估计,我们可以认为反应时间t1=0.6522秒是合理的,刹车时间

t?dv.

按照上述模型可以将“2秒准则”修正为t秒准则,即后车司机从前车经过某一标志开始默数t秒后到达同一标志。 车速(km/h) 20 40 60 80 100 120 140 154.3664 3.9694 计算刹车 6.2560 17.7775 34.5644 56.6168 距离(m) 刹车时间(秒) 1.1261 1.6000 2.0739 2.5478 83.9346 116.5178 3.0216 3.4955 后车司机从前车经过某一标志开始默数t秒钟后到达同一标志,t由下表给出: 车速(km/h) t(秒) 0—10 1 10-60 2 60—100 3 100-140 4 可见,2秒是相对的,即所谓的“2秒准则”是不合理的,刹车时间与车速有关,应根据车速来确定刹车时间。

-

实例2:根据美国人口从1790年到1990年间的人口数据(如下表),确定人口指数增长模型(Logistic模型)中的待定参数,估计出美国2010年的人口,同时画出拟合效果的图形。

表1 美国人口统计数据

年 份 人口(×10) 年 份 人口(×10) 年 份 人口(×10) 6661790 3.9 1860 31.4 1930 123.2 1800 5.3 1870 38.6 1940 131.7 1810 7.2 1880 50.2 1950 150.7 1820 9.6 1890 62.9 1960 179.3 1830 12.9 1900 76.0 1970 204.0 1840 17.1 1910 92.0 1980 226.5 1850 23.2 1920 106.5 1990 251.4 解:

问题分析 最简单的人口增长模型:记今年人口为x0,k年以后人口为xk,年增长

率为r,则

xk?x0(1?r)k (1)

其中年增长率r保持不变.

模型建立 记时刻t的人口为x(t),当考察一个国家或一个较大地区的人口时,

x(t)是一个很大的整数,我们将x(t)视为连续、可微的函数,记初始时刻(t?0)的人口为

x0,假设人口年增长率r为常数.考虑t到t??t时间内人口的增量,显然,有

x(t??t)?x(t)?rx(t)?t

令?t?0,得到x(t)满足微分方程

dx?rxx(0)?x0 (2) dt ,

由方程(2)解得

x(t)?x0ert (3)

r?0 时(3)式表示人口将按指数规律随时间无限增长,称为指数增长模型.

当人口增长到一定数量后,由于自然资源、环境条件等因素对人口的增长起着阻滞作用,

人口增长率就会下降,且随着人口的增加,阻滞作用越来越大.。所谓阻滞增长模型就是考虑到这个因素,对指数增长模型的基本假设进行修改后得到的。

阻滞作用于体现在对人口增长率r的影响上,使得r随着人口数量x的增加而下降,若将r表示为x的函数r(x),则它应是减函数。于是方程

dx?r(x)x,x(0)?x0。对r(x)的一个dt最简单的假定是,设r(x)为x的线性函数,即r(x)?r?sx(r?0,s?0)。这里r称固有增长,表示人口很少时(理论上是x?0)的增长。为了确定系数s的意义,引入自然资源和

-

环境条件所能容纳的最大人口数量xm,称人口容量。当x?xm时人口不再增长,即增长率

r(xm)?0,代入r(x)?r?sx(r?0,s?0)得s?rx,于是r(x)?r(1?),这个式子的xmxm另一个解释是,增长率r(x)与人口尚未实现部分的比例(xm?x)/xm成正比,比例系数为固有增长率r。

故,有

dxx?rx(1?),x(0)?x0 (3) dtxm方程右端的因子rx体现人口自身的增长趋势,因子(1?x)则体现了资源和环境对人口增xm长的阻滞作用,显然,x越大,前一因子越大,后一因子越小,人口增长是两个因子共同作用的结果。用分离变量法求解得到:x(t)?xmx1?(m?1)e?rtx0

模型求解 用matlab进行数据拟合,其结果为:

311.9523x(t)?311.95231?(?1)e?0.2798t3.9

附:计算过程: 用matlab

(4)

)?267.1953. 将t?2010代入(4)由以上结果预测2010年的人口为x(2010进行数据拟合:

建立M文件:

function x=f2(a,t)

x=a(1)./(1+(a(1)./3.9-1). *exp(-a(2).*(t-1790)./10));

程序运行:

>> x=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4]; >> t=1790:10:1990;

>> a=lsqcurvefit(@f2,[100,0.2],t,x)

Optimization terminated: relative function value changing by less than OPTIONS.TolFun. a =