数学建模:人口增长模型

数学建模:人口增长模型

模型目标:
通过给定的一组人口增长数据,预测后续的人口增长情况.

一、指数增长模型

假设增长率不变:

若已知人口年增长率为r,今年人口为 x 0 x_0 x0,预测k年后的人口可以用简单的公式得到:
x k = x 0 ( 1 + r ) k x_k = x_0(1+r)^k xk=x0(1+r)k
*以美国人口为例,数据点取下表:
请添加图片描述
用matlab输入好数据:

p = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 105.7	122.8 131.7 150.7 179.3	203.2 226.5	248.7 281.4];

该公式得到的人口增长模型如下图(matlab作图):
在这里插入图片描述
选取的增长率0.2与实际的人口数据点贴合度差,于是进一步建立模型,找到偏差更小的增长率r

精确化增长率r

把人口看作关于时间的可微函数 x ( t ) x(t) x(t),记 x ( 0 ) = x 0 x(0) = x_0 x(0)=x0
r x 0 rx_0 rx0 即为单位时间 x ( t ) x(t) x(t) 的增长量
所以得到微分方程:
d x d t = r x , x ( 0 ) = x 0 \frac{dx}{dt} = rx , x(0)=x_0 dtdx=rx,x(0)=x0
解得:
x ( t ) = x 0 e r t x(t) = x_0e^{rt} x(t)=x0ert
上述公式即位指数增长模型

数据拟合:

接下来对指数增长模型的参数进行估计,即数据拟合

·法一

用人口数据和线性最小二乘法,对上式取对数:
y = r t + a , y = l n x , a = l n x 0 y = rt +a , y=lnx,a=lnx_0 y=rt+a,y=lnx,a=lnx0
用matlab进行编程拟合:

%取1790年为t=0,数据点取到2000年
t=0:10:210;
lnp = log(p);
cftools

请添加图片描述
解得:
r = 0.202 , x 0 = e 1.8 = 6.049 r = 0.202,x_0 = e^{1.8} = 6.049 r=0.202,x0=e1.8=6.049
带入得 x ( t ) = 6.049 e 0.0202 t x(t) = 6.049 e^{0.0202t} x(t)=6.049e0.0202t
在这里插入图片描述
·法2
对人口数据做数值微分,计算平均值r‘,x0直接选用原始数据.
函数在各点的近似导数值为(数值微分中点公式):
x ′ ( t k ) = x k + 1 − x k − 1 2 Δ t ,   ( k = 1 , 2 , 3 , . . . , n − 1 ) x'(t_k) = \frac{x_{k+1}-x_{k-1}}{2\Delta t},\\\ \\(k=1,2,3,...,n-1) x(tk)=txk+1xk1, (k=1,2,3,...,n1)
x ′ ( 0 ) = 4 x 1 − 3 x 0 − x 2 2 Δ t , x ′ ( n ) = − 4 x n − 1 + 3 x n + x n − 2 2 Δ t x'(0) = \frac{4x_1-3x_0-x_2}{2 \Delta t}, x'(n) = \frac{-4x_{n-1}+3x_{n}+x_{n-2}}{2 \Delta t} x(0)=t4x13x0x2,x(n)=t4xn1+3xn+xn2
那么增长率为: r ( t k ) = x ′ ( t k ) x ( t k ) r(t_k)=\frac{x'(t_k)}{x(t_k)} r(tk)=x(tk)x(tk)

*公式相关推导可参考数值计算方法 第六章 数值积分和数值微分

增长率 r k = x ′ ( t k ) x ( t k ) r_k=\frac{x'(t_k)}{x(t_k)} rk=x(tk)x(tk)再取平均值得到r = 0.0205
在这里插入图片描述

改进的指数增长模型

上述模型对于增长率r不变的假设导致预测曲线与实际偏差较大
所以改进模型中假设 rt 的函数 r ( t ) r(t) r(t) , 根据上述法2的 x ′ ( t ) x'(t) x(t) 画r—t图像:

r=[];
for i=1:22
    if i == 1
        r(i)=(4*p(i+1)-3*p(i)-p(i+2))/(20*p(i));
    elseif i == 22
        r(i)=(-4*p(i-1)+3*p(i)+p(i-2))/(20*p(i));
    else
        r(i)=(p(i+1)-p(i-1))/(20*p(i));
    end
end
plot(t,r,'.','MarkerSize',20);
ylim ([0.005,0.04]);
xlabel('t');
ylabel('增长率r');

在这里插入图片描述
根据散点图假设 r ( t ) = r 0 − r 1 t r(t)=r_0-r_1t r(t)=r0r1t的线性函数,用最小二乘法线性拟合得到:请添加图片描述
r 0 = 0.03252 ,   r 1 = 0.0001143 r_0 = 0.03252,\space r_1 = 0.0001143 r0=0.03252, r1=0.0001143
根据微分方程:
d x / d t = r ( t ) x dx/dt=r(t)x dx/dt=r(t)x
⇒ x ( t ) = x 0 e ( r 0 t − r 1 t 2 / 2 ) \Rightarrow x(t) = x_0 e^{(r_0t-r_1t^2/2)} x(t)=x0e(r0tr1t2/2)
把拟合后的参数带入:

xt2 = 3.9.*exp(0.03252.*t-0.0001143.*t.^2./2);
plot(t,xt2,'LineWidth',1);

在这里插入图片描述
最终根据改进模型预测的2010年人口为290million,与实际数据281.4吻合度较高.显然改进后的模型优于前两者.

二、logistic模型

改进的指数增长模型中增长率线性下降,但没有体现其下降的相关影响因素,只是以时间为变量.logistic模型考虑了自然资源,环境等对人口增长的阻滞作用.

未完…

中国人口问题 2017年3月11日,国家卫计生委主任李斌、副主任王培安在十二届全国人大五次会议新闻中心举行的记者会上指出,中国的人口问题不缺数量,不光是现在不缺,未来几十年,未来一百年都不会缺人口数量。到2030年峰值时期,中国人口将有14.5亿左右,到2050年还有14亿左右的人口。全面放开二胎以后,国家卫计生委预测2017年全国人口出生数量预测最低值2023万,最高2300万。而国家统计局公布的2017年实际出生人口1723万人,比卫计生委预测最低值少300万人,其中二孩比例占51%【也就是说如果不实施二胎政策,全国只出生850万】 目前关于中国人口问题有乐观和悲观两种对立观点:一种认为我国人口基数大,今后应继续控制人口;另一种则认为,我国人口正在“坍塌”,危及经济发展和民族生存。 1. 请你(们)选择或提出若干人口关键指标,例如14岁以下人口占总人口比例,60岁以上人口占总人口比例,一对夫妇平均生育孩子数量,1980-2017全国小学生数量,全国人口平均年龄(核算每种指标社会正常运行的最低值、最高值及我国若干年后例如2030年,2050年,2100年的数值),建立数学模型,预测和分析我国人口发展态势,给出我国人口2030,2040,2050年的人口总数和结构(14岁以下和60岁以上人口占总人口的比例)。 2. 查阅相关数据,综合考虑目前90后生育观念(有的人认为90后多数一个孩子都不愿意要或不敢要,很多人不愿意结婚或结不起婚)、经济情况和生存压力、孩子就医和上学代价、人口结构(性别比)研究和预测2018-2025年我国每年人口出生情况。 3. 根据你们研究结果,向国家卫生健康委员会提交1份报告,提出你们的人口政策建议。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Freshman小姜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值