数学建模-人口增长模型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数学建模_叶客诚1人口增长模型摘要本文根据某地区的人口统计数据�建立模型估计该地区2010年的人口数量。首先�通过直观观察人口的变化规律后�我们假设该地区的人口数量是时间的二次函数�建立了一个二次函数模型�并用最小二乘法对已有数据进行拟合得到模型的具体参数�从而可以预测2010年的人口数为333.8668百万。然后�我们发现从1980年开始该地区的人口增长明显变慢�于是我们假设人口增长率是人口数的线性减函数�即随着人口数的增加�人口的增长速度会慢慢下降�从而我们建立了阻滞增长模型�利用此模型我们最后求出2010年的人口预报数为296.3865。关键字�人口预报�二次函数模型�阻滞增长模型问题重述�根据某地区人口从1800年到2000年的人口数据�如下表��建立模型估计出该地区2010年的人口�同时画出拟合效果的图形。表1该地区人口统计数据年份1800181018201830184018501860人口7.213.817.217.624.733.636.2年份1870188018901900191019201930人口48.658.173.389.8105.6125.9149.1年份1940195019601970198019902000人口172.2189.8230.5246.7262.1271.2280.3符号说明)(txt时刻的人口数量0x初始时刻的人口数量r人口增长率mx环境所能容纳的最大人口数量�即0)(�mxr数学建模_叶客诚2问题分析首先�我们运用Matlab软件[1]编程�见附件1��绘制出1800年到2000年的人口数据图�如图1。18001820184018601880190019201940196019802000050100150200250300图11800年到2000年的人口数据图从图1我们可以看出1800年到2000年的人口数是呈现增长的趋势的�而且类似二次函数增长。所以我们可以建立了一个二次函数模型�并用最小二乘法对已有数据进行拟合得到模型的具体参数。于是我们假设人口增长率是人口数的线性减函数�即随着人口数的增加�人口的增长速度会慢慢下降,从而我们可以建立一个阻滞增长模型。模型建立模型一�二次函数模型我们假设该地区t时刻的人口数量的人口数量)(tx是时间t的二次函数�即�2()xtatbtc���我们可以根据最小二乘法�利用已有数据拟合得到具体参数。即�要求a、b和c�使得以下函数达到最小值�数学建模_叶客诚3221(,,)()niiiiEabcatbtcx������其中ix是it时刻该地区的人口数�即有�2222)3.28020002000...)2.718001800(),,(�������������cbacbacbaE令0,0,0EEEabc����������可以得到三个关于a、b和c的一次方程�从而可解得a、b和c。我们用Matlab编程�见附件2��解得�a0.006018�357.21��b,18948�c�即�18948357.21006018.0)(2���tttx从而我们可以预测2010年的人口数为8668.333)2010(�x百万。180018501900195020002050050100150200250300350年份人口数原始数据拟合函数图2二次函数模型的拟合效果图图2是所得到的二次函数模型和原数据点的拟合效果图。从图2可以看出拟合的效果在1950年之前还可以�但是对后期的数据拟合的不好。模型二�阻滞增长模型我们假设人口增长率r是人口数x的线性减函数�即随着人口数的增加�人数学建模_叶客诚4口增长速度会慢慢下降�0()rxrsx��人口数量最终会达到饱和�且趋于一个常数mx�当mxx�时�增长率为0�00mrsx��由上面的关系式可得出�0()1mxrxrx��������把上式代进指数增长模型的方程中�并利用初始条件2.7)1800(�x�可以得到�����������������2.7)1800(10xxxxrdtdxm解得�)1800(172101)(�����������trmmexxtx我们可以利用已有数据拟合求解得�程序见附件4�:36.334�mx,�r-0.027958。可以预测2010年的人口数为3865.296)2010(�x百万。数学建模_叶客诚5180018501900195020002050050100150200250300年份人口数原始数据拟合函数图4阻滞增长模型的拟合效果图图4是阻滞增长模型的拟合效果图。从图4我们可以看出我们的模型对该地区的人口数据拟合得很好。可以看出阻滞增长模型更客观地反映人口的增长规律�基本上都在拟合曲线上�拟合效果好�特别是后期的数据非常的吻合�所以次模型对未来的人口数预测是很适合的�结果更准确�对未来的预测比指数增长模型更为优越。参考文献[1]刘卫国,陈昭平,张颖.MATLAB程序设计与应用[M],北京:高等教育出版社,2002年。[2]姜启源,谢金星,叶俊.数学建模(第三版)[M],北京�高等教育出版社,2004年。附录附件1�1800年到2000年的人口数据图x=1800:10:2000;y=[7.213.817.217.624.733.636.248.658.173.389.8105.6125.9149.1数学建模_叶客诚6172.2189.8230.5246.7262.1271.2280.3];figure;plot(x,y,'r*');附件2:线性增长模型的拟合代码x=1800:10:2000;y=[7.213.817.217.624.733.636.248.658.173.389.8105.6125.9149.1172.2189.8230.5246.7262.1271.2280.3];plot(x,y,'r*');%画点�红色holdon;%使得以下图形画在同一个窗口p=polyfit(x,y,2)%多项式拟合�返回系数pxn=1800:5:2010;%定义新的横坐标yn=polyval(p,xn);%估计多项式p的函数值plot(xn,yn)%把(x,yn)定义的数据点依次连起来%给图形加上图例xlabel('年份');ylabel('人口数');legend('原始数据','拟合函数',2);boxon;gridon;x1=2010;y1=polyval(p,x1)%估计多项式p在未知点的函数值附件3�阻滞增长模型的拟合代码clc;%清屏幕clear;%清除以前的变量%数据点(t,y)t=1800:10:2000;y=[7.213.817.217.624.733.636.248.658.173.389.8105.6125.9149.1172.2189.8230.5246.7262.1271.2280.3];plot(t,y,'b*');%定义需要拟合的函数类型myfun(a,t)�a是参数列表,t是变量myfun=@(a,t)[a(1)./(1+(a(1)./7.2-1)*exp(a(2)*(t-1800)))];a0=[500,1];%初始值数学建模_叶客诚7%非线性拟合.最重要的函数�第1个参数是以上定义的函数名�第2个参数是初值�第3、4个参数是已知数据点a=lsqcurvefit(myfun,a0,t,y);disp(['a='num2str(a)]);%显示得到的参数%画出拟合得到的函数的图形ti=1800:10:2010;yi=myfun(a,ti);holdon;plot(ti,yi,'r');%给图形加上图例xlabel('年份');ylabel('人口数');legend('原始数据','拟合函数',2);boxon;gridon;tn=2010;%预测在未知点的函数值yn=myfun(a,tn);disp(['yn='num2str(yn)]);%显示得到的参数

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功