数学建模美国人口预测报告材料1

合集下载

美国人口

美国人口

2013数学建模课程设计论文美国人口问题研究报告美国人口问题研究报告摘要人口资源是最具战略性的资源,掌握人口年龄分布状态,对于每个国家各项事业的发展至关重要。

本文针对美国人口年龄的分布情况建立以下两个模型:针对材料3中美国四个地区的人口年龄分布情况建立了基于层次聚类的模型,得到将四个地区分为两类的情形。

针对材料3和材料4中52个州或地区人口年龄分布情况建立了基于k-means 算法的模型,得到了其材料对应的聚合成2类和3类的k-means方法。

关键字:美国人口年龄分布层次聚类 k-means算法综合分析1问题的提出和分析人口资源是最具战略性的资源,掌握人口年龄分布状态,对于每个国家各项事业的发展至关重要。

采用聚类分析方法对其材料中的数据分别进行分类处理,得到美国人口年龄分布的分类,进而可以对各个种类的特点进行分析,甚至可以分析经济等问题。

针对材料3中数据量较少的美国的四个地区人口年龄分布情况采用层次聚类的方法处理结果更为精确。

针对材料3和材料4中美国的52个州或地区,数据量较大,采用k-means算法计算比较方便,结果更为明显。

2 模型假设2.1 模型假设1)假设材料中数据来源真实可靠。

2)不考虑计算机计算精度计算所引起的误差。

3 模型的建立与求解3.1 数据预处理通过分析材料3材料4所给的PDF文件,将其中的表格转换成EXCEL形式。

3.2模型一:基于层次聚类的模型材料3中美国的四个地区(Northeast、Midwest、South、West)的数据量较少,可以采用层次聚类的方法。

3.2.1 层次聚类聚类算法可以分为基于划分的方法、基于层次的方法、基于密度的方法、基于网格的方法和基于模型的方法。

层次聚类算法和基于划分的Kmeans聚类算法是实际应用中聚类分析的支柱,算法简单、快速而且能有效地处理大数据集。

基本步骤:1、利用 clusterdata 函数对数据样本进行一次聚类,这个方法简洁方便,其特点是使用范围较窄,不能由用户根据自身需要来设定参数,更改距离计算方法;2、分步聚类:( 1)用 pdist函数计算变量之间的距离,找到数据集合中两辆变量之间的相似性和非相似性;( 2)用 linkage函数定义变量之间的连接;( 3)用 cophenetic函数评价聚类信息;( 4)用 cluster函数进行聚类。

(完整版)数学建模logistic人口增长模型

(完整版)数学建模logistic人口增长模型

Logistic 人口发展模型一、题目描述建立Logistic 人口阻滞增长模型 ,利用表1中的数据分别根据从1954年、1963年、1980年到2005年三组总人口数据建立模型,进行预测我国未来50年的人口情况.并把预测结果与《国家人口发展战略研究报告》中提供的预测值进行分析比较。

分析那个时间段数据预测的效果好?并结合中国实情分析原因。

表1 各年份全国总人口数(单位:千万)二、建立模型阻滞增长模型(Logistic 模型)阻滞增长模型的原理:阻滞增长模型是考虑到自然资源、环境条件等因素对人口增长的阻滞作用,对指数增长模型的基本假设进行修改后得到的。

阻滞作用体现在对人口增长率r 的影响上,使得r 随着人口数量x 的增加而下降。

若将r 表示为x 的函数)(x r 。

则它应是减函数。

于是有:0)0(,)(x x x x r dt dx== (1)对)(x r 的一个最简单的假定是,设)(x r 为x 的线性函数,即 )0,0()(>>-=s r sxr x r (2) 设自然资源和环境条件所能容纳的最大人口数量mx ,当mx x =时人口不再增长,即增长率)(=m x r ,代入(2)式得m x rs =,于是(2)式为)1()(mx x r x r -= (3)将(3)代入方程(1)得:⎪⎩⎪⎨⎧=-=0)0()1(x x x x rx dtdxm (4)解得:rt mme x x x t x --+=)1(1)(0(5)三、模型求解用Matlab 求解,程序如下: t=1954:1:2005;x=[60.2,61.5,62.8,64.6,66,67.2,66.2,65.9,67.3,69.1,70.4,72.5,74.5,76.3,78.5,80.7,83,85.2,87.1,89.2,90.9,92.4,93.7,95,96.259,97.5,98.705,100.1,101.654,103.008,104.357,105.851,107.5,109.3,111.026,112.704,114.333,115.823,117.171,118.517,119.85,121.121,122.389,123.626,124.761,125.786,126.743,127.627,128.453,129.227,129.988,130.756];x1=[60.2,61.5,62.8,64.6,66,67.2,66.2,65.9,67.3,69.1,70.4,72.5,74.5,76.3,78.5,80.7,83,85.2,87.1,89.2,90.9,92.4,93.7,95,96.259,97.5,98.705,100.1,101.654,103.008,104.357,105.851,107.5,109.3,111.026,112.704,114.333,115.823,117.171,118.517,119.85,121.121,122.389,123.626,124.761,125.786,126.743,127.627,128.453,129.227,129.988];x2=[61.5,62.8,64.6,66,67.2,66.2,65.9,67.3,69.1,70.4,72.5,74.5,76.3,78.5,80.7,83,85.2,87.1,89.2,90.9,92.4,93.7,95,96.259,97.5,98.705,100.1,101.654,103.008,104.357,105.851,107.5,109.3,111.026,112.704,114.333,115.823,117.171,118.517,119.85,121.121,122.389,123.626,124.761,125.786,126.743,127.627,128.453,129.227,129.988,130.756];dx=(x2-x1)./x2; a=polyfit(x2,dx,1);r=a(2),xm=-r/a(1)%求出xm 和rx0=61.5;f=inline('xm./(1+(xm/x0-1)*exp(-r*(t-1954)))','t','xm','r','x0');%定义函数 plot(t,f(t,xm,r,x0),'-r',t,x,'+b');title('1954-2005年实际人口与理论值的比较') x2010=f(2010,xm,r,x0) x2020=f(2020,xm,r,x0) x2033=f(2033,xm,r,x0)解得:x(m)= 180.9516(千万),r= 0.0327/(年),x(0)=61.5得到1954-2005实际人口与理论值的结果:根据《国家人口发展战略研究报告》我国人口在未来30年还将净增2亿人左右。

美国人口模型预测

美国人口模型预测
七、参考文献
[1]秦新强,数学建模,高等学校教材,【M】2010,P45-65 [2] 李晓梅. 人口预测模型研究及应用[M]. 四川:西南财经大学出版社,2011. [3]姜启源等《数学模型》(第三版,【M】高等教育出版社 2003.08 P10 八、附件(MATLAB程序): (一)指数增长模型:
事实上人口的预测是一个相当复杂的问题影响人口增长的因素除了人口基数与可利用资源量外还和医药卫生条件的改善人们生育观念的变化等因素有关特别在做中短期预测时我们希望得到满足一定预测精度的结果比如在刚刚经历过战争或是由于在特定的历史条件下采纳了特殊的人口政策等这些因素本身以及由此引起的年龄结构变化就变得相当重要也要予以考虑
图4 4-4分析与检验 从图4 看出,在前一段吻合得比较图,但在最上面,若拟合曲线更接近原始数据,对将来人口的预测应该更好。因此略加修改 将拟合准则改为: ∑∑ + = =+ = 21 12 1 2) ) ( ( ) ) ( ( ) ( min n i ii n i i i x t f w
x t f a E 其中w为右端几个点的误差权重,在此处应该取为大于1的数,这样会使右边的拟合误差减小,相应的,其他点的误差会有所 增加。如何才能使这些误差的增减恰当呢?可以通过调整w和n的具体取值,比较他们取各种不同值时的拟合效果,从而确定 出一个合适的数值。 1)先取n=17,w=1.5,运行上述程序,得到结果a = [324.0666, 0.0276]; x1 = 272.7996. 2) 再取n=16,w=2,运行上述程序,得到结果 a=[345.1439,0.0270];x1=280.0539. 我们把两种情况的拟合曲线画在同一个坐标系中,很容易作出比较,见图6.第二种情形后半段的变化趋势与原始数据更吻合, 因此,对将来人口的预测应该 更好。

美国人口增长预测模型

美国人口增长预测模型

2016年数学建模论文第一套论文题目:人口增长模型的确定组别:第35组姓名:耿晨闫思娜王强提交日期:2016年7月4日题目:美国人口增长预测模型摘要本文根据近两个世纪美国每十年一次的人口统计数据,建立了指数增长模型,即Malthus模型,并通过1790-1890年的数据验证了它的准确性。

但是,随着时间的推移,拟合函数与统计数据误差逐渐增大,所以,又建立了阻滞增长模型,即Logistic模型,这个模型的拟合函数与统计数据误差较小,并用该模型对美国未来几年的人口做出了预测。

总体来说,阻滞增长模型在预测准确度方面要明显优于原始的马尔萨斯人口指数增长模型。

关键词:指数增长模型,阻滞增长模型,人口预测一、问题重述1790-1980年间美国每隔10年的人口记录如下表所示。

表1:人口记录表1.试用以上数据建立马尔萨斯(Malthus)人口指数增长模型,并对接下来的每隔十年预测五次人口数量,并查阅实际数据进行比对分析。

2.如果数据不相符,再对以上模型进行改进,寻找更为合适的模型进行预测,并对两次预测结果进行对比分析。

3.查阅资料找出中国人口与表1同时期的人口数量,用以上建立的两个模型进行人口预测与分析。

二、问题分析影响人口增长的因素很多,其中最主要的两个因素是出生率和死亡率。

出生率受到婴儿死亡率、对避孕的态度及措施效果、对堕胎的态度、怀孕期间的健康护理等因素的影响;死亡率则受到卫生设施与公共卫生状况、战争、污染、医疗水平、饮食习惯、心理压力和焦虑等因素的影响。

此外,影响人口在一个地区增长的因素还有迁入和迁出、生存空间的限制、水和食物、疾病等。

在这些因素中,有些是常态的或者有规律的,这些因素对人口的增长是恒定的;而有些因素是随机的,对人口的增长是没有规律的。

因此,当大范围、长时期研究人口增长问题时,对人口增长产生影响的随机因素就不在考虑了。

建立该模型的目的是要能通过模型预测美国后来每十年的人口数具体变化,并与实际的数据进行对比,看误差的大小。

人口指数增长模型和Logistic模型

人口指数增长模型和Logistic模型

表1 美国人口统计数据指数增长模型:rt e x t x 0)(=Logistic 模型:()011mrtm x x t x e x -=⎛⎫+- ⎪⎝⎭解:模型一:指数增长模型。

Malthus 模型的基本假设下,人口的增长率为常数,记为r ,记时刻t 的人口为 )(t x ,(即)(t x 为模型的状态变量)且初始时刻的人口为0x ,因为⎪⎩⎪⎨⎧==0)0(x x rxdt dx由假设可知0()rt x t x e = 经拟合得到:}2120010120()ln ()ln ,ln (),,ln rt a y a t a x t x e x t x rt r a x ey x t a r a x =+=⇒=+⇒=====程序:t=1790:10:1980;x(t)=[ ]; y=log(x(t));a=polyfit(t,y,1) r=a(1),x0=exp(a(2)) x1=x0.*exp(r.*t);plot(t,x(t),'r',t,x1,'b') 结果:a =r= x0=所以得到人口关于时间的函数为:0.02140()t x t x e =,其中x0 = , 输入:t=2010;x0 = ;x(t)=x0*exp*t)得到x(t)= 。

即在此模型下到2010年人口大约为 610⨯。

模型二:阻滞增长模型(或 Logistic 模型) 由于资源、环境等因素对人口增长的阻滞作用,人口增长到一定数量后,增长率会下降,假设人口的增长率为 x 的减函数,如设)/1()(m x x r x r -=,其中 r 为固有增长率 (x 很小时 ) ,m x 为人口容量(资源、环境能容纳的最大数量), 于是得到如下微分方程:⎪⎩⎪⎨⎧=-=0)0()1(xx x x rx dt dxm 建立函数文件function f=curvefit_fun2 (a,t)f=a(1)./(1+(a(1)/*exp(-a(2)*(t-1790))); 在命令文件中调用函数文件 % 定义向量(数组) x=1790:10:1990; y=[ 76 ... 92 204 ];plot(x,y,'*',x,y); % 画点,并且画一直线把各点连起来 hold on;a0=[,1]; % 初值% 最重要的函数,第1个参数是函数名(一个同名的m 文件定义),第2个参数是初值,第3、4个参数是已知数据点 a=lsqcurvefit('curvefit_fun2',a0,x,y); disp(['a=' num2str(a)]); % 显示结果 % 画图检验结果 xi=1790:5:2020; yi=curvefit_fun2(a,xi); plot(xi,yi,'r'); % 预测2010年的数据 x1=2010;y1=curvefit_fun2(a,x1) hold off 运行结果: a= y1 =其中a(1)、a(2)分别表示()011mrtm x x t x e x -=⎛⎫+- ⎪⎝⎭中的m x 和r ,y1则是对美国美国2010年的人口的估计。

数模第一章答案(张绍辉给)

数模第一章答案(张绍辉给)

第一章习题参考答案1. 请编写绘制以下图形的MATLAB 命令,并展示绘得的图形. (1) 221x y +=、224x y +=分别是椭圆2214x y +=的内切圆和外切圆.解答方法一(显函数和伸缩变换)221x y +=的显函数形式为11)y x =-≤≤,并利用伸缩变换:224x y +=的横、纵坐标都是221x y +=的两倍,2214x y +=的横、纵坐标分别是221xy +=的两倍和一倍.编写程序时运用好MATLAB 函数plot 的语法格式2(x 是向量, y 是矩阵),以及格式4,使程序简洁.使用命令axis equal ,才能绘得真正的圆. 程序: x=-1:.05:1; % 由40段折线连接成半圆周 y=sqrt(1-x.^2);plot(x,[y;-y],'k',2.*x,[y;-y;2.*y;-2.*y],'k') axis equaltitle('方法一(显函数)')绘得的图形:-2.5-2-1.5-1-0.500.51 1.52 2.5-2-1.5-1-0.500.511.52方法一(显函数)评价:方法一绘得的图形在外切圆和椭圆的左右两端看起来明显还是折线,而在其余地方看起来比较光滑,原因在外切圆和椭圆的左右两端,导数d d yx趋于无穷大,所以,虽然x 的步长是固定的,但是在左右两端,y 会比别处有更显著的变化. 当然,如果令x 的步长更小,例如x=-1:.01:1,绘得的图形将会看起来更光滑一些.方法二(参数方程和伸缩变换)221x y +=的参数方程为cos , sin (02)x t y t t π==≤≤,关于伸缩变化和MATLAB 函数plot 的语法的讨论与方法一相同. 特意选取参数t 的步长,使得半圆周仍然由40段折线连接而成,如同方法一一样.程序: t=linspace(0,2*pi,81); % 由40段折线连接成半圆周 x=cos(t); y=sin(t);plot(x,y,'k',2.*x,[y;2.*y],'k') axis equaltitle('方法二(参数方程)')绘得的图形:-2.5-2-1.5-1-0.500.51 1.52 2.5-2-1.5-1-0.500.511.52方法二(参数方程)评价:虽然半圆周由同样多的折线段连接而成,但是方法二绘得的图形看起来处处一样光滑,事实上,方法二通过等分圆心角来取得圆周上的采样点,并连结线段,所以绘得的“圆形”实际上是正多边形.(2) 指数函数x y e =和对数函数ln y x =的图像关于直线y=x 对称.解答 指数函数x y e =和对数函数ln y x =互为反函数,在MATLAB 函数plot的输入当中交换x 和y 的次序,就实现反函数,而且图像就是关于直线y=x 对称.根据两点确定一条直线的原理,绘制直线段只需给出两端点的坐标.使用命令axis equal ,才能绘得真正的对称图形,加上坐标网格,能增强对称效果.指数函数x y e =的自变量x 的取值区间的左端不能太小,否则绘得的图像会在左边有一段与x 轴重合.程序: x=-3:.1:3; y=exp(x);plot(x,y,'k',y,x,'k',[-3,20],[-3,20],'k') axis equalaxis([-3,20,-3,20]) grid xlabel('x') ylabel('y')title('y=e^x 和 y=ln x 的函数图像关于直线 y=x 对称')绘得的图形:5101520xyy=e x 和 y=ln x 的函数图像关于直线 y=x 对称(3) 黎曼函数1, (0)(0,1) 0 , (0,1), 0,1q x p q q x y x x x =>∈⎧=⎨∈=⎩当为既约分数且当为无理数且或者的图像(要求分母q 的最大值由键盘输入).解答输入的英文单词是input ,通过在MATLAB 帮助文档检索input 这个关键词,查到实现键盘输入的MATLAB 函数是input ,语法格式为:(1) user_entry = input('prompt') 输入项是一个字符数组,input 将该字符数组显示在命令窗口,作为提示语,等待用户从键盘输入数值数组并按回车键;input将用户从键盘输入的数值数组赋值给user_entry所代表的变量名.(2)user_entry = input('prompt', 's') 第二输入项是规定的字符“'s'”,表示等待用户从键盘输入的是字符数组.=是既约分数,0<x<1,q>0”,即p和q是正整数,p<q,p 条件“x p q和q的最大公约数等于1. 例如:当q=2时,有黎曼函数的图像的一个坐标点(1/2 , 1/2);当q=3时,有黎曼函数的图像的两个坐标点(1/3 , 1/3)和(2/3 , 1/3);当q=4时,有黎曼函数的图像的两个坐标点(1/4 , 1/4)和(3/4 , 1/4),而x=2/4不是既约分数;……可见,在程序中应设置二重循环语句:第一重(外重)是分母q从2到由键盘输入的最大值的循环,步长为1;第二重(内重)是分子p从1到q-1的循环,步长为1,如果p和q的最大公约数等于1,就把p/q和1/q分别添加入横坐标数组x和纵坐标数组y.注意x和y需要在循环语句之前说明为空数组.当x为有理数(0<x<1)时,黎曼函数的图像是离散的点集;当x为无理数(0<x<1)或x=0和1时,黎曼函数的图像是x轴上的0到1之间的稠密点集,看起来就是x轴上从0到1之间的直线段. 因此,图像应该由很多离散点以及x 轴上从0到1之间的直线段共同组成. 利用axis命令控制坐标图的坐标范围是[0,1][0,1]⨯,使得坐标图的下边界恰好是x轴上从0到1之间的直线段.程序:n=input('分母的最大值n = ');x=[];y=[];for q=2:nfor p=1:q-1if gcd(p,q)==1x=[x,p./q];y=[y,1./q];endendendplot(x,y,'k.')axis([0,1,0,1])xlabel('x')ylabel('y')s=strcat('分母的最大值n = ',num2str(n));gtext(s);title('第一章习题1(3),黎曼函数的图像')当分母的最大值n=30时绘得的图形:0.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91xy黎曼函数的图像当分母的最大值n=100时绘得的图形:0.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91xy黎曼函数的图像3. 两个人玩双骰子游戏,一个人掷骰子,另一个人打赌掷骰子者不能掷出所需点数,输赢的规则如下:如果第一次掷出3或11点,打赌者赢;如果第一次掷出2、7或12点,打赌者输;如果第一次掷出4,5,6,8,9或10点,记住这个点数,继续掷骰子,如果不能在掷出7点之前再次掷出该点数,则打赌者赢. 请模拟双骰子游戏,要求写出算法和程序,估计打赌者赢的概率. 你能从理论上计算出打赌者赢的精确概率吗?请问随着试验次数的增加,这些概率收敛吗?解答(一)算法 输入 模拟试验的次数n ; 输出 打赌者赢的概率p. 第1步 初始化计数器k=0;第2步 对i=1,2,…,n ,循环进行第3~7步;第3步 产生两个在1~6这6个整数中机会均等地取值的随机数,并把这两个随机数之和赋值给x ;第4步 如果x 是3或11,那么k 加1,进入下一步循环;否则,做第5步;第5步 如果x 不是2、7和12,那么做第6~8步;否则,直接进入下一步循环;第6步 产生两个在1~6这6个整数中机会均等地取值的随机数,并把这两个随机数之和赋值给y ;第7步 如果y 不等于x ,也不等于7,重复第6步所做的;第8步 如果y 等于7,那么k 加1,进入下一步循环;否则,直接进入下一步循环;第9步 计算概率p=k./n .(二)MATLAB 程序 n=10000; k=0; for i=1:nx=ceil(rand*6)+ceil(rand*6); if x ==3|x==11 k=k+1;elseif x~=2&x~=7&x~=12 y=ceil(rand*6)+ceil(rand*6); while y~=x&y~=7y=ceil(rand*6)+ceil(rand*6); end if y==7 k=k+1; end end end p=k/n注 &与&&,|与||分别是短运算符与长运算符,功能有区别,但在上面的程序中效果一样。

数据建模常规方法的Matlab实现(实例)

数据建模常规方法的Matlab实现(实例)
美国人口数据百万1860187018801960197019801990200031438650217932040226525142814数据tx数据xy用最小二乘法估计rs模型检验用模型计算2000年美国人口误差不到3阻滞增长模型logistic模型r025573921用美国18601990年数据去掉个别异常数据与实际数据2000年为2814比较101520501001502002503001790年为零点2745logistic模型的应用模型应用加入2000年人口数据后重新估计模型参数r024904340x20103060预报美国2010年的人口种群数量模型鱼塘中的鱼群森林中的树木
MATLAB(liti21)
3)运算结果为: f =0.0043 0.0051 0.0056 0.0059
0.0062 0.0062 0.0063 0.0063 x = 0.0063 -0.0034 0.2542
0.0061 0.0063
4)结论:a=0.0063, b=-0.0034, k=0.2542
的。
1. lsqcurvefit
已知数据点: xdata=(xdata1,xdata2,…,xdatan),
ydata=(ydata1,ydata2,…,ydatan) lsqcurvefit用以求含参量x(向量)的向量值函数
F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T 中的参变量x(向量),使得
6 0.28 15
-0.02
解:(1)画出散点图: x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6; 14.4;15]; y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02]; plot(x,y,'r*')

美国总统竞选数学建模

美国总统竞选数学建模

美国总统竞选数学建模在美国的总统竞选中,数学建模成为了一个重要的工具。

候选人及其团队可以利用数学模型来预测选民行为、制定竞选策略、分析投票结果等。

在这篇文章中,我们将探讨美国总统竞选中的数学建模的应用和影响。

1. 数据分析与选民行为模型在总统竞选中,候选人和其团队首先需要对选民行为进行深入分析。

他们会收集大量数据,包括选民的年龄、性别、种族、教育程度、收入水平等信息。

通过分析这些数据,候选人可以建立选民行为模型,预测选民的偏好和态度。

2. 策略制定与投票率模型数学建模还可以帮助候选人制定竞选策略,特别是在选民投票率方面。

候选人和其团队可以通过数学模型预测投票率,并分析不同选民群体的投票倾向。

这有助于他们决定在不同地区的投入程度和时间分配,以最大程度地争取选民的支持。

3. 媒体战略与社交媒体模型在现代选举中,媒体战略扮演着重要的角色。

候选人需要确定在电视、广播、互联网等渠道上投放广告和传播信息的最佳时机和方式。

数学建模可以帮助候选人分析不同媒体渠道的覆盖范围、受众群体和影响力,从而制定有效的媒体战略。

此外,社交媒体也成为了一个不可忽视的平台,数学建模可以帮助候选人预测社交媒体上的用户行为和趋势,以此制定相应的社交媒体策略。

4. 选举结果预测与数据可视化数学建模不仅可以帮助候选人制定竞选策略,还可以预测选举结果。

通过对历史选举数据的分析和模型建立,候选人可以得出对选举结果的预测。

此外,数学建模还可以将数据可视化,将复杂的数据呈现为直观、易懂的图表和图像,帮助候选人和公众更好地理解和分析选举数据。

总结:数学建模在美国总统竞选中扮演着重要的角色,帮助候选人和其团队预测选民行为、制定竞选策略、分析投票结果等。

这些数学模型不仅提供了定量的数据支持,也为候选人提供了科学的依据和决策参考。

通过数学建模的应用,候选人可以更精确地了解选民需求,并更好地争取选民的支持。

数学建模的发展也为选举研究和民主进程提供了新的方法和视角。

人口预测模型数学建模论文

人口预测模型数学建模论文

人口预测模型数学建模论文摘要人口的数量和结构是影响经济社会发展的重要因素。

从20世纪70年代后期以来,我国鼓励晚婚晚育,提倡一对夫妻生育一个孩子。

该政策实施30多年来,有效地控制了我国人口的过快增长,对经济发展和人民生活的改善做出了积极的贡献。

但另一方面,其负面影响也开始显现。

如小学招生人数、高校报名人数逐年下降,劳动人口绝对数量开始步入下降通道,人口抚养比的“拐点”时刻即将到来。

这些问题都会对我国的经济和社会健康、可持续发展等产生一系列影响。

人口问题日益受到人们的重视。

对于问题一,我们通过多个渠道收集数据,利用SAS和Matlab等软件进行计算分析,我们得到了我国上世纪50年代至今人口和经济的主要变化如下: 对于问题二,这是典型的人口模型,我们建立了4个相应的数学模型,选用了基于以往人口数据的一次线性回归,灰色、时间序列预测,逻辑斯蒂模型和基于年龄结构并生育率、死亡率随时间Leslie人口模型。

进行全方位的深刻讨论,在本文假设的条件下,符合中国人口特点,例如,老龄化进程加速、出生人口性别比持续升高等,对中国的人口未来长期发展状况进行了科学性的预测;通过权重关系,建立起了组合模型,特别地在权重问题上,采用了熵权法分配权重,思路巧妙,提高了预测的精确度;建立BP神经网络模型,无需进行模型假设,同时能利用模型自身对复杂的非线性曲线进行拟核,利用拟核函数对人口增长趋势作出了合的预测。

本文的模型具有很好的推广性,而且在其它领域发挥很好的效果。

在对中国的人口未来长期发展状况进行了科学性的预测后,我们分析得到计划生育新政策。

关键词:微分方程模型;Leslie人口模型;曲线拟合;灰色序列预测中国人口预测模型摘要本文对人口预测的数学模型进行了研究。

首先,建立一次线性回归模型,灰色序列预测模型和逻辑斯蒂模型。

考虑到三种模型均具有各自的局限性,又用加权法建立了熵权组合模型,并给出了使预测误差最小的三个预测模型的加权系数,用该模型对人口数量进行预测,得到的结果如下:单位:(万人)年份 2006 2007 2008 2009 2010 预测值 134840.9 137027.35 1377785.7 139360.4 140857.4 其中加权系数为:0.24282,0.34055,0.41663。

美国人口预测

美国人口预测

数学建模2000 2010 年美国人口预测摘要人口问题是当前世界上人们最关心的问题之一,认识人口数量的变化规律,做出较准确的判断,是有效的控制人口的增长,促进国家发展的前提。

根据美国人口数据的显示,在Matlab软件中利用拟合的方法绘制出函数图像,可看出是成多项式增长的趋势,根据图像分析,建立模型,进行定性分析,就可预测未来的人口了。

关键词:Matlab软件;拟合;定性分析1. 问题重述.人口问题是当前世界上人们最关心的问题之一。

认识人口数量的变化规律,作出较准确的预报,是有效控制人口增长的前提。

下面表1给出的近两百年的美国人口统计数据,建立美国人口模型,最后用它预报2000年、2010年美国人口。

表1. 美国人口统计数据2. 模型假设1. 所给的数据能反应美国人口变化的基本情况;2. 一些重大事件,如战争,自然灾害等对人口预测的影响暂不考虑;3.美国条件优越,不考虑移民、空间不足的问题;4.生育模式不随时间变化。

3. 分析与建立模型3.1模型分析根据美国人口数据分析,人口数随年份呈增长趋势,在MATLAB 中用最小二乘法实现对年份和人口的多项式拟合,p (x )= m m x a +…+ 1a x+0a 【0,1...a a a m 】为多项式系数。

3.2 建立模型二次拟合:p(x) = p1*x^2 + p2*x + p3 (3.2.1)其中p1 = 0.006592 p2 = -0.09954 p3 = 5.744三次拟合:p(x) = p1*x^3 + p2*x^2 + p3*x + p4 (3.2.2)其中p1 = 4.989e-006 p2 = 0.005096p3 = 0.01732 p4 = 4.0374. 模型求解模型求解主要运用MATLAB进行绘图求解出2000,2010年美国人口数。

二次拟合图形如下:由二次拟合得出2000年人口数为:278百万2010年人口数为:305.3百万三次拟合图形如下:由三次拟合得出2000年人口为:272百万2010年人口为:300.9百万据网上资料表明,美国在2006年时已突破3亿人口,每七分钟就会诞生一名婴儿,每13秒就有一人死亡,每31秒就新增一移民人口,因此每11秒就净增一人,所以本题中由三次拟合得出的值接近现实美国人口。

常微分方程在数学建模中的应用(免费版)

常微分方程在数学建模中的应用(免费版)

常微分方程在数学建模中的应用这里介绍几个典型的用微分方程建立数学模型的例子. 一、人口预测模型由于资源的有限性,当今世界各国都注意有计划地控制人口的增长,为了得到人口预测模型,必须首先搞清影响人口增长的因素,而影响人口增长的因素很多,如人口的自然出生率、人口的自然死亡率、人口的迁移、自然灾害、战争等诸多因素,如果一开始就把所有因素都考虑进去,则无从下手.因此,先把问题简化,建立比较粗糙的模型,再逐步修改,得到较完善的模型.例1( 马尔萨斯 (Malthus ) 模型) 英国人口统计学家马尔萨斯(1766—1834)在担任牧师期间,查看了教堂100多年人口出生统计资料,发现人口出生率是一个常数,于1789年在《人口原理》一书中提出了闻名于世的马尔萨斯人口模型,他的基本假设是:在人口自然增长过程中,净相对增长(出生率与死亡率之差)是常数,即单位时间内人口的增长量与人口成正比,比例系数设为r ,在此假设下,推导并求解人口随时间变化的数学模型.解 设时刻t 的人口为)(t N ,把)(t N 当作连续、可微函数处理(因人口总数很大,可近似地这样处理,此乃离散变量连续化处理),据马尔萨斯的假设,在t 到t t ∆+时间段内,人口的增长量为t t rN t N t t N ∆=-∆+)()()(,并设0t t =时刻的人口为0N ,于是|⎪⎩⎪⎨⎧==.,00)(d d N t N rN t N这就是马尔萨斯人口模型,用分离变量法易求出其解为)(00e )(t t r N t N -=,此式表明人口以指数规律随时间无限增长.模型检验:据估计1961年地球上的人口总数为91006.3⨯,而在以后7年中,人口总数以每年2%的速度增长,这样19610=t ,901006.3⨯=N ,02.0=r ,于是)1961(02.09e1006.3)(-⨯=t t N .这个公式非常准确地反映了在1700—1961年间世界人口总数.因为,这期间地球上的人口大约每35年翻一番,而上式断定年增加一倍(请读者证明这一点).但是,后来人们以美国人口为例,用马尔萨斯模型计算结果与人口资料比较,却发现有很大的差异,尤其是在用此模型预测较遥远的未来地球人口总数时,发现更令人不可思议的问题,如按此模型计算,到2670年,地球上将有36 000亿人口.如果地球表面全是陆地(事实上,地球表面还有80%被水覆盖),我们也只得互相踩着肩膀站成两层了,这是非常荒谬的,因此,这一模型应该修改.;例2(逻辑Logistic 模型) 马尔萨斯模型为什么不能预测未来的人口呢这主要是地球上的各种资源只能供一定数量的人生活,随着人口的增加,自然资源环境条件等因素对人口增长的限制作用越来越显著,如果当人口较少时,人口的自然增长率可以看作常数的话,那么当人口增加到一定数量以后,这个增长率就要随人口的增加而减小.因此,应对马尔萨斯模型中关于净增长率为常数的假设进行修改.1838年,荷兰生物数学家韦尔侯斯特(Verhulst)引入常数m N ,用来表示自然环境条件所能容许的最大人口数(一般说来,一个国家工业化程度越高,它的生活空间就越大,食物就越多,从而m N 就越大),并假设将增长率等于⎪⎪⎭⎫⎝⎛-m N t N r )(1,即净增长率随着)(t N 的增加而减小,当m N t N →)(时,净增长率趋于零,按此假定建立人口预测模型.解 由韦尔侯斯特假定,马尔萨斯模型应改为⎪⎩⎪⎨⎧=⎪⎪⎭⎫⎝⎛-=,,000)(1d d N t N N N N r t N 上式就是逻辑模型,该方程可分离变量,其解为,)(00e 11)(t t r m mN N N t N --⎪⎪⎭⎫ ⎝⎛-+=.下面,我们对模型作一简要分析.(1)当∞→t ,m N t N →)(,即无论人口的初值如何,人口总数趋向于极限值m N ;@(2)当m N N <<0时,01d d >⎪⎪⎭⎫ ⎝⎛-=N N N r t N m ,这说明)(t N 是时间t 的单调递增函数;(3)由于N N N N N r t N m m ⎪⎪⎭⎫ ⎝⎛-⎪⎪⎭⎫ ⎝⎛-=211d d 222,所以当2m N N <时,0d d 22>t N ,t N d d 单增;当2m N N >时,0d d 22<tN ,t N d d 单减,即人口增长率t Nd d 由增变减,在2m N 处最大,也就是说在人口总数达到极限值一半以前是加速生长期,过这一点后,生长的速率逐渐变小,并且迟早会达到零,这是减速生长期;(4)用该模型检验美国从1790年到1950年的人口,发现模型计算的结果与实际人口在1930年以前都非常吻合,自从1930年以后,误差愈来愈大,一个明显的原因是在20世纪60年代美国的实际人口数已经突破了20世纪初所设的极限人口.由此可见该模型的缺点之一是m N 不易确定,事实上,随着一个国家经济的腾飞,它所拥有的食物就越丰富, m N 的值也就越大;(5)用逻辑模型来预测世界未来人口总数.某生物学家估计,029.0=r ,又当人口总数为91006.3⨯时,人口每年以2%的速率增长,由逻辑模型得⎪⎪⎭⎫⎝⎛-=m N N r t N N 1d d 1, 即 ⎪⎪⎭⎫ ⎝⎛⨯-=m N 91006.31029.002.0, 从而得 91086.9⨯=m N ,即世界人口总数极限值近100亿. )值得说明的是:人也是一种生物,因此,上面关于人口模型的讨论,原则上也可以用于在自然环境下单一物种生存着的其他生物,如森林中的树木、池塘中的鱼等,逻辑模型有着广泛的应用.二、市场价格模型对于纯粹的市场经济来说,商品市场价格取决于市场供需之间的关系,市场价格能促使商品的供给与需求相等(这样的价格称为(静态)均衡价格).也就是说,如果不考虑商品价格形成的动态过程,那么商品的市场价格应能保证市场的供需平衡,但是,实际的市场价格不会恰好等于均衡价格,而且价格也不会是静态的,应是随时间不断变化的动态过程.例3 试建立描述市场价格形成的动态过程的数学模型解 假设在某一时刻t ,商品的价格为)(t p ,它与该商品的均衡价格间有差别,此时,存在供需差,此供需差促使价格变动.对新的价格,又有新的供需差,如此不断调节,就构成市场价格形成的动态过程,假设价格)(t p 的变化率tpd d 与需求和供给之差成正比,并记),(r p f 为需求函数,)(p g 为供给函数(r 为参数),于是()()[]⎪⎩⎪⎨⎧=-=,,0)0(,d d p p p g r p f tpα 其中0p 为商品在0=t 时刻的价格,α为正常数.若设b ap r p f +-=),(,d cp p g +=)(,则上式变为—⎪⎩⎪⎨⎧=-++-=,,0)0()()(d d p p d b p c a t pαα ① 其中d c b a ,,,均为正常数,其解为ca db c a d b p t p t c a +-+⎪⎭⎫ ⎝⎛+--=+-)(0e)(α. 下面对所得结果进行讨论:(1)设p 为静态均衡价格 ,则其应满足0)(),(=-p g r p f ,即d p c b p a +=+-,于是得ca db p +-=,从而价格函数)(t p 可写为 。

人口增长logistic模型的拟合1

人口增长logistic模型的拟合1

人口增长logistic模型的拟合李月200911131952谭结200911131959刘延卿200911131915问题摘要关于人口模型的研究,我们已经有很多方法。

这个题目要求我们用LOGISTIC模型来拟合美国人口数据。

了解到LOGISTIC模型的性质和原理之后,我们根据老师给出的数据:分为以下几个步骤来进行估计。

首先,我们把离散的数据全部利用起来,已经知道,LOGISTIC模型中,x’=rx(1-x/k)是关键的函数,我们需要做的事情就是通过离散的数据来估计函数中出现的系数,r以及k,先拟合线性模型un=r-m*yn,其中un= (yn+1-yn)/yn得到r和k=r/m的近似值,我们编写了一个for循环语句,在MATLAB中实现对方程的参数的估计。

其次,我们以此近似值为参数的初值拟合非线性函数y=k/[1+(k/y(0)-1)*exp(-r*t)]需要做的就是能够尽量好的估计参数k,r。

同样我们利用非线性拟合,就可以得到一个更加好的参数估计。

在MATLAB中实现。

最终我们得到结果:(需要完善的部分)1 关键词LOGISTIC模型非线性拟合循环语句参数估计内禀增长率2 问题的重述3 问题的分析问题的关键是要做一个LOGISTIC模型。

在模型的建立中,至关重要的是对参数的估计。

我们知道的LOGISTIC模型,x’=rx(1-x/k)是这个模型的基础,所以我们最重要的任务就是要合理估计参数。

分为以下几个步骤来进行估计。

1我们把离散的数据全部利用起来,已经知道,LOGISTIC模型中,x’=rx(1-x/k)是关键的函数,我们需要做的事情就是通过离散的数据来估计函数中出现的系数,r以及k,2先拟合线性模型un=r-m*yn,其中un= (yn+1-yn)/yn得到r和k=r/m的近似值,我们编写了一个for循环语句,在MATLAB中实现对方程的参数的估计。

3我们以此近似值为参数的初值拟合非线性函数y=k/[1+(k/y(0)-1)*exp(-r*t)]需要做的就是能够尽量好的估计参数k,r。

数学建模美国人口预测报告1

数学建模美国人口预测报告1

3.模型建立模型1(1.1) 假设美国人口上限为5亿,根据表中给出的人口增长率,进行适当的处理,建立微分方程模型;(1.2) 利用 (1.1) 中的模型计算各年人口,与实际人口数量比较,计算模型的计算误差;(1.3) 利用 (1.1) 中的模型预测美国2010,2020,2030,2040,2050年的人口; (1.4) 假设人口增长率服从[1.1,1.3]上的均匀分布,结合 (1.1) 中建立微分方程模型,预测美国2010,2020,2030,2040,2050年的人口.图1为美国1790-2000年的人口数据,人口增长率r 为每10年的取值。

首先对人口增长率进行处理求出其他年份相对于1790年的增长率R1.....nnt t t r r R n其中t1=1800年….. t21=2000年(1<n ≤21) 例如1810年相对于1790年的增长率为 (3.11+2.99)/2=3.05 其他年份同理可得如图2;对增长率R 求平均直为Rx=2.64%模型1 为阻滞增长模型 假设人口增长率 r(x)是t 时人口x(t)的函数,r(x)应该是x 的减函数。

一个简单的假设是假设 r(x)为x 的线性函数r(x)=r-s*x , s>0.最大人口数量Xm=500 当x=Xm 时增长率为零。

在线性化假设前提下可以得到r(x) = r (1 – x / Xm),(公式1)其中的r 我们取之前求得的平均增长率r=0.0264 , Xm=500。

在公式1假设下,模型可修改为0(1)(0)xtm d x rx d x x x (公式2)图1上述方程改为Logistic模型x t =m x/1+(m x/0x-1)rt e(公式3)()e取2.718,t为t,求出每10年的rt值带入方程算出各年的人口数以及和实际值的误差见图3。

2010年的R*t=5.808,预测人口为362.32;2020年的R*t=6.072,预测人口为387.59;2030年的R*t=6.336,预测人口为408.16;2040年的R*t=6.6 ,预测人口为427.35;2050年的R*t=6.864,预测人口为442.48;观察预测结果1930年以前只有1800 1810 1820误差较小,其它年份误差正负都稍微偏大,1940年以后预测值逐年大于实际值,说明在给定最大人口数后增长率选择不适当,与给定的最大人口数不匹配,有待改进。

机器学习实例--预测美国人口收入状况

机器学习实例--预测美国人口收入状况

机器学习实例--预测美国⼈⼝收⼊状况⼀.问题描述每个⼈都希望⾃⼰能获得更⾼的收⼊,⽽影响收⼊⾼低的因素有很多,能否通过⼤数据分析来找出对收⼊影响相对较⼤的因素?⼆.研究意义如果我们知道对收⼊⾼低起决定性的作⽤,或者哪些因素组合在⼀起也能增⼤收⼊的可能性,那可以帮助很多⼈少⾛弯路,朝着正确的⽅向努⼒,早⽇达到⽬标。

三.数据预处理1. 选取数据集本报告选取“adult”数据集,由美国⼈⼝普查数据集库抽取⽽来。

该数据集类变量为年收⼊是否超过50k,属性变量包含年龄,⼯种,学历,职业,⼈种等14个属性变量,其中有7个类别型变量。

共有30000多条数据。

2. 预处理由于capital-gain、capital-loss属性缺失70%以上的数据,所以选择删去这两个属性。

在其他类变量中,有缺少或异常属性400多条,占总数据⽐重较⼩,也选择删去。

四.数据可视化1.workclasscation3.race4.sex5.marital-status五.算法选取与实现本次报告中选⽤决策树算法。

决策树是⼀种依托决策⽽建⽴起来的⼀种树。

在机器学习中,决策树是⼀种预测模型,代表的是⼀种对象属性与对象值之间的⼀种映射关系,每⼀个节点代表某个对象,树中的每⼀个分叉路径代表某个可能的属性值,⽽每⼀个叶⼦节点则对应从根节点到该叶⼦节点所经历的路径所表⽰的对象的值。

决策树仅有单⼀输出,如果有多个输出,可以分别建⽴独⽴的决策树以处理不同的输出。

由于数据量过⼤,普通决策树不能达到预期效果,所以再⽤预剪枝进⾏处理。

预剪枝是在决策树⽣成过程中,在划分节点时,若该节点的划分没有提⾼其在训练集上的准确率,则不进⾏划分。

下⾯是预剪枝决策树程序1. 计算数据集的基尼系数def calcGini(dataSet):numEntries=len(dataSet)labelCounts={}#给所有可能分类创建字典for featVec in dataSet:currentLabel=featVec[-1]if currentLabel not in labelCounts.keys():labelCounts[currentLabel]=0labelCounts[currentLabel]+=1Gini=1.0#以2为底数计算⾹农熵for key in labelCounts:prob = float(labelCounts[key])/numEntriesGini-=prob*probreturn Gini2. 对离散变量划分数据集,取出该特征取值为value的所有样本def splitDataSet(dataSet,axis,value):retDataSet=[]for featVec in dataSet:if featVec[axis]==value:reducedFeatVec=featVec[:axis]reducedFeatVec.extend(featVec[axis+1:])retDataSet.append(reducedFeatVec)return retDataSet3. 对连续变量划分数据集,direction规定划分的⽅向,决定是划分出⼩于value的数据样本还是⼤于value的数据样本集def splitContinuousDataSet(dataSet,axis,value,direction):retDataSet=[]for featVec in dataSet:if direction==0:if featVec[axis]>value:reducedFeatVec=featVec[:axis]reducedFeatVec.extend(featVec[axis+1:])retDataSet.append(reducedFeatVec)else:if featVec[axis]<=value:reducedFeatVec=featVec[:axis]reducedFeatVec.extend(featVec[axis+1:])retDataSet.append(reducedFeatVec)return retDataSet4. 选择最好的数据集划分⽅式def chooseBestFeatureToSplit(dataSet,labels):numFeatures=len(dataSet[0])-1bestGiniIndex=100000.0bestFeature=-1bestSplitDict={}for i in range(numFeatures):featList=[example[i] for example in dataSet]#对连续型特征进⾏处理if type(featList[0]).__name__=='float'or type(featList[0]).__name__=='int':#产⽣n-1个候选划分点sortfeatList=sorted(featList)splitList=[]for j in range(len(sortfeatList)-1):splitList.append((sortfeatList[j]+sortfeatList[j+1])/2.0)bestSplitGini=10000slen=len(splitList)#求⽤第j个候选划分点划分时,得到的信息熵,并记录最佳划分点for j in range(slen):value=splitList[j]newGiniIndex=0.0subDataSet0=splitContinuousDataSet(dataSet,i,value,0)subDataSet1=splitContinuousDataSet(dataSet,i,value,1)prob0=len(subDataSet0)/float(len(dataSet))newGiniIndex+=prob0*calcGini(subDataSet0)prob1=len(subDataSet1)/float(len(dataSet))newGiniIndex+=prob1*calcGini(subDataSet1)if newGiniIndex<bestSplitGini:bestSplitGini=newGiniIndexbestSplit=j#⽤字典记录当前特征的最佳划分点bestSplitDict[labels[i]]=splitList[bestSplit]GiniIndex=bestSplitGini#对离散型特征进⾏处理else:uniqueVals=set(featList)newGiniIndex=0.0#计算该特征下每种划分的信息熵for value in uniqueVals:subDataSet=splitDataSet(dataSet,i,value)prob=len(subDataSet)/float(len(dataSet))newGiniIndex+=prob*calcGini(subDataSet)GiniIndex=newGiniIndexif GiniIndex<bestGiniIndex:bestGiniIndex=GiniIndexbestFeature=i#若当前节点的最佳划分特征为连续特征,则将其以之前记录的划分点为界进⾏⼆值化处理#即是否⼩于等于bestSplitValue#并将特征名改为 name<=value的格式if type(dataSet[0][bestFeature]).__name__=='float'or type(dataSet[0][bestFeature]).__name__=='int':bestSplitValue=bestSplitDict[labels[bestFeature]]labels[bestFeature]=labels[bestFeature]+'<='+str(bestSplitValue)for i in range(shape(dataSet)[0]):if dataSet[i][bestFeature]<=bestSplitValue:dataSet[i][bestFeature]=1else:dataSet[i][bestFeature]=0return bestFeature5. 特征若已经划分完,节点下的样本还没有统⼀取值,则需要进⾏投票def majorityCnt(classList):classCount={}for vote in classList:if vote not in classCount.keys():classCount[vote]=0classCount[vote]+=1return max(classCount)6.由于在Tree中,连续值特征的名称以及改为了 feature<=value的形式,因此对于这类特征,需要利⽤正则表达式进⾏分割,获得特征名以及分割阈值def classify(inputTree,featLabels,testVec):firstStr=list(inputTree.keys())[0]if'<='in firstStr:featvalue=float(pile("(<=.+)").search(firstStr).group()[2:])featkey=pile("(.+<=)").search(firstStr).group()[:-2]secondDict=inputTree[firstStr]featIndex=featLabels.index(featkey)if testVec[featIndex]<=featvalue:judge=1else:judge=0for key in secondDict.keys():if judge==int(key):if type(secondDict[key]).__name__=='dict':classLabel=classify(secondDict[key],featLabels,testVec)else:classLabel=secondDict[key]else:secondDict=inputTree[firstStr]featIndex=featLabels.index(firstStr)for key in secondDict.keys():if testVec[featIndex]==key:if type(secondDict[key]).__name__=='dict':classLabel=classify(secondDict[key],featLabels,testVec)else:classLabel=secondDict[key]return classLabeldef testing(myTree,data_test,labels):error=0.0for i in range(len(data_test)):if classify(myTree,labels,data_test[i])!=data_test[i][-1]:error+=1print ('myTree %d' %error)return float(error)def testingMajor(major,data_test):error=0.0for i in range(len(data_test)):if major!=data_test[i][-1]:error+=1print ('major %d' %error)return float(error)7.主程序,递归产⽣决策树def createTree(dataSet,labels,data_full,labels_full,data_test):classList=[example[-1] for example in dataSet]if classList.count(classList[0])==len(classList):return classList[0]if len(dataSet[0])==1:return majorityCnt(classList)temp_labels=copy.deepcopy(labels)bestFeat=chooseBestFeatureToSplit(dataSet,labels)bestFeatLabel=labels[bestFeat]myTree={bestFeatLabel:{}}if type(dataSet[0][bestFeat]).__name__=='str':currentlabel=labels_full.index(labels[bestFeat])featValuesFull=[example[currentlabel] for example in data_full]uniqueValsFull=set(featValuesFull)featValues=[example[bestFeat] for example in dataSet]uniqueVals=set(featValues)del(labels[bestFeat])#针对bestFeat的每个取值,划分出⼀个⼦树。

数学建模美国人口预测报告1

数学建模美国人口预测报告1

3.模型建立模型1(1.1) 假设美国人口上限为5亿,根据表中给出的人口增长率,进行适当的处理,建立微分方程模型;(1.2) 利用 (1.1) 中的模型计算各年人口,与实际人口数量比较,计算模型的计算误差;(1.3) 利用 (1.1) 中的模型预测美国2010,2020,2030,2040,2050年的人口; (1.4) 假设人口增长率服从[1.1,1.3]上的均匀分布,结合 (1.1) 中建立微分方程模型,预测美国2010,2020,2030,2040,2050年的人口.图1为美国1790-2000年的人口数据,人口增长率r 为每10年的取值。

首先对人口增长率进行处理求出其他年份相对于1790年的增长率R1.....nnt t t r r R n其中t1=1800年….. t21=2000年(1<n ≤21) 例如1810年相对于1790年的增长率为 (3.11+2.99)/2=3.05 其他年份同理可得如图2;对增长率R 求平均直为Rx=2.64%模型1 为阻滞增长模型 假设人口增长率 r(x)是t 时人口x(t)的函数,r(x)应该是x 的减函数。

一个简单的假设是假设 r(x)为x 的线性函数r(x)=r-s*x , s>0.最大人口数量Xm=500 当x=Xm 时增长率为零。

在线性化假设前提下可以得到r(x) = r (1 – x / Xm),(公式1)其中的r 我们取之前求得的平均增长率r=0.0264 , Xm=500。

在公式1假设下,模型可修改为0(1)(0)xtm d x rx d x x x (公式2)图1上述方程改为Logistic模型x t =m x/1+(m x/0x-1)rt e(公式3)()e取2.718,t为t,求出每10年的rt值带入方程算出各年的人口数以及和实际值的误差见图3。

2010年的R*t=5.808,预测人口为362.32;2020年的R*t=6.072,预测人口为387.59;2030年的R*t=6.336,预测人口为408.16;2040年的R*t=6.6 ,预测人口为427.35;2050年的R*t=6.864,预测人口为442.48;观察预测结果1930年以前只有1800 1810 1820误差较小,其它年份误差正负都稍微偏大,1940年以后预测值逐年大于实际值,说明在给定最大人口数后增长率选择不适当,与给定的最大人口数不匹配,有待改进。

数学建模实例人口预报问题

数学建模实例人口预报问题

数学建模实例:人口预报问题1.问题人口问题是当前世界上人们最关心的问题之一.认识人口数量的变化规律,作出较准确的预报,是有效控制人口增长的前提.下面介绍两个最基本的人口模型,并利用表1给出的近两百年的美国人口统计数据,对模型做出检验,最后用它预报2000年、2010年美国人口.表1 美国人口统计数据2.指数增长模型(马尔萨斯人口模型)此模型由英国人口学家马尔萨斯(Malthus1766~1834)于1798年提出. [1] 假设:人口增长率r 是常数(或单位时间内人口的增长量与当时的人口成正比).[2] 建立模型: 记时刻t=0时人口数为x 0, 时刻t 的人口为()t x ,由于量大,()t x 可视为连续、可微函数.t 到t t ∆+时间内人口的增量为:()()()t rx tt x t t x =∆-∆+于是()t x 满足微分方程:()⎪⎩⎪⎨⎧==00x x rx dt dx(1)[3] 模型求解: 解微分方程(1)得()rt e x t x 0= (2)表明:∞→t 时,()∞→t x (r>0).[4] 模型的参数估计:要用模型的结果(2)来预报人口,必须对其中的参数r 进行估计,这可以用表1的数据通过拟合得到.拟合的具体方法见本书第16章或第18章.通过表中1790-1980的数据拟合得:r=0.307. [5] 模型检验:将x 0=3.9,r=0.307 代入公式(2),求出用指数增长模型预测的1810-1920的人口数,见表2.表2 美国实际人口与按指数增长模型计算的人口比较年以后的误差越来越大.分析原因,该模型的结果说明人口将以指数规律无限增长.而事实上,随着人口的增加,自然资源、环境条件等因素对人口增长的限制作用越来越显著.如果当人口较少时人口的自然增长率可以看作常数的话,那么当人口增加到一定数量以后,这个增长率就要随着人口增加而减少.于是应该对指数增长模型关于人口净增长率是常数的假设进行修改.下面的模型是在修改的模型中著名的一个.3. 阻滞增长模型(Logistic 模型)[1]假设:(a )人口增长率r 为人口()t x 的函数()x r (减函数),最简单假定()0, ,>-=s r sx r x r (线性函数),r 叫做固有增长率.(b )自然资源和环境条件年容纳的最大人口容量m x . [2]建立模型: 当mx x =时,增长率应为0,即()m x r =0,于是m x rs =,代入()sxr x r -=得:()⎪⎪⎭⎫⎝⎛-=m x x r x r 1 (3)将(3)式代入(1)得:模型为: ()⎪⎩⎪⎨⎧=⎪⎪⎭⎫ ⎝⎛-=001xx x x x r dt dx m (4)[3] 模型的求解: 解方程组(4)得()rt m me x x x t x -⎪⎪⎭⎫ ⎝⎛-+=110 (5)根据方程(4)作出x dtdx~ 曲线图,见图1-1,由该图可看出人口增长率随人口数的变化规律.根据结果(5)作出x~t 曲线,见图1-2,由该图可看出人口数随时间的变化规律.[4] 模型的参数估计:利用表1中1790-1980的数据对r 和x m 拟合得:r=0.2072, x m =464. [5] 模型检验:将r=0.2072, x m =464代入公式(5),求出用指数增长模型预测的1800-1990的人口数,见表3第3、4列.也可将方程(4)离散化,得)())(1()()()1(t x x t x r t x x t x t x m-+=∆+=+ t=0,1,2,… (6) 用公式(6)预测1800-1990的人口数,结果见表3第5、6列.表3 美国实际人口与按阻滞增长模型计算的人口比较图1-2 x~t 曲线现应用该模型预测人口.用表1中1790-1990年的全部数据重新估计参数,可得r=0.2083, x m=457.6. 用公式(6)作预测得:x(2000)=275; x(2010)=297.9.也可用公式(5)进行预测.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文案大全
实用标准
function f=fun5(a) n=16;w=2; x=1790:10:2000;x1=x(1:n);x2=x(n+1:21); y=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 ...
92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4]; y1=y(1:n);y2=y(n+1:21); f=[fun3(a,x1),w*fun3(a,x2)]-[y1,w*y2];
计算误差;
(1.3) 利用 (1.1) 中的模型预测美国 2010,2020,2030,2040,2050 年的人口;
(1.4) 假设人口增长率服从[1.1,1.3]上的均匀分布,结合 (1.1) 中建立微分方
程模型,预测美国 2010,2020,2030,2040,2050 年的人口.
图 1 为美国 1790-2000 年的人口数据,人
r(x) = r (1 – x / Xm),(公式 1) 其中的 r 我们取之前求得的平均增长率 r=0.0264 , Xm=500。在公式 1 假设下,模型可修 改为
dx rx(1 x )
dt
xm
x(0) x0
(公式 2)
文案大全
实用标准
上述方程改为 Logistic 模型
x(t) = xm /1+( xm / x0 -1) e rt (公式 3)
文案大全 不仅要学会熟练使用软件工具,而且要善于使用软件工具,但不能迷信软件工具。它可
主程序: t=1790:10:2000; x=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 ...
92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4]; plot(t,x,'*',t,x);a0=[300,0.03]; a=leastsq('fun5',a0) ti=1790:5:2000; xi=fun3(a,ti); hold on; plot(ti,xi,t,x,'*'); x1=fun3(a,2010) hold off 1.先取n=17,w=1.5,运行上述程序,得到结果a = [324.0666, 0.0276]; x1 = 272.7996 2. 再取n=16,w=2,运行上述程序,得到结果a=[345.1439,0.0270];x1=280.0539 把两种情况的拟合曲线画在同一个坐标系中作比较如图8.第二种情形后半段的变化趋势与 原始数据更吻合,因此,对将来人口的预测应该更好(只拟合到2010年)
e 取 2.718,t 为 t ,求出每 10 年的 rt 值带入方程算出各年的人口数以 及和实际值的误差见图 3。
2010 年的 R*t=5.808,预测人口为 362.32; 2020 年的 R*t=6.072,预测人口为 387.59; 2030 年的 R*t=6.336,预测人口为 408.16; 2040 年的 R*t=6.6 ,预测人口为 427.35; 2050 年的 R*t=6.864,预测人口为 442.48;
口增长率 r 为每 10 年的取值。首先对人口
增长率进行处理求出其他年份相对于 1790
年的增长率 R
Rtn
rt1 ..... rtn n
其中 t1=1800 年….. t21=2000 年(1<n≤21)
例如 1810 年相对于 1790 年的增长率为
(3.11+2.99)/2=3.05 其他年份同理可得如图
观察预测结果 1930 年以前只有 1800 1810 1820 误差较小,其它年份误差正 负都稍微偏大,1940 年以后预测值逐年大于实际值,说明在给定最大人口数 后增长率选择不适当,与给定的最大人口数不匹配,有待改进。
图2
文案大全
图3
实用标准
模型 2
(2.1) 根据表中的人口数据,进行曲线拟合,建立数学模型; (2.2) 利用 (2.1) 中的模型计算各年人口,与实际人口数量比较,计算模 型的计算误差; (2.3) 利用 (2.1) 中的模型预测美国2010,2020,2030,2040,2050年的人口;
将 r(即 a(2))的初值取为小于 1 的数,比如取 a=[200, 0.1]时,得到 a =[311.95 0.0280], y1 =267.19,即(2)中的 r=0.0280, xm=311.95,2010 年美国的人口预 计为 267.19。这个结果还比较合理,当 tm 时,静增长率趋于零,人口数趋于 311.95 百 万人,即极限人口 xm=311.95。拟合效果见图 7,这种效果比之前情形好。
92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4]; plot(t,x,'*',t,x); a0=[0.001,1]; a=curvefit('fun1',a0,t,x) ti=1790:5:2050; xi=fun1(a,ti); hold on
实用标准
《数学建模》报告
课程设计题目:
美国人口预测模型
1.摘要
随着人口的增加,人们越来越认识到资源的有限性,人口与资源之间的 矛盾日渐突出,人口问题已成为世界上最被关注的问题之一。
问题给出了 1790—2000 年间美国的人口数据,通过分析近两百年的美 国人口统计数据表,得知每 10 年的人口数和人口增长率的变化。预测美国未 来的人口。
图 5 建模方法 1 的拟合效果图
由图 4 可以发现美国人口的变化规律曲线近似为一条指数函数曲线,因此我们假设
美国的人口满足函数关系 x=f(t), f(t)=ea+bt,a, b 为待定常数,根据最小二乘拟合的原
n
理,a, b 是函数 E(a, b) ( f (ti ) xi )2 的最小值点。其中 xi 是 ti 时刻美国的人口数。 i 1
人口预测可按预测期长短分为短期预测 (5 年以下)、中期预测(5~20 年) 和长期预测(20~50 年)。在参数的确定和结果讨论方面,必须对中短期和长 期预测这两种情况分开讨论。中短期预测中所用的各项参数以实际调查所得 数据为基础,根据以往变动趋势可较准确加以估计,推算结果容易接近实际, 现实意义较大。
利用 MATLAB 中的曲线拟合程序“curvefit”,编制的程序如下: 首先创建指数函数的函数 M——文件 用最小二乘拟合求上述函数中待定常数,以及检验拟合效果的图形绘制程序 m-function, fun1.m function f=fun1(a,t) f=exp(a(1)*x + a(2)); t=1790:10:2000; x=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 ...
文案大全
实用标准 plot(ti,xi); t1=2010; x1=fun1(a,t1) hold off
在 MATLAB 命令窗口运行该程序,输出结果 a = 0.0148 -23.8311;x1 =358.48 因此,参数a=0.0148, b=-23.8307,拟合函数在2010处的函数值f(2010)=358.48。通过作图, 我们来看看拟合的误差如何,见图5。从图中可看出,拟合曲线与原数据还是比较吻合, 因此,预测美国在2010年的人口数为358.48百万。同理 2020年预测人口为413.33; 2030年预测人口为452.57; 2040年预测人口为475.89; 2050年预测人口为494.18。 图6为误差值%
2;对增长率 R 求平均直为 Rx=2.64%
图1
模型 1 为阻滞增长模型 假设人口增长率
r(x)是 t 时人口 x(t)的函数,r(x)应该是 x 的减函数。一个简单的假设是假设
r(x)为 x 的线性函数 r(x)=r-s*x , s>0.最大人口数量 Xm=500 当 x=Xm 时增长率
为零。在线性化假设前提下可以得到
关键词:预测模型 人口增长率 Logistic
班级:_ 姓名: 学号:_ __
文案大全
实用标准
模型 1
3.模型建立
(1.1) 假设美国人口上限为 5 亿,根据表中给出的人口增长率,进行适当的处 理,建立微分方程模型;
(1.2) 利用 (1.1) 中的模型计算各年人口,与实际人口数量比较,计算模型的
图6 观察误差和图像,模型 2 对过去的统计数据吻合得较好,但也存在问题,即人口是呈指 数规律无止境地增长,此时人口的自然增长率随人口的增长而增长,这不可能。一般说 来,当人口较少时增长得越来越快,即增长率在变大;人口增长到一定数量以后,增长 就会慢下来,即增长率变小这是因为,自然资源、环境条件等因素不允许人口无限制地 增长,它们对人口的增长起着阻滞作用,而且随着人口的增加,阻滞作用越来越大。而
92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4]; plot(x,y,'*',x,y); a0=[0.001,1]; a=curvefit('fun3',a0,x,y) xi=1790:5:2050; yi=fun3(a,xi); hold on plot(xi,yi); x1=2010; y1=fun3(a,x1) hold off
首先,人口增长率是变化值。对于问题(1)假设了人口上限因此我们选择 建立 Logistic 模型(模型 1)
其次,根据表中的人口数据,进行曲线拟合(模型 2),通过 Matlab 进行 人口预测。
2.问题分析
人口预测是一个相当复杂的问题,影响人口增长除了人口数与可利用资 源外,还与医药卫生条件的改善,人们生育观念的变化等因素有关……. 可以 采取几套不同的假设,做出不同的预测方案,进行比较。
相关文档
最新文档