以Logistics模型为基础的人口模型优化。
3.1 Logistic模型
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改进后的Logistic模型
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("人口总数(万人)");
