Population model optimization based on the Logistics model.
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("人口总数(万人)");