您好,欢迎访问三七文档
4.1美国人口增长问题研究4.1.1问题重述认识人口数量的变化过程,建立数学模型描述人口发展规律,做出较为准确的增长预测,是制定积极、稳妥的人口政策的前提。请使用下表的美国人口统计数据进行参数估计,并作模型检验和增长预测。年份17901800181018201830184018501860人口/百万3.95.37.29.612.917.123.231.4增长率/10年0.29490.31130.29860.29690.29070.31020.30820.2452年份18701880189019001910192019301940人口/百万38.650.262.97692105.7122.8131.7增长率/10年0.24350.2420.20510.19140.16140.14570.10590.1059年份1950196019701980199020002010人口/百万150.7179.3203.2226.5248.7281.4308.7增长率/10年0.15790.14640.11610.10040.11040.13494.1.2符号规定与基本假设1.符号规定1.r表示人口增长率2.xt表示人口数量3.mx表示人口容量2.基本假设1)假设人口增长符合生长规律;2)不考虑战争等非射幸因素;3)不考虑突发事故所引起的人口数量变化;4.1.3模型分析与建立考察一个国家或者地区的人口数量随着时间延续而发生变化的规律时,可以将人口看作连续时间t的延续可微函数xt。记初始时刻0t的人口为0x。假设单位时间人口增长率为常数r,即可得到满足人口增长的微分方程和初始条件为:0,0dxrxxxdt(1.1)易得:0nxtxe(1.2)若0r,人口将按指数规律无限增长。根据已知数据对模型的参数进行估计又称为数据拟合。对式(1.1)中的参数0,rx进行估计主要有以下两种方法。方法一:直接使用人口数据和线性最小二乘法,对(1.2)式取对数可得:0,ln,lnyrtayxax(1.3)由本题所给表格,通过MATLAB软件可计算得出,0.2020/10r年,06.0496x。方法二:先对人口数据进行数值微分,再计算增长率并将其平均值作为r的估计;0x直接取原始数据。数值微分的中点公式如下:假设函数xt在分点01,,,nttt(等间距t)的离散值为01,,,nxxx,那么函数在各个分点的导数近似值为11,1,2,,12kkkxxxtknt(1.4)0122103443,22nnnnxxxxxxxtxttt(1.5)根据式(1.5)可以计算出美国人口1790年至2000年的增长率kkkxtrxt,为0.2052年/10年,令人口数量初值03.9x,即可预测算出人口数量。方法三:将指数增长模型进行改进,原先的模型(1.1)式改写为010,0dxrtxrrtxxxdt(1.6)易得201/20rtrtxtxe(1.7)根据美国人口增长率数据可得010.3252,0.0114rr,令人口数量初值取3.90即03.90x,拟合结果如图4.1所示。Logistic方法一:(非常重要的预测方法,需要重点掌握!!!)随着人口数量的增长,资源和环境对其增长起到了阻滞作用。即增长率r随着人口数量x的增加而下降,用rxabx。为了赋予增长函数中系数的实际意义,引入以下两个参数。1)内廪增长率r表示0x的增长率,即0rr,则ar;2)人口容量mx表示资源和环境所能容纳的最大人口数量,当mxx即表示人口不在增长,即0mmrxrbx,得mrbx。增长率函数1mxrxrx,可得01,0mdxxrxxxdtx(1.8)式(1.8)中,右端rx体现人口自身增长趋势,而1mxx体现了资源和环境对人口增长的阻滞作用。人口增长是两者同时作用的结果。以下是对Logistic模型的参数估计。将式(1.8)改写为0/,0mdxdtrxrxxxx(1.9)(1.9)式左端作数值微分之后计算增长率,右端使用线性最小二乘法进行参数估计。可以计算出结果为00.2805,352.0548,3.9mrxx,由式(1.9)可以计算出最终预测结果。4.1.4模型的求解编写如下代码:clc,clear%1790-2010美国人口数据P=[3.95.37.29.612.917.123.231.438.650.262.97692105.7...122.8131.7150.7179.3203.2226.5248.7281.4308.7];n=length(P)-1;%选取1790-2000美国人口数据及相应的时间节点,总计n个t=[0:n-1]';P1=P(1:n)';%指数增长模型的参数估计%方法一,线性最小二乘方法----------------------------------------%A=[ones(n,1)t];%b=log(P1);%F=inv(A'*A)*(A'*b);%x0=exp(F(1));%初始人口(t=0)%r=F(2);%增长率/10年%%1790-2000美国人口估计%x=zeros(n,1);%x(1)=x0;%fori=1:n%t1=i-1;%x(i)=x(1)*exp(r*t1);%end%figure%plot(1:n,P1,'r.');%holdon%plot(1:n,x,'k-.');%gridon%xlabel('t')%ylabel('x')%legend('实际人口','模拟结果')%----------------------------------------------------------------------%%%方法二,数值微分方法----------------------------------------%rk=zeros(n,1);%每十年的相对增长率%rk(1)=(-3*P1(1)+4*P1(2)-P1(3))/2;%1790年增长率%rk(n)=(P1(n-2)-4*P1(n-1)+3*P1(n))/2;%2000年增长率%fori=2:n-1%rk(i)=(P1(i+1)-P1(i-1))/2;%end%rk=rk./P1;%每十年的相对增长率%r=sum(rk)/n;%每十年的平均相对增长率%%1790-2000美国人口估计%x=zeros(n,1);%x(1)=P1(1);%初值%fori=1:n%t1=i-1;%x(i)=x(1)*exp(r*t1);%end%figure%plot(1:n,P1,'r.');%holdon%plot(1:n,x,'k-.');%gridon%xlabel('t')%ylabel('x')%legend('实际人口','模拟结果')%-------------------------------------------------------%Logistic增长模型的参数估计%%方法一,数值微分方法+线性最小二乘估计----------------------------------------rk=zeros(n,1);%每十年的相对增长率rk(1)=(-3*P1(1)+4*P1(2)-P1(3))/2;%1790年增长率rk(n)=(P1(n-2)-4*P1(n-1)+3*P1(n))/2;%2000年增长率fori=2:n-1rk(i)=(P1(i+1)-P1(i-1))/2;endrk=rk./P1;%每十年的相对增长率A=[ones(n,1)-P1];b=rk;F=inv(A'*A)*(A'*b);r=F(1);%增长率/10年xm=r/F(2);%人口总量%%1790-2000美国人口估计x=zeros(n,1);x(1)=P1(1);fori=1:nt1=i-1;x(i)=xm/(1+(xm/P1(1)-1)*exp(-r*t1));endfigureplot(1:n,P1,'r.');holdonplot(1:n,x,'k-.');gridonxlabel('t')ylabel('x')legend('实际人口','模拟结果')表4.1指数模型三种方法运算出的结果实际人口方法一方法二方法三3.906.053.903.905.307.404.795.147.209.065.886.789.6011.097.228.9212.9013.578.8611.7117.1016.6110.8815.3423.2020.3313.3620.0231.4024.8816.4026.0338.6030.4520.1433.6550.2037.2724.7243.2162.9045.6130.3555.0176.0055.8237.2669.3292.0068.3145.7586.27105.7083.6156.17105.81122.80102.3268.96127.65131.70125.2384.67151.23150.70153.26103.95175.75179.30187.57127.63200.29203.20229.56156.70223.90226.50280.95192.39245.79248.70343.85236.20265.38281.40420.82290.00282.394.1.5结果分析图4.1方法一拟合出图像图4.2方法二拟合出图像图4.3Logistic方法一拟合出图像
本文标题:美国人口增长模型
链接地址:https://www.777doc.com/doc-5190067 .html