数学实验报告 曲线拟合人口增长模型及其数量预测.doc

数学实验报告 曲线拟合人口增长模型及其数量预测.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
开课学院、实验室:数统学院DS1407 实验时间 : 2012 年 5 月 3 日 课程 名称 数学实验 实验项目 名 称 人口增长模型及其数量预测 实验项目类型 验证 演示 综合 设计 其他 指导 教师 龚劬 成 绩 √ 实验目的 [1] 学习由实际问题去建立数学模型的全过程; [2] 训练综合应用数学模型、微分方程、函数拟合和预测的知识分析和解决实际问题; [3] 应用matlab软件求解微分方程、作图、函数拟合等功能,设计matlab程序来求解其中的数学模型; [4] 提高论文写作、文字处理、排版等方面的能力; 通过完成该实验,学习和实践由简单到复杂,逐步求精的建模思想,学习如何建立反映人口增长规律的数学模型,学习在求解最小二乘拟合问题不收敛时,如何调整初值,变换函数和数据使优化迭代过程收敛。 应用实验(或综合实验) 一、实验内容 从1790—1980年间美国每隔10年的人口记录如表综2.1所示: 表综2.1 年 份 1790 1800 1810 1820 1830 1840 1850 人口(×106) 3.9 5.3 7.2 9.6 12.9 17.1 23.2 年 份 1860 1870 1880 1890 1900 1910 1920 人口(×106) 31.4 38.6 50.2 62.9 76.0 92.0 106.5 年 份 1930 1940 1950 1960 1970 1980 人口(×106) 123.2 131.7 150.7 179.3 204.0 226.5 用以上数据检验马尔萨斯(Malthus)人口指数增长模型,根据检验结果进一步讨论马尔萨斯人口模型的改进,并利用至少两种模型来预测美国2010年的人口数量。 二、问题分析 1:Malthus 模型的基本假设是:人口的增长率为常数,记为 r。记时刻t的人口为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)) 对于1790—1980年间美国每隔10年的人口记录,分别用matlab工具箱中非线性拟合函数的命令作一般的最小二乘曲线拟合,可利用已有程序lsqcurvefit进行拟合,检验结果进一步讨论模型的改进,预测美国2010年的人口数量。 四、实验结果及分析 对于Malthus 模型 作一般的最小二乘曲线拟合,可利用已有程序lsqcurvefit 得到拟合函数为y=(3.54e-011)*exp(0.0149*x), 当x=2010时,预测的人口为359.4916 1780 1780 1800 1820 1840 1860 1880 1900 1920 1940 1960 1980 0 50 100 150 200 250 x y fitted curve 由于资源、环境等因素对人口增长的阻滞作用,人口增长到一定数量后,增长率会下降,运用Logistic模型对微分方程的解进行拟合,得到y2= 360.4/(1+53.11 *exp(-0.02342*(x-1790))) 到2010年时,预计人口数量为y2 = 275.6894, 作图可以看出两条曲线拟合程度较高相比基本模型,改进模型更接近实际。 五、附录(程序等) Malthus 模型 编写拟合函数的文件fitful2.m function y=fitful2(a,x) y=a(1).*exp(a(2).*x); 2、 运行的脚本文件 clc,clear a0=[50,0.02]; xdata=[1790:10:1980]; ydata=[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]; [a,resnorm,residual,flag,output]=lsqcurvefit(fitful2,a0,xdata,ydata) xi=[1790:10:1980]; yi=fitful2(a,xdata) plot(xdata,y

文档评论(0)

姣姣者 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档