上传是为了分析数学的乐趣,请粘贴复制的时候也多思考哈。
为了更多的学子们。
2014年数学建模论文第二套题目:人口增长模型的确定专业、姓名:土木135提交日期: 2015/7/2晚上题目:人口增长模型的确定摘要对美国人口数据的变化进行拟合,并进行未来人口预测,在第一个模型中,考虑到人口连续变化的规律,用微分方程的方法解出其数量随时间变化的方程,用matlab里的cftool工具箱求出参数,即人口净增长率r=0.02222,对该模型与实际数据进行对比,并计算了从1980年后每隔10年的人口数据,与实际对比,有很大出入。
因此又改进出更为符合实际的阻滞增长模型,应用微分方程里的分离变量法和积分法解出其数量随时间变化的方程,求出参数人口增长率r=0.02858和人口所能容纳最大值m x=258.9,与实际数据对比,拟合得很好,并预测出1980年后每隔10年的人口数据,与实际对比,比较符合。
为了便于比较两个模型与实际数据的描述情况作对比,又做出了两个模型与实际数据的对比图,以及两个模型的误差图。
关键词:人口预测微分方程马尔萨斯人口增长模型阻滞增长模型一、问题重述1790-1980年间美国每隔10年的人口记录如下表所示。
表1 人口记录表试用以上数据建立马尔萨斯(Malthus)人口指数增长模型,并对接下来的每隔十年预测五次人口数量,并查阅实际数据进行比对分析。
如果数据不相符,再对以上模型进行改进,寻找更为合适的模型进行预测。
二、问题分析由于题目已经说明首先用马尔萨斯人口增长模型来刻划,列出人口增长指数增长方程并求解,并进行未来50年内人口数据预测,但发现与实际数据有较大出入。
考虑到实际的人口增长率是受实际情况制约的,因此,使人口增长率为一变化的线性递减函数,列出人口增长微分方程,求出其方程解,并预测未来五十年内人口实际数据。
三、问题假设1.假设所给的数据真实可靠;2.各个年龄段的性别比例大致保持不变;3.人口变化不受外界大的因素的影响;4.马尔萨斯人口模型(1)单位时间的人口增长率r 为常数;(2)将()x t 视为t 的连续可微函数。
5.改进后的模型(阻滞增长模型)(1)人口净增长率r 为变化量。
四、变量说明()x t t 时刻的人口数量1790x 初始时刻的人口数量r 人口净增长率m x 环境所能容纳的最大人口数量,即()0m r x =五、模型建立1.马尔萨斯人口增长模型t=1790时的人口数为1790x ,在t 到t+Δt 这一时间间隔内,人口的增长为 由于0()()'()lim t x t t x t x t t→+-= 则得到可建立含初始条件的微分方程'()x t =()rx t , 1790(1790)x x ==3.9(省略10^6)其解为(1790)1790()r t x t x e -=2.阻滞增长模型假设人口增长生长率为人口()x t 的线性递减函数,即m x 。
假设自然资源和环境条件所能承受的最大人口容量为m x ,显然,当m x x =时,0()m m r x r xr ==-。
所以/m s r r =。
因此有()/m r x r rx r =-。
于是建立下列微分方程()'()(1)()mx t x t r x t x =-,(1790) 3.9x =。
把上式化为11()(1790)mdx rd t x x x -=--。
分离常数并积分得到:(1790)17901(1)m m r t x x x e x --=+-。
六、模型求解1.马尔萨斯模型求解参数估计:r 可以用实际数据的线性最小二乘法求解,对于(1790)1790()r t x t x e -=,直接求解是比较麻烦的,因此在两边取对数,即1790ln ()ln (1790)x t x r t =+-,记ln ()x t y =,1790ln ln3.9 1.36x ===a 。
则原方程化为(x) = 3.9*exp(r*(t-1790))。
利用1790—1900年的数据进行拟合, 得到r=0.02142.所以也能求出方程程序见附录1。
但本题还可以应用matlab 里的cftool 工具箱求参数,在命令行中输入得到更精确的解: General model:f(x) = 3.9*exp(r*(t-1790))Coefficients (with 95% confidence bounds):r=0.02222(0.02163,0.02281)得到如图所示结果,其中蓝线表示马尔萨斯人口模型预测人口数据,正方形黑点表示实际人口数据。
图1.马尔萨斯人口模型与实际人口数据则每隔10年预测人口为:1990332.1x =,2000412.8x =, 2010517.7x =,2020646.5x =,2030799.3x =,然而查阅相关年份美国实际人口数据,1990年为248.7百万,2000年为281.4百万,2010年为307.0百万。
对于2020年和2030年实际还没有统计,因为没有发生,但通过前三个数据就可以看出马尔萨斯模型预测人口与实际有很大出入,所以必须对该模型做出改进,得到更符合实际的预测模型。
2.阻滞增长模型求解通过对'()x t 求导得拐点在/2m x x =时,人口增长速度最大。
在问题分析已经得到该模型的表达式,运用matlab 里的cftool 工具箱拟合求出参数:General model:f(x) = a*3.9/(3.9+(a-3.9)*exp(-r*(t-1790)))Coefficients (with 95% confidence bounds):a = 285.9 (257.4, 314.4)r = 0.02858 (0.02763, 0.02953) 因此0.02858(1790)285.9285.91(1)3.9t x e --=+- 。
并得到如下图,蓝线表示组织增长模型预测数据,黑点表示实际人口数据。
图2.组织增长模型预测数据与实际人口数据根据该方程预测得到1990x =230.92,2000x =242.51,2010x =252.02,2020x =259.67,2030x =265.71.其中1990,2000,2010年这三年的预测人口数斗鱼实际人口数据很接近。
但还是有一定的误差,模型也存在一定的改进程度才能更符合实际情况。
但从图形看,与实际拟合的很好。
3.为了便于比较两种模型与实际数据的直观对比,编出程序附录2把他们放在一个坐标系里。
图3.两个模型与实际人口数据的对比图形虽然直观,但不具体,因此应算出两种模型与实际的误差值比较,程序见附录 3.得到下图。
图4.马尔萨斯模型与阻滞增长模型误差的比较从图中可以看出阻滞增长模型的误差更小。
七、结果分析1.马尔萨斯模型结果分析则每隔10年预测人口为:1990332.1x =,2000412.8x =, 2010517.7x =,2020646.5x =,2030799.3x =,然而查阅相关年份美国实际人口数据,1990年为248.7百万,2000年为281.4百万,2010年为307.0百万。
对于2020年和2030年实际还没有统计,因为没有发生,但通过前三个数据就可以看出马尔萨斯模型预测人口与实际有很大出入,所以必须对该模型做出改进,得到更符合实际的预测模型。
2.阻滞增长模型结果分析根据该方程预测得到1990x =230.92,2000x =242.51,2010x =252.02,2020x =259.67,2030x =265.71.其中1990年实际人口为248.7百万,2000年为281.4百万,2010年为307.0百万,这三年的预测人口数与实际人口数据很接近。
但还是有一定的误差,模型也存在一定的改进程度才能更符合实际情况。
但从图形看,与实际拟合的比较好。
八,模型的评价与推广 Malthus 数学模型在短期内具有较好的准确度,简易易行,但是不能准确的预测处人口长期的发展趋势,不具有预测人口长期增长数量的能力。
为此,结合资料,考虑到一些实际因素,建立了能很好滴预测人口数量增长的logstic 模型。
在人口增长的整个过程中logistic 模型预测的数据与题中所给数据能很好地在误差范围内,几乎一致。
但由于也存在误差,因此也可以通过相关多项式拟合出其方程,也是可以的,比如二次多项式,但次数不一定越高越好,应使模型所预的数据与实际数据更接近,才是比较好的模型。
logistic 模型在人口预测中,在医疗卫生中可以预测寻找某一疾病的危险因素(以及疾病的发展趋势),预测自然界中种群数量的增长等都发挥着巨大的作用。
九、参考文献[1]王玉英 王建国史加荣 鲁萍. 数学建模及其软件实现 北京:清华大学出版社,2015.[2]赵凤群 戴芳 王小侠 肖艳婷 数学实验基础 西安理工大学理学院2013十、附录程序1 马尔萨斯模型的线性解法t0=[1790:10:1980];X0=[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];plot(t,x,'o');n=1;a=polyfit(t0,x0,n);y=log(x);p=poly2sym(a)程序2 人口数量实际值与两种模型预测数据对比图clear;t=[1790:10:1980];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];nx1=3.9*exp(0.02222.*(t-1790));nx2=285.9./(1+72.31*exp(-0.02858.*(t-1790)));plot(t,x,'r',t,nx1,'b',t,nx2,'g');legend('实际值','马尔萨斯模型','¸阻滞增长模型')程序3 两种模型误差散点图clear;t=[1790:10:1980];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];nx1=3.9*exp(0.02222.*(t-1790));nx2=285.9./(1+72.31*exp(-0.02858.*(t-1790)));W1=(x-nx1)./x;W2=(x-nx2)./x;plot(t,W1,'*',t,W2,'x');legend('马尔萨斯模型误差','阻滞增长模型误差')。