您的当前位置:首页正文

中国人口预测模型

2023-02-02 来源:欧得旅游网
全国大学生数学建模竞赛

承 诺 书

我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.

我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。

我们参赛选择的题号是(从A/B/C/D中选择一项填写): A 我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写完整的全名): 西安理工大学 参赛队员 (打印并签名) :1. 2. 3. 指导教师或指导教师组负责人 (打印并签名):

日期: 20011 年 7 月4 日

赛区评阅编号(由赛区组委会评阅前进行编号):

中国人口增长模型

摘要:人口数量的变化,关系到一个国家的未来。认识人口数量的变化规律,建立人口模型,能过较准确的预报,是有效控制人口增长的前提。针对题目所提要求,我们首先建立了Malthus模型。此模型假设人口增长率为常数,即人口按指数增长。但实际上人口增长率受环境、资源等多重因素影响,并不是常数。用Malthus模型计算1982~2005年的中国人口总量并与实际值比较发现,在短期内(1982~1995)Malthus模型能过较准确的计算出人口总量,但中长期的计算值误差较大,所以此模型只适用于短期的人口预测。为使人口预报特别是中长期预报更好地符合实际情况,必须修改指数增长模型关于人口增长率是常数这个基本假设。分析人口增长到一定数量后增长率下降的主要原因,注意到,自然资源、环境条件等因素对人口起着阻滞作用,并随着人口的增加,阻滞作用越来越大。假设人口增长率随着人口总量的增加线性递减,从而建立了性能更好的Logistic模型。经对比发现,作为短期预测,Malthus模型和Logistic模型不相上下,但作为中长期预测Logistic模型比Malthus模型更合理一些。

1

一.问题重述

根据中国1982~1998年的人口统计数据,取1982年为起始年(t=0),1982年的人口101654万人,人口自然增长率为14%,以36亿作为我国人口的容纳量,试建立一个较好的人口数学模型并给出相应的算法和程序,并与实际人口进行比较。 时间(年) 人口(万人) 时间(年) 人口(万人) 时间(年) 人口(万人) 1982 1983 1984 1985 1986 1987 101654 103008 104357 105851 107507 109300 1988 1989 1990 1991 1992 1993 111026 112704 114333 115823 117171 115817 1994 1995 1996 1997 1998 119850 121121 122389 123626 124761 二.模型假设 (1)x(t)表示t时刻我国人口总数,我们将x(t)看成t的连续函数;

(2)对一个国家而言,迁入和迁出人数相对很少,故略去迁移对人口变化的影响,即人口数量变化仅与出生率和死亡率有关;

(3)每一社会成员的死亡与生育水平相同,即人口死亡率与出生率之差与人口总数成正比。

三.符号说明

t:统计总人口数量的时间; xt:t时间的总人口数;

X0:初始时候的总人口数,即1982年的总人口数; r:人口自然增长率;

xm:自然资源和环境条件所能容纳的最大人口数量。

四.模型建立

模型一:指数增长模型(马尔萨斯模型)

1.模型建立:记t时刻的人口为xt,当考察一个国家的人口时,xt为一个很大的整数。利用微积分这一数学工具,将xt视为连续、可微函数。记初始时刻(t=0)的人口为X0。假设人口增长率为常数r,即单位时间内xt的增量等于r乘以xt.考虑到t到tt时间内人口的增量,显然有:

x(tt)x(t)rx(t)t (1)

2

令t0,得到xt满足微分方程

dxrx , x(0)x0 dt

于是X(t)满足微分方程:

dx(t)rx(t) (2) dtx(0)X02.模型求解:

解得微分方程(2)得:

X(t)=X0er(tt0) (3)

表明:t时,xt(r0)

1982年人口自然增长率r为14‰,X0101654

为了能对比Malthus模型计算的长期值和实际值,取1982~2005年数据: 时间(年) 人口(万人) 时间(年) 人口(万人) 时间(年) 人口(万人) 时间(年) 人口(万人) 1982 1983 1984 1985 1986 1987 101654 103008 104357 105851 107507 109300 1988 1989 1990 1991 1992 1993 111026 112704 114333 115823 117171 115817 1994 1995 1996 1997 1998 1999 119850 121121 122389 123626 124761 125786 2000 2001 2002 2003 2004 2005 126743 127627 128453 129227 129988 130628 根据Malthus模型,用Matlab计算1982~2005各年的人口总数,程序: t=[1957 1962 1965 1970 1975 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011] ; t0=1957;

x=4840*exp(0.014*(t-t0)); x

format short

计算结果:

3

x =

Columns 1 through 14

10.1654 10.3087 10.4541 10.6014 10.7509 10.9025 11.0562 11.2121 11.3701 11.5304 11.6930 11.8578 12.0250 12.1946

Columns 15 through 24

12.3665 12.5408 12.7176 12.8969 13.0788 13.2632 13.4501 13.6398 13.8321 14.0271

用Matlab软件将计算值与实际人口总数进行对比:

程序:t=[1957 1962 1965 1970 1975 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011] ;

x=[4840 5191 5414 5806 6227 6868 6965 7063 7163 7264 7366 7470 7575 7682 7791 7900 8012 8125 8239 8355 8473 8593 8714 8837 8961 9088 9216 9346 9477 9611 9747 9884 10023 10165] plot(t,x);

hold on

y=[4840 4940 5240 6026 6758 7519 7632 7737 7985 8158 8317 8491 9649 8763 8861 8946 9027 9100 9172 9243 9315 9387 9488 9555 9613 9667 9717 9768 9820 9869 9918 9967 9405 9388]; plot(t,y,'r*');

legend('实际值','预测值'); hold off

xlabel('年份');

ylabel('总人口数');

title('模型计算值与实际值对比'); grid;

4

1.451.41.351.3x 105模型计算值与实际值对比 实际值预测值总人口数1.251.21.151.11.051 198019851990年份199520002005

3.结果分析

从1982年起在较短的一段时间内(1982~1995)用Malthus模型计算的值与实际人口总数很接近,相对误差均在1%以下。后面的时期(1995~2005)相对误差较大,并且随着年份的增加计算值会越来越大。这表明此模型能够比较准确地计算短期内人口的数量。但长期来看,任何地区的人口都不可能无限增长,即指数模型不能描述较长时期的人口演变过程。这是因为,人口增长率事实上是不断变化的。排除灾难,战争等特殊时期,一般来说,当人口较少时,增长较快,即增长率较大;人口增加到一定数量以后,增长就会慢下来,即增长率变小。为了使人口预测特别是长期预报更好的符合实际情况,必须修改指数增长模型关于人口增长率是常数的假设。

用Malthus模型预测人口总量的相对误差: 程序:

t=[1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005]; %人口实际值

x=[101654 103008 104357 105851 107507 109300 111026 112704 114333 115823 117171 118517 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130628]; %人口计算值

y=[101654 103087 104541 106014 107509 109025 110562 112121 113701 115304 116930 118578 120250 121946 123665 125408 127176 128969 130788 132632

5

134501 136398 138321 140271]; %误差

z=abs(y-x)./x; plot(t,z);

xlabel('年份'); ylabel('误差');

title('计算值与实际值的相对误差'); grid

计算值与实际值的相对误差0.080.070.060.05误差0.040.030.020.010198019851990年份199520002005

模型二 阻滞增长模型(Logistic模型)

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

dxr(x)x, x(0)X0 (4) dt对人r(x)的一个最简单的假设是,设r(x)为x的线性函数,即:

r(x)rsx (r0,s0) (5)

其中r为固有增长率,为了确定系数s的意义,引入自然资源和环境条件所能容纳的最大人口数量xm。当xxm时人口不再增长,及增长率r(xm)0,代入(4)

6

式得sr,于是(4)式为: xmr(x)r(1x) (6) xm将(6)代入方程(4)式得

dxxrx(1) x(0)x0 (7) dtxm方程(7)右端的因子rx体现人口自身的增长趋势,因子1xxm则体现了资源和环境对人口增长的阻滞作用。显然,x越大,后一因子越大,人口增长是两个因子共同作用的结果。

方程(7)可以用分离变量法求解得到

x(t)xmxmrt11Xe0 (8)

2.模型求解:

用阻滞增长模型计算1982~2005年人口数量: Matlab程序:

t=[1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005]; t0=1982; Xm=36; X0=10.1654; r=0.014;

y=Xm./(1+(Xm/X0-1)*exp(-r*(t-t0))) 计算结果为: y =

Columns 1 through 14

10.1654 10.2678 10.3709 10.4746 10.5788 10.6837 10.7892 10.8953 11.0020 11.1092 11.2170 11.3254 11.4344 11.5439

Columns 15 through 24

11.6539 11.7646 11.8757 11.9874 12.0996 12.2123 12.3255 12.4393 12.5535 12.6682 3.结果分析:

将计算值与实际值对比:

7

1.35x 105模型计算值与实际值对比 实际值预测值1.31.25总人口数1.21.151.11.051 198019851990年份199520002005Logistic模型对短期预测误差较大,但长期预测的结果比Malthus模型更合理。

四.参考文献

[1]周义仓,赫孝良. 数学建模实验[M] .西安交通大学出版社.2007 209-212. [2]姜启源 谢金星 叶俊 数学模型[M] 北京:高等教育出版社 2010 9-15

8

3530252015100510152025

9

因篇幅问题不能全部显示,请点此查看更多更全内容