数学建模:人口增长模型

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

一、指数增长模型

假设增长率不变:

若已知人口年增长率为r,今年人口为 x0x_0x0​,预测k年后的人口可以用简单的公式得到:
xk=x0(1+r)kx_k = x_0(1+r)^kxk​=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)=x0x(0) = x_0x(0)=x0​
rx0rx_0rx0​ 即为单位时间 x(t)x(t)x(t) 的增长量
所以得到微分方程:
dxdt=rx,x(0)=x0\frac{dx}{dt} = rx , x(0)=x_0dtdx​=rx,x(0)=x0​
解得:
x(t)=x0ertx(t) = x_0e^{rt}x(t)=x0​ert
上述公式即位指数增长模型

数据拟合:

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

·法一

用人口数据和线性最小二乘法,对上式取对数:
y=rt+a,y=lnx,a=lnx0y = rt +a , y=lnx,a=lnx_0y=rt+a,y=lnx,a=lnx0​
用matlab进行编程拟合:

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


解得:
r=0.202,x0=e1.8=6.049r = 0.202,x_0 = e^{1.8} = 6.049r=0.202,x0​=e1.8=6.049
带入得x(t)=6.049e0.0202tx(t) = 6.049 e^{0.0202t}x(t)=6.049e0.0202t

·法2
对人口数据做数值微分,计算平均值r‘,x0直接选用原始数据.
函数在各点的近似导数值为(数值微分中点公式):
x′(tk)=xk+1−xk−12Δ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​)=2Δtxk+1​−xk−1​​, (k=1,2,3,...,n−1)
x′(0)=4x1−3x0−x22Δt,x′(n)=−4xn−1+3xn+xn−22Δtx'(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)=2Δt4x1​−3x0​−x2​​,x′(n)=2Δt−4xn−1​+3xn​+xn−2​​
那么增长率为: r(tk)=x′(tk)x(tk)r(t_k)=\frac{x'(t_k)}{x(t_k)}r(tk​)=x(tk​)x′(tk​)​

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

增长率 rk=x′(tk)x(tk)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:22if i == 1r(i)=(4*p(i+1)-3*p(i)-p(i+2))/(20*p(i));elseif i == 22r(i)=(-4*p(i-1)+3*p(i)+p(i-2))/(20*p(i));elser(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)=r0−r1tr(t)=r_0-r_1tr(t)=r0​−r1​t的线性函数,用最小二乘法线性拟合得到:
r0=0.03252,r1=0.0001143r_0 = 0.03252,\space r_1 = 0.0001143r0​=0.03252, r1​=0.0001143
根据微分方程:
dx/dt=r(t)xdx/dt=r(t)xdx/dt=r(t)x
⇒x(t)=x0e(r0t−r1t2/2)\Rightarrow x(t) = x_0 e^{(r_0t-r_1t^2/2)}⇒x(t)=x0​e(r0​t−r1​t2/2)
把拟合后的参数带入:

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


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

二、logistic模型

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

未完…

数学建模:人口增长模型相关推荐

  1. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  2. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  3. 数学建模传染病模型_数学建模| 时间序列模型

    1 数学建模 时间序列模型 1.与实践有关系的一组数据,叫做时间序列: 2.得到时间序列的数据后,要构建模型,其中平稳时间序列的模型,是本节课重点介绍的: 3.y=at+季节性+周期性 一.     ...

  4. 数学建模常用模型04:灰色关联分析法

    数学建模常用模型04:灰色关联分析法 灰色关联分析法 本文所用的资料参考来源:美赛资料网:美赛资料网 与灰色预测模型一样,比赛不能优先使用,灰色关联往往可以与层次分析结合使用.层次分析用在确定权重上面 ...

  5. 数学建模常用模型(一):灰色预测法

    数学建模常用模型(一):灰色预测法 灰色预测法是一种用于处理少量数据.数据质量较差或者缺乏历史数据的预测方法.它适用于一些非线性.非平稳的系统,尤其在短期预测和趋势分析方面有着广泛的应用.灰色预测法作 ...

  6. 数学建模常见模型总结

    数学建模常见模型总结 一.插值 当已有数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法. 常用插值方法 拉格朗日插值 分段线性插值 Hermite 三次样条插值 克里金法 matlab ...

  7. 数学建模优化模型简单例题_数学建模之优化模型:存储模型

    点击上方「蓝字」关注我们 最近,为申报市级精品课程,我为我校"数学建模与科学计算"课程录制了讲课视频,下面是3.1节优化模型的第一个例子:存储模型.敬请大家批评指正! 优化模型是数 ...

  8. MATLAB数学建模-规划模型总结| MATLAB求解

    目录 1 线性规划问题(LP) 风格1 风格2 2 非线性规划 3 动态规划 A星算法 基于dijkstra的概率路线图 4 多目标规划 帕累托最优 支配(Dominace) 不可支配解集 帕累托最优 ...

  9. 【数学建模常用模型】图论专题

    图论是研究点.线间关系的一门学科.现实生活中,凡是涉及到事物间的关系,都可以抽象为图论模型.图论模型也是各大数学建模中常见的一种模型,主要用于计算.规划最短距离.路线等问题.下面介绍几个基本概念和算法 ...

  10. 数学建模优化模型简单例题_数学建模中简单的优化模型

    本文介绍较简单的优化模型,归结微积分中函数的机制问题,可以直接用微分法求解. 1. 存贮模型 工厂订购原料,出售商品,都需要确定贮存量. 1.1不允许缺货的存贮模型 经济批量订货公式(EOQ公式) 用 ...

最新文章

  1. OpenStack 架构图
  2. resnet50 自定义
  3. struct2 开发环境搭建 问题
  4. sqlserver数据库创建表
  5. java如何跳出循环6,Java循环结结构
  6. 轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)
  7. 对UTF8编码的初步认识!
  8. 【清华大学-腾讯】关系提取综述,Review and Outlook for Relation Extraction
  9. 嵌入式linux系统运行程序,嵌入式Linux系统启动过程
  10. (转)从业10年,芝加哥交易员王辰解码高频交易
  11. 为什么计算机桌面显示器,电脑显示屏不显示是怎么回事 电脑显示屏不显示如何解决【详细介绍】...
  12. IDEA git 切换分支注意事项(好文章!!)
  13. 宝二爷,一个以太坊铁杆粉为何转投EOS?
  14. 用python绘制叠加等边三角形_python叠加等边三角形绘制
  15. Python爬虫进阶--js逆向-某天下与某某二手房密码加密分析
  16. Lifeline功能介绍02——个人事件的添加
  17. Java实现微信开发者-测试账号申请及配置
  18. 上dj是什么意思_这个世界上根本没有迪迦奥特曼什么梗?抖音迪迦奥特曼的梗什么意思...
  19. 雅安职业技术学院工业机器人专业_雅安职业技术学院有哪些专业_2020年学费标准_中职中专网...
  20. java后端研发经典面试题总结,为公司招兵买马

热门文章

  1. 《Go语言实战》.pdf
  2. 2021-05-15 Nginx面试题
  3. 有什么软件测试固态硬盘,多个专业软件评测中端固态硬盘
  4. C与C++ 算法笔记中的代码
  5. python爬取国内代理ip_python爬虫实战:爬取西刺代理的代理ip(二)
  6. python3.7 中文汉化包
  7. 多组测试数据01字典树「模板」
  8. python 3.7 安装 win32 win32com win32ras模块
  9. 最好用的100个黑科技网站
  10. AMEsim fatal error U1077解决方案之一