0
点赞
收藏
分享

微信扫一扫

Malthus模型预测人口增长

外贸达人小峻先森 2022-01-31 阅读 69
算法

最近在学习人口数量的预测时,除了用 Malthus 和 Logistic 这两种方法进行拟合之外,还有一个新的方法——Leslie矩阵模型。

首先先讲讲 Malthus 拟合,这是由英国的人口学家 Malthus 提出,用于预测人口增长状况的一种方法;令时刻 t 的人口数为 x(t) ,不妨将 x(t) 看作是个连续的、可微的函数。时刻 t = 0,的人口数为 x0 ,假设人口增长率为常数 r ,则在 \textrm{t~$\sim$ t}+\Delta t 时间内人口的增量可以表示为:

x(t+\Delta t) - x(t) = rx(t)\Delta t

若 \Delta t\rightarrow 0 ,则可以得到:

\left \{ \begin{aligned} \frac{x(t+\Delta t)-x(t)}{\Delta t} = rx(t) \Rightarrow \frac{dx}{dt} = rx \\ x(0) = x_{0} \end{aligned} \right .\Rightarrow \space x(t) = x_{0}e^{rt} \qquad(1)

clear;
clc;
syms x0;
dsolve('Dx = r*x','x(0) = x0','t')

这里增加两个概念

1、人口平均增长速率:

 \frac{x(t+\Delta t)-x(t)}{\Delta t} = \frac{\Delta x}{\Delta t} \qquad(2)

2、人口平均相对增长速率:

\frac{x(t+\Delta t)-x(t)}{x(t)\Delta t} = \frac{\Delta x}{x(t)\Delta t} \quad(3)

一般来说人口平均相对增长率是稳定的,与人口基数无关。

参考了大多数资料后发现大多数都是用下方公式近似求解

x(t) = x_{0}e^{rt} \approx x(t) = x_{0}(1+r)^{t} \quad (4)

\lim_{n\rightarrow \infty } (1+\frac{1}{n})^{n} = e

不妨对(4)式的近似两边同时取对数,可以得到:

lnx_{t} = lnx_{0} + t\times ln(1+r)

一般数据会给出多个年份的人口数,也就是 x(t) 、x0 和 t 都已知,可利用线性拟合,拟合出上述公式,求出增长率 r ,进而预测未来的人口数。

优点:参数少,计算简单,在数据没有较大的异常或者误差时,可以得到比较好的预测结果。   

缺点:当时间趋向无穷大时,预测的结果也会趋向无穷大,这明显不符合现实,也就是这个模型没有考虑人口数增长受到多方面的控制,比如:自然资源有限、政府政策等等。

% 美国人口数的计算
clear;
clc;
Y = [1900:10:2000]; % 年份
pp = [76 92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4]; % 人口数/百万population

Y = input('请输入年份');
pp = input('请输入对应年份的人口数');

y = log(pp);
x = Y-Y(1); % 转化为 0,1,2,3……
P = polyfit(x,y,1);
r = exp(P(1))-1
x0 = exp(P(2)) % Y(1)时候的人口数

plot(Y,pp,'*');
hold on;

xi = x(end)+(x(2)-x(1)).*[1:5]; % 预测后面5年的人口数
xn = [x xi];
Yn = xn + Y(1);
yn = polyval(P,xn);
ppn = exp(yn);

plot(Yn,ppn)

上面例子得到的结果如下:

过点时间再接着写 Logistic 模型和 Leslie 矩阵模型

参考:《数学建模竞赛入门与提高》周凯,宋军全,邬学军

 

举报

相关推荐

0 条评论