《matlab曲线拟合人口增长模型及其数量预测(9页).doc》由会员分享,可在线阅读,更多相关《matlab曲线拟合人口增长模型及其数量预测(9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-实验目的1 学习由实际问题去建立数学模型的全过程;2 训练综合应用数学模型、微分方程、函数拟合和预测的知识分析和解决实际问题;3 应用matlab软件求解微分方程、作图、函数拟合等功能,设计matlab程序来求解其中的数学模型; 4 提高论文写作、文字处理、排版等方面的能力;通过完成该实验,学习和实践由简单到复杂,逐步求精的建模思想,学习如何建立反映人口增长规律的数学模型,学习在求解最小二乘拟合问题不收敛时,如何调整初值,变换函数和数据使优化迭代过程收敛。应用实验(或综合实验)一、实验内容从17901980年间美国每隔10年的人口记录如表综2.1所示:表综2.1年 份179018001810
2、1820183018401850人口(106)3.95.37.29.612.917.123.2年 份1860187018801890190019101920人口(106)31.438.650.262.976.092.0106.5年 份193019401950196019701980人口(106)123.2131.7150.7179.3204.0226.5用以上数据检验马尔萨斯(Malthus)人口指数增长模型,根据检验结果进一步讨论马尔萨斯人口模型的改进,并利用至少两种模型来预测美国2010年的人口数量。二、问题分析1:Malthus 模型的基本假设是:人口的增长率为常数,记为 r。记时刻t的
3、人口为x(t),(即x(t)为模型的状态变量)且初始时刻的人口为x0,于是得到如下微分方程:2:阻滞增长模型(或Logistic模型) 由于资源、环境等因素对人口增长的阻滞作用,人口增长到一定数量后,增长率会下降,假设人口的增长率为x的减函数,如设r(x)=r(1-x/xm),其中r为固有增长率(x很小时),xm为人口容量(资源、环境能容纳的最大数量),于是得到如下微分方程:三、数学模型的建立与求解 根据Malthus 模型的基本假设,和Logistic模型,我们可以分别求得微分方程的解析解,y1=x0*exp(r*x);y2= xm/(1+x0*exp(-r*x) 对于17901980年间美
4、国每隔10年的人口记录,分别用matlab工具箱中非线性拟合函数的命令作一般的最小二乘曲线拟合,可利用已有程序lsqcurvefit进行拟合,检验结果进一步讨论模型的改进,预测美国2010年的人口数量。四、实验结果及分析 对于Malthus 模型 作一般的最小二乘曲线拟合,可利用已有程序lsqcurvefit得到拟合函数为y=(3.54e-011)*exp(0.0149*x), 当x=2010时,预测的人口为359.491617801800182018401860188019001920194019601980050100150200250xy fitted curve由于资源、环境等因素对人
5、口增长的阻滞作用,人口增长到一定数量后,增长率会下降,运用Logistic模型对微分方程的解进行拟合,得到y2= 360.4/(1+53.11 *exp(-0.02342*(x-1790) 到2010年时,预计人口数量为y2 = 275.6894,作图可以看出两条曲线拟合程度较高相比基本模型,改进模型更接近实际。 五、附录(程序等)Malthus 模型1、 编写拟合函数的文件fitful2.mfunction y=fitful2(a,x) y=a(1).*exp(a(2).*x);2、 运行的脚本文件clc,cleara0=50,0.02;xdata=1790:10:1980; ydata=3
6、.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5;a,resnorm,residual,flag,output=lsqcurvefit(fitful2,a0,xdata,ydata)xi=1790:10:1980;yi=fitful2(a,xdata)plot(xdata,ydata,r-o,xi,yi,b-+)xlabel(x),ylabel(y=f(x);Logistic模型程序:x=1790:10:1980; y=3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5;st_ = 500 30 0.2 ;ft_ = fittype(a/(1+b*exp(-k*(x-1790),. dependent,y,independent,x,. coefficients,a, b,k);cf_ = fit(x,y,ft_,Startpoint,st_)plot(cf_,fit,0.95);hold on,plot(x,y,*) 第 9 页-