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

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

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 的 均匀分布 所以解不唯一 可以得出 我们最终的答案

数学建模人口模型及matlab算法解_第1张图片

最终  xm=295.5481

r=0.1030

x(2010)=295.5481

 

 

你可能感兴趣的:(数学建模)