MATLAB人口数量预测.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:6 大小:23KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

MATLAB人口数量预测.doc

MATLAB人口数量预测.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MATLAB人口数量预测实验报告一,实验目的:实验目的:1.、学会用matlab软件进行数据拟合;2、了解利用最小二乘法进行数据拟合的基本思想,掌握用数据拟合法寻找最佳拟合曲线的方法;3、了解多元函数的机制在数据拟合法中的应用;4、通过对实际问题进行分析研究,初步掌握建立数据拟合数学模型的方法。二.问题分析及建立模型问题分析及建立模型1.多项式拟合多项式拟合对于已知数据点,如果选用拟合基函数为幂函数类1,x,x2,x3….xm,则拟合函数为一个m次多项式函数。y=f(x)=am*xm+am-1*xm-1+…a1*x+a0根据最小二乘法你和思想,问题归结为求m+1元函数Q(a0,a1,…am)=∑(am*ximam-1*xim-1+…+a1*x+a0)2的最小值问题,同样的,利用多元可微函数求得极值的必要条件得到法方程组?Q(a0,a1,…am)/?ak=0;k=0,1,2,3…m;此时,矩阵G为一范德蒙矩阵,解此方程可以求的多项式系数a=[am,am-1,a0]2.malthus模型假设美国的人口满足函数关系x=f(t),理,a,b是函数E(a,b)=是第一种模型。niiTf(t)=ea+bt,a,b为待定常数,根据最小二乘拟合的原2∑(f(t)?x)i=1的最小值点。其中xi是ti时刻美国的人口数。这3.Logistic模型.上述模型可以在短时间内较好地拟合实际人口数量,但也存在问题。即人口是呈指数规律无止境地增长,此时人口的自然增长率随人口的增长而增长,这不可能。一般说来,当人口较少时增长得越来越快,即增长率在变大;人口增长到一定数量以后,增长就会慢下来,即增长率变小。这是因为自然资源环境条件等因素不允许人口无限制地增长,它们对人口的增长起着阻滞作用,而且随着人口的增加,阻滞作用越来越大。而且人口最终会饱和,趋于某一个常数x∞,假设人口的静增长率为r(1-x(t)/x∞),即人口的静增长率随着人口的增长而不断减小,当t→∞时,静增长率趋于零。按照这个假设,得到x?dx?=r(1?)x∞?dt?x(t)=x0?0(1)这便是荷兰数学家Verhulst于19世纪中叶提出的logistic模型。人口的变化规律为:x=x∞1+(x∞?1)e?(t?1790)r1039(2)具体实验中应使用这种模型进行拟合。4.为了更好地比较2000,2005,2010,2015,2020年美国人口数,需将其画入年美国人口数,为了更好地比较,,,,一个图中。一个图中。三.程序(1)x=1790:10:1980;)y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,28.6,50.2,62.0,72.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5];plot(x,y,'k.','markersize',25);axis([179019903230]);p2=polyfit(x,y,2)p3=polyfit(x,y,3)t=1790:10:1980;s=polyval(p2,t);s1=polyval(p3,t);holdonplot(t,s,'r-','linewidth',2)plot(t,s1,'b-','linewidth',2)grid(2)functionf=nihehanshu(x,xdata))f=exp(x(1)+x(2)*xdata);xdata=1790:10:1980;ydata=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,28.6,50.2,62.0,72.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5];x0=[0,0];[x,resnorm]=lsqcurvefit(@nihehanshu3,x0,xdata,ydata)(3)functiony=nihehanshu(x,xdata))y=1./(4.5^(-1)+exp(-x(1)-x(2)*xdata))xdata=1790:10:1980;ydata=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,28.6,50.2,62.0,72.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5];x0=[0,0];[x,resnorm]=lsqcurvefit(@nihehanshu,x0,xdata,ydata)(4)f=inline('1./(