数学建模-人口增长模型
数学建模
人口增长模型
姓名 李伟东
班级 物联网21
学号 2120509011
数学建模 李伟东
人口增长模型
摘要
本文根据某地区的人口统计数据,建立模型估计该地区2010年的人口数量。
首先,通过直观观察人口的变化规律后,我们假设该地区的人口数量是时间的二次函数,建立了一个二次函数模型,并用最小二乘法对已有数据进行拟合得
人口数为333.8668百万。 到模型的具体参数,从而可以预测2010年的
然后,我们发现从1980年开始该地区的人口增长明显变慢,于是我们假设人口增长率是人口数的线性减函数,即随着人口数的增加,人口的增长速度会慢慢下降,从而我们建立了阻滞增长模型,利用此模型我们最后求出2010年的人口预报数为296.3865。
关键字:人口预报,二次函数模型,阻滞增长模型
问题重述:
表1 该地区人口统计数据
年 份 1800 1810 1820 1830 1840 1850 1860 人口 7.2 13.8 17.2 17.6 24.7 33.6 36.2 年 份 1870 1880 1890 1900 1910 1920 1930 人口 48.6 58.1 73.3 89.8 105.6 125.9 149.1 年 份 1940 1950 1960 1970 1980 1990 2000 人口 172.2 189.8 230.5 246.7 262.1 271.2 280.3
问题分析
Matlab首先,我们运用软件[1]编程(见附件1),绘制出1800年到2000年的人口数据图,如图1。
x=1800:10:2000;
y=[7.2 13.8 17.2 17.6 24.7 33.6 36.2 48.6 58.1 73.3 89.8 105.6 125.9 149.1
172.2 189.8 230.5 246.7 262.1 271.2 280.3];
figure;
1
数学建模 李伟东
plot(x,y,'r*');
300
250
200
150
100
50
018001820184018601880190019201940196019802000
图1 1800年到2000年的人口数据图
从图1我们可以看出1800年到2000年的人口数是呈现增长的趋势的,而且类似二次函数增长。 所以我们可以建立了一个二次函数模型,并用最小二乘法对已有数据进行拟合得到模型的具体参数。
随着人口数的增加,人口的增长速度会慢慢下降,从而我们可以建立一个阻滞增长模型。
模型建立
符号说明
x(t) 时刻的人口数量 t
初始时刻的人口数量 x0
人口增长率 r
x 环境所能容纳的最大人口数量,即 r(x),0mm
模型一:二次函数模型
x(t)我们假设该地区时刻的人口数量的人口数量是时间的二次函数,即: tt
2
数学建模 李伟东
2 xtatbtc(),,,
我们可以根据最小二乘法,利用已有数据拟合得到具体参数。即,要求、和ba,使得以下函数达到最小值: c
n22Eabcatbtcx(,,)(),,,, ,iii,1i
其中是时刻该地区的人口数,即有:xtii
2222 E(a,b,c),(a,1800,b,1800,c,7.2),...,a,2000,b,2000,c,280.3)
,,,EEE令,可以得到三个关于、和的一次方程,从而可b,,,0,0,0ac,,,abc
解得、和。 bac
我们用Matlab编程(见附件2),解得0.006018,b,,21.357,c,18948,a,
即:
2 x(t),0.006018t,21.357t,18948
x(2010),333.8668从而我们可以预测2010年的人口数为百万。
x=1800:10:2000;
y=[7.2 13.8 17.2 17.6 24.7 33.6 36.2 48.6 58.1 73.3 89.8 105.6 125.9 149.1
172.2 189.8 230.5 246.7 262.1 271.2 280.3];
plot(x,y,'r*'); % 画点,红色
hold on; % 使得以下图形画在同一个窗口
p = polyfit(x,y,2) % 多项式拟合,返回系数p
xn = 1800:5:2010; % 定义新的横坐标
yn = polyval(p,xn); % 估计多项式p的函数值 plot(xn,yn) % 把(x,yn)定义的数据点依次连起来
% 给图形加上图例
xlabel('年份');
ylabel('人口数');
legend('原始数据','拟合函数',2);
box on;
grid on;
x1=2010;
3
数学建模 李伟东
y1 = polyval(p,x1) % 估计多项式p在未知点的函数值
350
原始数据
拟合函数300
250
200
人口数150
100
50
0180018501900195020002050
年份
图2 二次函数模型的拟合效果图
图2是所得到的二次函数模型和原数据点的拟合效果图。 从图2可以看出拟合的效果在1950年之前还可以,但是对后期的数据拟合的不好。
模型二:阻滞增长模型
我们假设人口增长率是人口数的线性减函数,即随着人口数的增加,人rx
口增长速度会慢慢下降:
rxrsx(),,0
人口数量最终会达到饱和,且趋于一个常数,当时,增长率为0: xx,xmm
rsx,,00m
由上面的关系式可得出:
,,x ()1rxr,,,,0xm,,
x(1800),7.2把上式代进指数增长模型的方程中,并利用初始条件,可以得到:
4
数学建模 李伟东
,,,dxx,,rx,1,,0,, dtx,m,,
,x(1800),7.2,
解得:
xmx(t), 10x,,,r(t,1800)m11e,,,,72,,
我们可以利用已有数据拟合求解得(程序见附件4):
, -0.027958。 x,334.36r,m
x(2010),296.3865可以预测2010年的人口数为百万。
clc; % 清屏幕
clear; % 清除以前的变量
(t,y) % 数据点
t=1800:10:2000;
y=[7.2 13.8 17.2 17.6 24.7 33.6 36.2 48.6 58.1 73.3 89.8 105.6 125.9 149.1
172.2 189.8 230.5 246.7 262.1 271.2 280.3];
plot(t,y,'b*');
% 定义需要拟合的函数类型myfun(a,t),a是参数列表,t是变量 myfun = @(a,t)[a(1)./(1+(a(1)./7.2-1)*exp(a(2)*(t-1800)))];
a0=[500,1]; % 初始值
% 非线性拟合.最重要的函数,第1个参数是以上定义的函数名,第2个参数是初值,第3、4个参数是已知数据点
a=lsqcurvefit(myfun,a0,t,y); disp(['a=' num2str(a)]); % 显示得到的参数
% 画出拟合得到的函数的图形
ti=1800:10:2010;
yi=myfun(a,ti);
hold on;
plot(ti,yi,'r');
% 给图形加上图例
xlabel('年份');
ylabel('人口数');
5
数学建模 李伟东
legend('原始数据','拟合函数',2);
box on;
grid on;
tn=2010; % 预测在未知点的函数值
yn=myfun(a,tn);
disp(['yn=' num2str(yn)]); % 显示得到的参数
300
原始数据
拟合函数
250
200
150
人口数
100
50
0180018501900195020002050
年份
图4 阻滞增长模型的拟合效果图
从图4我们可以看出我们的模型对该地区的人口数据拟合得很好。可以看出阻滞增长模型更客观地反映人口的增长规律,基本上都在拟合曲线上,拟合效果好,特别是后期的数据非常的吻合,所以次模型对未来的人口数预测是很适合的,结果更准确,对未来的预测比指数增长模型更为优越。
参考文献
[1] 周义仓 赫孝良. 数学建模实验, 西安交通大学出版社, 2007年。
6
数学建模 李伟东
7
本文档为【数学建模-人口增长模型】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。