基于马尔萨斯的人口模型的一个Logistic模型(MATLAB)
直接上代码:(没有找到真实数据,程序中都是假定的数据)
%Name:人口 模型
%Editor:H.y.Z
%Time:Apr.18,2020
%Part1:Logistic Model
% dP/dt=rP*dt,P(t0)=P0
% P:t时刻人口数 r:人口自然增长率
%fplot(@(t)1000000*ones(1,2));
K=100000;%设定人口上限
r=0.1;%自然增长率
syms P t
P=dsolve('DP/((1-P/100000)*P)=r','P(0)=20000',t);%K<P0
P=matlabFunction(P);
fplot(P(r,t));
t0=0.2*t;
hold on
P=dsolve('DP/((1-P/100000)*P)=r','P(0)=120000',t);%K>P0
P=matlabFunction(P);
fplot(P(r,t));
fplot(@(t)0*t+100000,'m:')%P=K处
axis([-50 100 0 150000]);%坐标范围
set(gca,'xtick',-50:10:100);%刻度设置
ti=title('人口模型');
xlabel('t')
ylabel('P人数')
l=legend('P0<K','P0>K','K=100000')
通过上面的运行结果可以看出,当初始时刻的人口数目大于大于环境所能承受的极限值时,将呈现下降趋势,且在初始时刻之前的某个时刻趋于无穷,这显然是不符合事实的,但是之后的数据,逐渐达到阈值,这与事实相符合。
当初始的人口数据小于阈值时,人口数目将会不断增加,直至达到阈值,当然,这是在一个理想条件下。而在初始时刻之前,仍是在增加,这也是比较符合的。注意到,在一段时间内t越小,基数小,增加量很低,类似于工业革命之前的世界人口增长。随后,经济快速发展,劳动力的需求增加,人口的基数增大,同时,医学的进步,使得人口的自然增长率增加,人数就经历了一段快速增加的过程。随后,资源过度开发,生态环境恶化等各种因素,使得人口的增长受到限制,增速变缓。
这样的模型,不仅应用于人口的增长,在一定的范围内,对于特定生态系统的生物数目演化过程同样适用。