Logistics population model

Population model optimization based on the Logistics model.
insert image description here
3.1 Logistic model

1.	function Population_1  
2.	%t:时间(年)  
3.	%p:各年人口总数(万人)  
4.	%pm:最大人口容量  
5.	%r:人口增长率  
6.	t = [1961:1:2020];  
7.	p =[65859,67296,69172,70499,72538,74542,76368,78534,80671,82992,85229,87177,89211,90859,92420,93717,94974,96259,97542,98705,100072,101654,103008,104357,105851,107507,109300,111026,112704,114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091,134916,135922,136726,137646,138326,139232,140011,140541,141008,141178];  
8.	p0=p(1);  
9.	  
10.	%方程(5)的拟合  
11.	r=polyfit(p(2:end),diff(p)./(p(2:end)),1);  
12.	pm=-r(2)/r(1);  
13.	r0=r(2);  
14.	  
15.	%拟合数据与实际数据的误差  
16.	f=@(t)pm./(1+(pm/p0-1)*exp(-r0*(t-1961)));  
17.	err=norm(f(t)-p);  
18.	  
19.	%绘图  
20.	clf  
21.	fplot(f,[1961,2050],'b')  
22.	hold on  
23.	plot(t,p,'*')  
24.	axis([1961,2050,60000,pm])  
25.	xlabel("时间T");ylabel("人口总数(万人)"); 

3.2 Improved Logistic model

26.	function Population_2  
27.	%t:时间(年)  
28.	%p:各年人口总数(万人)  
29.	%pm:最大人口容量  
30.	t = [1961:1:2020];  
31.	p =[65859,67296,69172,70499,72538,74542,76368,78534,80671,82992,85229,87177,89211,90859,92420,93717,94974,96259,97542,98705,100072,101654,103008,104357,105851,107507,109300,111026,112704,114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091,134916,135922,136726,137646,138326,139232,140011,140541,141008,141178];  
32.	p0 = p(1);  
33.	  
34.	% φ(x)的拟合  
35.	r_x=polyfit(p(2:end),diff(p)./p(2:end),1);  
36.	pm = -r_x(2)/r_x(1);  
37.	  
38.	%方程(10)的拟合  
39.	y=-log((pm*p0-p*p0)./(pm*p-p*p0));  
40.	k=polyfit(t-1961,y,3);  %3次多项式拟合
41.	  
42.	%拟合数据与实际数据的误差  
43.	f=@(t)pm./(1+exp(-polyval(k,t-1961))*(pm/p0-1));  
44.	err=norm(f(t)-p);  
45.	  
46.	%绘图  
47.	clf  
48.	fplot(f,[1961,2050],'b')  
49.	hold on  
50.	plot(t,p,'*')  
51.	axis([1961,2050,60000,pm])  
52.	xlabel("时间T");ylabel("人口总数(万人)");  


Guess you like

Origin blog.csdn.net/Ricardo2/article/details/120492391