数学建模人口模型及matlab算法解

数学建模 专栏收录该内容
9 篇文章 1 订阅

建立美国人口模型,下面是 文本 数据

1790 1800 1810 1820 1830 1840 1850 1860  
3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4  
1870 1880 1890 1900 1910 1920 1930 1940
 38.6  50.2 62.9 76.0 92.0 106.5 123.2 131.7
1950 1960 1970 1980 1990 2000
150.7 179.3 204.0 226.5 251.4 281.4

单位是 百万人

一、建模:

记 x(t) 为 第t年的人口数量,设人口年增长率r(x) 为x的线性函数,r(x)=r-sx ,自然资源与环境条件所能容纳的最大人口数为 \large x_m , 当

\large x=x_m 时,增长率 \large r(x_m)=0 ,可得     \large r(x)=r(1-\frac{x}{x_m})      建立 Logistic 人口模型:

                                                            \large \left\{\begin{matrix} \frac{dx}{dt}=r(1-\frac{x}{x_m})x & \\ x(t_0)=x_0 & \end{matrix}\right.

其解为:

                                                     \large x(t)=\frac{x_m}{1+(\frac{x_m}{x_0}-1)e^{-r(t-t_0)}}

现在 就是需要解出 其中的参数 ,并估计出 2010年的人口数量

matlab 代码:

a=textread('G:\\matlab脚本文件\\StudyPrepare\\b.txt');
x=a([2:2:6],:)';
x=nonzeros(x);
t=[1790:10:2000]';
t0=t(1);x0=x(1);
fun=@(cs,td) cs(1)./(1+(cs(1)/x0-1)*exp(-cs(2)*(td-t0)));
cs=lsqcurvefit(fun,rand(2,1),t(2:end),x(2:end),zeros(2,1));   % cs(1)=xm , cs(2)=r
xhat=fun(cs,[t;2010]);
disp(cs(1))
disp(cs(2))
disp(xhat(end))

因为解是 一个 rand 的 均匀分布 所以解不唯一 可以得出 我们最终的答案

最终  xm=295.5481

r=0.1030

x(2010)=295.5481

 

 

  • 12
    点赞
  • 3
    评论
  • 85
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值