首页 > 编程知识 正文

数学建模人口问题预测,人口增长预测MATLAB数学建模

时间:2023-05-04 13:13:09 阅读:124656 作者:2223

人口预测模型多项式拟合假设特征代码实现思路代码BP神经网络特征代码实现思路代码Logistic模型特征代码实现原理代码

多项式近似将人口增长视为多项式函数,假设具有人口增长不受限制、总是能够增长的特征的现有数据很好地匹配。 无论有没有数据,未来一两年的预测都是比较准确的,未来越来越不准确的预测人口数是未来超过人口限制、增长速度加快的代码实现思路

以年为x轴变量,当年人口为y轴变量,对两者进行拟合,得到人口数模型与时间的关系式

选择某城市2008-2019年老年人口数进行模拟

首先,代码是将现有数据合成为曲线的代码,过程代码如下

关闭抄送; 清除全部%全部n=5; %拟合多项式的阶数year=2008:2019; num=[ 97.42102.36105.78111.16116.04121.71126.26134.93137139141.89146 ]; 户籍人口%; p5=polyfit(year,num,n ); %5次拟合%原始数据和拟合图表figure(1) hold on; xlabel('year ); 设置%横坐标名称ylabel(num ); %纵坐标名称title(2008-2019人口增长曲线); %标题grid on %网格线plot(year、num、' r* '、year、poly val (P5,year ) ) legend )、“人口数”、“拟合曲线”)的执行结果

然后预测今后几年的人口增长数

figure(2) year1=2008:2025; plot(year1,polyval(P5,year1) ) people=poly val (P5,year1); legend (“人口预测数”)的执行结果图表

BP神经网络的特征BP神经网络预测人口模型不需要BP神经网络基于现有数据估计数据内部关系假设BP神经网络为非线性的方法代码的实现思路,而是三层BP神经模型

代码clear allcloseclc%原始数据p=[ 97.42102.36105.78111.16116.04121.71126.26134.93137; 102.36105.78111.16116.04121.71126.26134.93137139; 105.78111.16116.04121.71126.26134.93137139141.89; t=[ 111.16116.04121.71126.26134.93137139141.89146 ]; %规范化处理[P,Pmin,Pmax,t,Tmin,tmax]=premnmx(p,t ); %神经网络net=newff(minmax(p ),[ 5,1 ],{'tansig ',' purelin'} ); net.trainFcn='trainbr '; %培训参数net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.epochs=500; net.trainParam.goal=1e-5; %培训[net,tr]=train(net,p,t ); %模拟a=sim(net,p ); a=postmnmx(a,Tmin,Tmax ); t=postmnmx(t,Tmin,Tmax ); %优化后,层权重和阈值input weights=net.iw { 1,1 }; inputbias=net.b{1}; %优化后的网络层权重和查询值layer weights=net.lw { 2,1 }; layerbias=net.b{2}; %绘图输出x=2011:2019; newk=a(1, ); figure(1) plot(x ) x,newk,' r-o ',x,t,' b--* ' ) xlabel ),ylabel (人口数/万) ) legend,实际人口预测

预测今后几年的人口

Pnew=[139; 141.89; 146 ); old num=zeros (15,1 ); forI=1:15Samnum=size(pnew,2 ); pnewn=tramnmx(pnew、Pmin、Pmax ); 隐藏输出=tan SIG (输入权重* pnewnrepmat )输入bias,1,SamNum ); anewn=pure Lin (layer weights * hiddenoutrepmat ) layerbias,1,SamNum ); anewn=postmnmx(anewn、Tmin、Tmax ); pnew (1:3, ) ) pnew (2:3, ); anewn]; OLDnum(I )=anewn; end%绘图输出x1=2011:2034; figure(2) NUM=[newk,OldNum']; plot(x1,NUM,' r--o ' ) xlabel )、年) ylabel )、人口数/万人)、legend )、预测人口数)结果

Logistic模型的特点是考虑到人口所能承受的最大值数据错误时拟合不充分,没有准确的数据就无法简单地拟合数学模型。 具有一定官方代码实现原理的Logistic模型认为人口增长有最大值Xm和人口的固有增长率r0。 人口增加到Xm附近的话,人口维持这个水平不会有很大的变动。 公式如下

dx/dt=R0(1-x/XM ) x

x(0)=x0

x是人口数,x0是初始人口数

如果你解开这个方程

x=XM/(1) XM/x0-1 ) exp(-r0t ) )

代码clcclearcloseallx=[ 97.42102.36105.78111.16116.04121.71126.26134.93141.24141.89143.2147 ]; %常驻老年人口n=Length(x; t=0:1:n-1; rk=Zeros(1,n ); rk(1)=(-3*x )1)4*x )2)-x )3)/2; rk(n ) x(n-2 )-4 * x (n-1 )3* x (n ) )/2; forI=2:n-1rk(I )=(x ) I1 )-x (I-1 ) )/2; endrk=rk./x; p=polyfit(x,rk,1 ); b=p(2; a=p(1; r0=b; xm=-r0/a; %输出pnum=Zeros(n,1 ); forI=0:13360n-1pnum(I1 )=XM/)1) XM/x(1)-1 ) exp(-R0*I ) ) endyear1=2008:2019; plot(year1,pnum,' r--o ',year1,x,' k-* ' ) xlabel )、ylabel )、“老年人口数/万人”(legend )、“老年人口预测”和

预测

figure(2) fnum=Zeros ) n16,1 ); forI=0:13360n15fnum(I1 )=XM/(1) XM/x (1) *exp(-R0*I ) ); 结束年2=2008:2035; plot (年2、fnum、' r--o ') xlabel )、'年') ylabel )、'老年人口/万人') legend )和'预测老年人口' )的计算结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。