人口模型(Malthus模型、阻滞增长模型、美国人口的预报模型(例题,matlab工具箱求解))

Malthus模型

模型假设:

  1. x ( t ) x(t) x(t)表示 t t t时刻的人口数,且 x ( t ) x(t) x(t)连续可微。
  2. 人口的增长率 r r r是常数(增长率=出生率-死亡率)。
  3. 人口数量的变化是封闭的,即人口数量的增加与减少只取决于人口中个体的生育和死亡,且每一个个体都具有同样的生育能力和死亡率。

建模与求解

t t t时刻到 t + △ t t+\triangle t t+t时刻人口的增量为
x ( t + △ t ) − x ( t ) = r x ( t ) △ t x(t+\triangle t)-x(t)=rx(t)\triangle t x(t+t)x(t)=rx(t)t
于是得
{ d x d t = r x x ( t 0 ) = x 0 \begin{cases} \frac{dx}{dt}=rx\\ x(t_0)=x_0 \end{cases} {dtdx=rxx(t0)=x0
其解为
x ( t ) = x 0 e r t x(t)=x_0e^{rt} x(t)=x0ert

模型评价

该模型在预测1700-1961年间世界人口增长与实际情况较为符合,但是当 t 很大时,人口数量就大的惊人,这是因为增长率为常数,所以人口数一直在增加,但实际是增长率是变动的。

阻滞增长模型(Logistic模型)

  • 我们这里要对增长率进行修正。地球上得资源是有限的,随着人口数量的增加,资源对人口增长的限制作用越来越显著,即将增长率 r r r表示为人口 x ( t ) x(t) x(t)的减函数 r ( x ) r(x) r(x)

模型假设

  1. r ( x ) r(x) r(x) x x x的线性函数, r ( x ) = r − s x r(x)=r-sx r(x)=rsx(工程师原则,首先用线性)。
  2. 自然资源与环境条件所能容纳的最大人口数为 x m x_m xm,即当 x = x m x=x_m x=xm时,增长率 r ( x m ) = 0 r(x_m)=0 r(xm)=0

建模与求解

由假设可得 r ( x ) = r ( 1 − x x m ) r(x)=r(1-\frac{x}{x_m}) r(x)=r(1xmx),则有
{ d x d t = r ( 1 − x x m ) x x ( t 0 ) = x 0 \begin{cases} \frac{dx}{dt}=r(1-\frac{x}{x_m})x\\ x(t_0)=x_0 \end{cases} {dtdx=r(1xmx)xx(t0)=x0
其解为
x ( t ) = x m 1 + ( x m x 0 − 1 ) e − r ( t − t 0 ) x(t)=\frac{x_m}{1+(\frac{x_m}{x_0}-1)e^{-r(t-t_0)}} x(t)=1+(x0xm1)er(tt0)xm

模型检验

d 2 x d t 2 = r 2 ( 1 − x x m ) ( 1 − 2 x x m ) x \frac{d^2x}{dt^2}=r^2(1-\frac{x}{x_m})(1-\frac{2x}{x_m})x dt2d2x=r2(1xmx)(1xm2x)x
人口总数有以下规律:

  1. lim ⁡ x → + ∞ x ( t ) = x m \lim_{x\to+\infty}x(t)=x_m limx+x(t)=xm,即无论人口初值如何,人口总数都以 x m x_m xm为极限。
  2. 0 < x 0 < x m 0<x_0<x_m 0<x0<xm时, x ( t ) x(t) x(t)单调增加,且 x < x m 2 x<\frac{x_m}{2} x<2xm时, x ( t ) x(t) x(t)为凹函数, x > x m 2 x>\frac{x_m}{2} x>2xm时, x ( t ) x(t) x(t)为凸函数。
  3. 人口变化率 d x d t \frac{dx}{dt} dtdx x = x m 2 x=\frac{x_m}{2} x=2xm时取到最大值。

美国人口的预报模型

image.png

建模与求解

我们取初值 x ( 1970 ) = 3.9 x(1970)=3.9 x(1970)=3.9,则
x ( t ) = x m 1 + ( x m 3.9 − 1 ) e − r ( t − 1970 ) x(t)=\frac{x_m}{1+(\frac{x_m}{3.9}-1)e^{-r(t-1970)}} x(t)=1+(3.9xm1)er(t1970)xm
详细求解步骤见pdf(清风所作)
使用阻滞增长模型预测美国人口.pdf

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是Matlab代码实现Malthus人口指数增长模型求解方程、作图、函数拟合的示例: ```matlab % 设置初始条件 N0 = 100; % 初始人口数 r = 0.05; % 增长率 tspan = [0 50]; % 时间跨度 % 定义微分方程 dNdt = @(t, N) r * N; % 求解微分方程 [t, N] = ode45(dNdt, tspan, N0); % 绘制人口增长曲线 figure; plot(t, N); xlabel('时间'); ylabel('人口数'); title('Malthus人口指数增长模型'); % 使用 polyfit 函数拟合曲线 p = polyfit(t, log(N), 1); r_fit = p(1); N0_fit = exp(p(2)); N_fit = N0_fit * exp(r_fit * t); % 绘制拟合曲线 hold on; plot(t, N_fit, 'r--'); legend('原始数据', '拟合曲线'); ``` 解释: 首先,我们设置了初始条件:初始人口数为100,增长率为0.05,时间跨度为0到50。 然后,我们定义了微分方程 `dNdt = @(t, N) r * N`,其中 `t` 是时间,`N` 是人口数,`r` 是增长率。这个方程表示人口增长速率与人口数成正比。 接着,我们使用 `ode45` 函数求解微分方程,并将结果存储在 `t` 和 `N` 中。 然后,我们绘制人口增长曲线,并添加适当的标签和标题。 接着,我们使用 `polyfit` 函数拟合曲线,将 `t` 和 `log(N)` 作为输入,拟合结果存储在 `p` 中。我们可以从 `p` 中获取拟合的增长率 `r_fit` 和初始人口数 `N0_fit`。 最后,我们使用拟合结果计算拟合曲线,并绘制在原始数据上。我们还添加了一个图例,以区分原始数据和拟合曲线。 注意,这个代码只是一个简单的示例,实际应用中可能需要更复杂的模型和更多的参数调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

weixin_961876584

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

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

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

打赏作者

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

抵扣说明:

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

余额充值