全国大学生数学建模比赛论文中国人口预测模型

更新时间:2023-04-28 09:22:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中国人口预测模型

摘要:人口数量的变化,关系到一个国家的未来。认识人口数量的变化规律,建

立人口模型,能够较准确的预报,是有效控制人口增长的前提。本文对人口预测的数学模型进行了研究.首先,建立人口指数模型、Logistic模型及灰度预测模型.对我国2005年以后45年的人口增长进行了预测,根据1982年人口基本数据运用模型对1982年~2005年进行了预测,并用实际数据对预测结果进行了检验。

我们将预测区间分为2006~2030年、2030~2050年两个区间,以量化未来我国短中期与长期的人口变化。

关键词:人口数量的变化人口指数模型 Logistic模型灰度预测模型MATLAB Excel

1 / 17

目录

第一部分问题重述 (3)

第二部分问题分析 (3)

第三部分模型的假设 (3)

第四部分定义与符号说明 (3)

第五部分模型的建立与求解 (3)

5。1模型一 (3)

5.2模型二 (8)

5.3模型三.........................................................................(12)第六部分对模型的评价............................................................(14)第七部分参考文献..................................................................(15)第八部分附表 (15)

2 / 17

3 / 17

一、问题重述

人口问题始终是制约我国发展的关键因素之一。本题要求根据已知数据,运用数学建模的思想对我国人口做出分析和预测。具体问题如下:

从中国的实际情况和人口增长的特点,例如我国老龄化进程加快、出生人口性别比持续升高、乡村人口城镇化等,利用参考附录中所提供的数据,建立中国人口增长的数学模型,由此对中国人口增长的中短期和长期趋势做出预测,并指出模型的优缺点。

二、 模型假设

1、假设题目所给的数据真实可靠;

2、假设不考虑我国人口大规模的朝国外迁移,也不考虑外国人大量涌入我国; 3、假设不考虑战争、自然灾害、疾病对人口数目和性别比的影响;

4、假设在本世纪中叶前,我国计划生育政策稳定。

5、假设中短期内生育率和死亡率保持相对稳定

6、假设相同年龄段人口性别比基本稳定。

7、假设人口生育率不受传统观念和个人主观因素的影响。

三、符号说明

符号说明:由于符号较多,在以后的模型中具体给出

四、问题分析

人口发展过程的定量预测,需要预测出未来的人口发展趋势,人口出生、死亡和自然增长率的变化以及在未来的人口构成等各项人口指数全部测算出来.人口增长的决定因素为出生率、死亡率和人口基数,鉴于我国人口问题已有多方面的研究,我们针对近年来我国的人口发展出现的一些新特点,忽略国际人口流动,故可以认为我国人口为一个封闭的系统。对于封闭的系统来说 ,某时刻人口总量=人口基数+新生人口数—死亡人口数。

五、模型的建立与求解

5.1.模型一:指数增长模型[1]

(一)、模型建立:

记t 时刻的人口数为()x t ,当考察一个国家的人口时,()x t 为一个人很大的整数。利用微积分这一数学工具,将()x t 看作一个连续、可微函数。记初始时刻

4 / 17

(0t =)的人口为0X 。假设人口增长率为常数r ,即单位时间内()x t 的增量等于

r 乘以()x t .考虑到t 到t t +?时间内人口的增量,显然有:

()()x t t rx t t +?=?

(5.1.1)

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

0,(0)dx

rx x x dt

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

()

()(0)dx t rx t dt

x X ?=?

??=? (5.1.2)

(二)、模型求解

解微分方程(5。1.2)得:

.()0()r t t X t X e -=

(5.1.3)

表明:t →∞时,(0)t x r →∞> 1982年人口自然增长率为1.1%,011.98504X =

为了能对比Malthu s模型计算的长期值和实际值,取1982年~2005年数

根据Malthu s模型,用M at lab 计算1994~2005各年的人口总数,程序:

> t=[1982:1:2005];

t0=1982;

x=10。1654*exp(0.014*(t—t0));

〉〉x

计算结果

x =

Columns 1 through 11

10。1654 10.3087 10.4541 10.6014 10。7509 10.9025 11。0562 11。2121 11.370111。5304 11。6930

Columns 12through 22

11.8578 12.0250 12.194612.3665 12.5408 12。717612。8969 13.0788 13.2632 13.4501 13.6398

Columns23 through 24

13。8321 14.0271

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

程序:

t=[1982 1983 1984 1985 1986 1987 1988 19891990 1991 19921993 1994 19951996 19971998 19992000 2001 2002 20032004 2005];

x=[101654 103008 104357 105851 107507 109300 111026 112704114333 115823 117171 115817 119850 121121 122389123626 124761 125786 126743 127627 128453 129227 129988 130628]; plot(t,x);

hold on

y=[101654 103087 104541 106014 107509 109025110562 112121 113701 115304116930 118578 120250 121946 123665 125408 127176128969 130788 132632 134501 136389138321 140271];

plot(t,y,'r*');

legend('实际值’,’预测值’);

hold off

xlabel('年份’);

ylabel('总人口数');

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

grid;

5 / 17

6 /

17

(图一)

(三)、结果分析

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

用M alt hus 模型预测人口总量的相对误差

程序:

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 118017 119850 121121 122389

123626 124761 125786 126743 127627 128453 129227 129988 130628];

y=[101654103087 104541 106014 107509 109025 110562 112121 113701115304116930 118578 120250 121946 123665 125408 127176 128969130788132632 134501 136389 138321 140271];

z=abs(y-x)./x;

plot(t,z);

xlabel('年份');

ylabel('误差');

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

grid;

(图二)

(四)、预测

程序:

〉> t=[2005:1:2030];

t0=2005;

x=13。0628*exp(0.006*(t—t0));

>> x

7 / 17

8 / 17

计算结果 x =

Colu mns 1 thro ugh 11

13.0628 13.1414 13.2205 13。3001 13。3801 13.4606 13.5416 13。6231 13。7051 13.7876 13。8706

Colum ns 12 throug h 22

13.9540 14。0380 14.1225 14。2075 14。2930 14。3790 14.4655 14.5526 14。6402 14.7283 14。8169

Col umn s 23 through 26

14.9061 14.9958 15.0860 15。1768

5.2:模型二Logisti c曲线预测模型[3] (一)、模型的建立

假定第 00t =年的人口为(0)x ,人口增长率为r ,则第t 年的人口为

()(0)(1)t x t x r =+

(5.2。1)

经过简单的数学变换,上面递推公式的通用项可以化为指数形式

0()rt x t x e =

9 / 17 (5。2.2)

假定变量连续,求导得到齐次方程

()()dx t rx t dt

= (5。2.3)

考虑到自然资源、环境条件等因素对人口的增长起阻滞作用,并且随着人口的增

加,阻滞作用越大,即人口增长率r 为人口总量()x t 的减函数。因此对上式做出

修改,加上一个表征环境约束因子的二次项2()qx t ,从而得到二阶 Be rno u

lli 式齐次方程

2()()()()()[1]m dx t x t rx t qx t rx t dt x =-=- (5.2.4)

这里q 为约束参数,/m x r q =表示区域饱和人口即最大人口容量。该方程的初始

条件和饱和条件分别为00(),()m x t x x t x =≤。解之得到 Logis tic 预测模型

0()1(1)m

rt

m x x t x e X -=+-

(5.2.5)

(二)、模型求解

用阻滞增长模型计算1982-2005年人口数量:

M atlab 程序:

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.015;

y=X m./(1+(Xm./X0-1)*ex p(-r *(t-t 0)))

计算结果

y =

Colu mn s 1 thr ough 12

10。1654 10。2752 10.3857 10。4969 10。6088 1

0。7213 10.8346 10.9485 11.0632 11.1784 11.29

44 11。4110

Columns 13 through 24

11。5282 11.6461 11。7646 11.8837 12。0034 12.1237 12。2446 12。3661 12.4881 12.6108 12。7339 12。8577

(三)、分析:

将计算值与实际值对比:

程序:

t=[1982 1983 1984 19851986 1987 1988 1989 1990 1991 1992 1993 1994 1995 19961997 1998 1999 2000 2001 2002 2003 2004 2005];

x=[101654 103008 104357105851 107507 109300 111026 112704114333 115823 117171 118017 119850 121121 122389 123626124761125786 126743 127627 128453 129227 129988 130628];

plot(t,x);

hold on

y=[101654 102752 103857 104969 106088107213 108346 109485 110632 111784112944 114110115282 116461 117646118837 120034 121237 122446 123661 124881 126108 127339 128577];

plot(t,y,’r*');

legend('实际值’,'预测值');

hold off

xlabel('年份');

ylabel(’总人口数’);

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

grid;

10 / 17

11 /

17

(图三)

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 118017 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130628];

y=[101654 102752 103857 104969 106088 107213 108346 109485 110632 111784 112944 114110 115282 116461 117646 118837 120034 121237 122446 123661 124881 126108 127339 128577];

z =a bs (y —x )。/x;

plo t(t ,z);

x lab el('年份');

y label (’误差’);

ti tle('计算值与实际值的相对误差');

g rid;

本文来源:https://www.bwwdw.com/article/517q.html

Top