微分方程模型

人口模型

1. Malthus(马尔萨斯人口模型)

变量表示:

  • (t, P(t)):表示人口的数对,t为时间,P(t) 为 t 时刻的人口数
  • b, p:分别表示出生率、死亡率

​ 比如说,2002年年初人口总数是 p ,则2002年出生的人数和死亡的人数就分别是 bp 和 dp . 所以,2003年年初的人口总数是

p+bpdp=(1+b+d)p=(1+r)pp + bp -dp = (1 + b + d) p = (1 + r)p

  • 这里的 r 是自然增长率。该模型是离散的,但是人口数很大,人口变化(人的生死)是在短时间内随时在发生,故可以看成是连续模型。

  • 类似于瞬时速度,t 时刻的人口增长率,为人口平均增长率在所用时间趋于 0 时的极限:

    r(t)=limt0P(t+t)P(t)tr(t) = lim_{▵t\rightarrow0}\frac{P(t+▵t)-P(t)}{▵t}

    假设:

    • 人口发展过程比较平稳;
    • 人口数量为时间的连续可微函数;
    • 人口增长率是与时间无关的常数 ;

由前面的分析可得
P(t+t)P(t)=rP(t)tP(t+▵t)-P(t)=rP(t)▵t

P(t+dt)P(t)=rP(t)dtP(t+dt)-P(t)=rP(t)dt (离散形式)

dP(t)dt=rP(t)\frac{dP(t)}{dt}=rP(t) , P(t0)=P0P(t_0)=P_0 (连续形式)

进一步得到 Malthus 人口模型

P(t)=P0er(tt0)P(t)=P_0e^{r(t-t_0)}

MATLAB代码求解

syms r P(t) t0 P0
eqn=diff(P,t)==r*P;
cond=P(t0)==P0;
PSol(t)=dsolve(eqn, cond);  % 返回符号函数symfun
simplify(PSol(t))

运行结果:
ans=P0*exp(r*(t - t0))

2 . Logistic人口模型

  1. 阻滞增长模型

    ​ Malthus人口模型假设人口增长率 r 为常数,导致了人口指数增长到无穷,这是不合理的。因为没有考虑到有限的资源对种群的增长会产生遏制作用。

假设

  • 人口增长率是人口数量的递减函数;

  • 确定的环境内的资源供给为常数,且对每个个体的分配是均等的。这表明:当人口规模(密度)增大时,每个人食物的平均分配量必然减少,从而导致人口增长率降低。

  • (对人口增长率做修正):让它不再是常数 r,而是时间 t 的函数 ,让它通过 t 时刻人口数量来起作用,假设是这样作用:

    r(t)=r(P(t))=r(1P(t)K)r(t)=r(P(t))=r(1-\frac{P(t)}{K})

    这里 K 为新引入的参数,表示地球所能容纳的最大人口数量。

​ Malthus 时代, P(t) 相对于 K 来说很小,括号项很接近1,所以也就合理了。若取 K=+∞,就退化为 Malthus 人口模型。
​ 用 N(t) 表示 t 时刻的人口数,类似 Malthus 人口模型,可得到 Logistic 人口模型:

dN(t)dt=r(1N(t)K)\frac{dN(t)}{dt}=r(1-\frac{N(t)}{K})

N(t0)=N0N(t_0)=N_0

仍用分离变量法就能求解:N(t)=k1+Cer(tt0)N(t)=\frac{k}{1+Ce^{-r(t-t_0)}}

其中 C=KN0N0\frac{K-N_0}{N_0}

MATLAB代码求解

syms r K N(t) t0 N0
eqn = diff(N,t) == r * (1 - N/K) * N;
cond = N(t0) == N0;
NSol(t) = dsolve(eqn, cond)  % 返回符号函数symfun
simplify(NSol(t))

运行结果:

Nsol(t) = K/(exp(K*((log(K/N0-1) + r*t0)/K – (r*t)/K)) + 1)
  ans =(K*N0*exp(r*(t – t0)))/(K - N0 + N0*exp(r*(t - t0)))

考察时间 t 趋近于无穷大时的极限,可以发现结果与 Malthus 模型完全不同!

具体做法:

​ 1.先粗略(目测)估计一个 ψ\psi ,它是容纳量的界限,拐点处是它的一半,

​ 有了它再对 N(t)ψ\frac{N(t)}{\psi} 做 Logit 变换。

  1. 再用线性回归估计系数 ψ2\psi_2,ψ3\psi_3,这样就得到了要估计的3个参数较好的一
    组初始值。
  2. 有了这 3 个参数的较好的初始值,再做原模型的非线性拟合。

3 . Leslie 人口模型

​ 只对人口总量建模是不够的,特别是需要研究和年龄段有关的问题:老龄化、劳动力人口等。这就需要关注人口的年龄分布(每个年龄段人口的数量),适合的数学模型是基于差分方程理论的Leslie模型。
​ Leslie模型,是基于年龄和性别,将人口各年龄段的发展过程建立差分方程组,引入矩阵表示后可变成离散矩阵模型。
Leslie模型构建的基本原理:首先将人口按性别分组,针对女性人口,选择某初始时期,记分年龄段的女性人口数作为一个列向量;然后通过各年龄段生育率、存活率构建 Leslie 人口矩阵;接着,用Leslie人口矩阵左乘分年龄段的女性人口向量,得到新的列向量即为预测的下一阶段分年龄段的女性人口向量;最后,根据男女性别比例推算出人口总数,根据预测年龄分布可以计算平均年龄、平均寿命、老龄化指数、抚养指数等。

对女性人口按年龄切分,记为按年龄段的女性人口向量:

image-20230729205614140

例如,0~4岁用 n0n_0表示,5~9岁用n1n_1表示,……,85-89岁用ns1n_{s-1} 表示,90岁及以上用 nsn_s表示,各年龄段女性人口的转移关系如下:

image-20230729205844389

​ 各年龄段女性人口的转移关系图