数学建模作业6指数增长模型和Logistic模型.docx
《数学建模作业6指数增长模型和Logistic模型.docx》由会员分享,可在线阅读,更多相关《数学建模作业6指数增长模型和Logistic模型.docx(15页珍藏版)》请在冰豆网上搜索。
数学建模作业6指数增长模型和Logistic模型
佛山科学技术学院
上机报告
课程名称数学建模
上机项目指数增长模型和Logistic模型
专业班级姓名学号________
一、问题提出
人口问题是当前世界上人们最关心的问题之一。
认识人口数量的变化规律,作出较准确的预报,是有效控制人口增长的前提。
要求:
分别建立并求解两个最基本的人口模型,即:
指数增长模型和Logistic模型,并利用表1给出的近两百年的人口统计数据,画出图形拟合数据,对模型做出检验,最后用它预报2000年的人口。
表1人口统计数据
年(公元)
人口(百万)
1790
3.9
1800
5.3
1810
7.2
1820
9.6
1830
12.9
1840
17.1
1850
23.2
年(公元)
人口(百万)
1860
31.4
1870
38.6
1880
50.2
1890
62.9
1900
76.0
1910
92.0
1920
106.5
年(公元)
人口(百万)
1930
123.2
1940
131.7
1950
150.7
1960
179.3
1970
204.0
1980
226.5
1990
251.4
模型一:
指数增长(Malthus)模型:
(1)模型假设
常用的计算公式:
今年人口x0,年增长率r,k年后人口为
假设:
人口增长率r是常数(或单位时间内人口的增长量与当时的人口成正比)。
符号说明:
~t=0时的人口数,
~时刻t的人口数
(2)模型建立
(显示模型函数的构造过程)
由于量大,
可看作连续、可微函数,
到
时间内人口的增量为
于是
满足微分方程
(1)
(3)模型求解
(显示模型的求解方法、步骤及运算程序、结果)
解微分方程
(1)得
(2)
当
时,
即随着时间增加,人口按指数规律无限增长。
(4)模型的参数估计
要用模型的结果
(2)式来预报人口,必须对常数r进行估计,可以用表1的数据通过拟合得到。
取
,通过
(2)式以及表中1790-1990的数据进行最小二乘法拟合得r=0.2169.程序如下:
模型求解:
取初始值x(0)=3.9
Matlab程序:
建立M文件volum.m,如下:
functiony=volum(beta,t)
y=3.9*exp(beta
(1)*t);
再建立r1.m程序,如下:
t=0:
1:
20;
x=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5251.4];
beta0=[0.01];
[beta,r,J]=nlinfit(t',x','volum',beta0);
beta
结果为beta=0.2169
(5)模型检验
先建立M文件renkou.m,如下:
functionx=renkou(beta,t)
x=3.9*exp(beta*t);
再建立程序zhishu.m,如下:
t=0:
1:
20;
x=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5251.4];
beta0=0.01;
beta=nlinfit(t',x','renkou',beta0)
y=3.9*exp(beta*t);
y
plot(t,x,'*',t,y)
error=abs(y-x)
结果为:
beta=
0.2169
y=
Columns1through8
3.90004.84446.01767.47489.284911.533414.326417.7957
Columns9through16
22.105127.458234.107542.367152.626865.371181.2015100.8655
Columns17through21
125.2914155.6324193.3208240.1359298.2879
error=
Columns1through8
00.45561.18242.12523.61515.56668.873613.6043
Columns9through16
16.494922.741828.792533.632939.373241.128941.998530.8345
Columns17through21
25.408623.667610.679213.635946.8879
图像如下:
根据拟合出的数据和原来数据填写表格,如下:
表2实际人口与按指数增长模型计算的人口比较
年
(公元)
实际人口
(百万)
指数增长模型
预测人口(百万)
误差
1790
3.9
3.9000
0
1800
5.3
4.8447
0.4553
1810
7.2
6.0181
1.1819
1820
9.6
7.4758
2.1242
1830
12.9
9.2866
3.6134
1840
17.1
11.5360
5.5640
1850
23.2
14.3303
8.8697
1860
31.4
17.8014
13.5986
1870
38.6
22.1132
16.4868
1880
50.2
27.4695
22.7305
1890
62.9
34.1232
28.7768
1900
76.0
42.3885
33.6115
1910
92.0
52.6558
39.3442
1920
106.5
65.4101
41.0899
1930
123.2
81.2537
41.9463
1940
131.7
100.9350
30.7650
1950
150.7
125.3834
25.3166
1960
179.3
155.7538
23.5462
1970
204.0
193.4805
10.5195
1980
226.5
240.3453
13.8453
1990
251.4
298.5617
47.1617
分析原因,该模型的结果说明人口将以指数规律无限增长。
而事实上,随着人口的增加,自然资源、环境条件等因素对人口增长的限制作用越来越显著。
如果当人口较少时人口的自然增长率可以看作常数的话,那么当人口增加到一定数量以后,这个增长率就要随着人口增加而减少。
于是应该对指数增长模型关于人口净增长率是常数的假设进行修改。
下面的模型是修改后的阻滞增长模型。
模型二:
Logistic模型(阻滞增长模型)
(1)模型假设
假设1:
人口增长率r为人口
的函数
(减函数),即可假定
(线性函数),r叫做固有增长率。
假设2:
自然资源和环境条件能容纳的最大人口容量为
(2)模型建立
当
时,增长率应为0,即
,于是
,代入
,得:
(4)
将(3)式代入
(1)式得:
(5)
(3)模型求解
(显示模型的求解方法、步骤及运算程序、结果)
解(4)得
(6)
根据方程(4)作出
曲线图,如图1所示,由图1看出人口增长率随人口数的变化规律。
根据结果(5)式作出
的曲线图,如图2所示,由图2可看出人口数随时间的变化规律。
图1:
阻滞增长模型
曲线图
图2:
阻滞增长模型
曲线图
(4)模型的参数估计
通过表1中1790-1990年的数据对
和
进行拟合,得到
,
。
程序如下:
模型求解:
取初始值x(0)=3.9
Matlab程序:
建立M文件volum1.m,如下:
functiony1=volum1(beta,t)
y1=beta
(1)./(1+((beta
(1)./3.9)-1).*exp(-beta
(2)*t));
再建立程序rm.m,如下:
t=0:
1:
20;
x=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5251.4];
beta0=[100.01]';
[beta,r,J]=nlinfit(t',x','volum1',beta0);
beta
结果为beta=
311.9555
0.2798
(5)模型检验
t=0:
1:
20;
x=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5251.4];
y=(311.9555)./(1+((311.9555)./3.9-1).*exp(-0.2798*t));
y
plot(t,x,'*',t,y,'r');
wucha=abs(x-y)
y=
Columns1through8
3.90005.13846.76158.882411.643215.218919.820425.6927
Columns9through16
33.107642.345953.665967.257183.1819101.3160121.3073142.5731
Columns17through21
164.3532185.8106206.1566224.7610241.2164
wucha=
Columns1through8
00.16160.43850.71761.25681.88113.37965.7073
Columns9through16
5.49247.85419.23418.74298.81815.18401.892710.8731
Columns17through21
13.65326.51062.15661.739010.1836
根据拟合出的数据和原来数据填写表格
表3实际人口与按logistic增长模型计算的人口比较
年
(公元)
实际人口
(百万)
logistic模型
预测人口(百万)
误差
1790
3.9
3.9000
0
1800
5.3
5.1384
0.1616
1810
7.2
6.7615
0.4385
1820
9.6
8.8824
0.7176
1830
12.9
11.6432
1.2568
1840
17.1
15.2189
1.8811
1850
23.2
19.8204
3.3796
1860
31.4
25.6927
5.7073
1870
38.6
33.1076
5.4924
1880
50.2
42.3459
7.8541
1890
62.9
53.6659
9.2341
1900
76.0
67.2571
8.7429
1910
92.0
83.1819
8.8181
1920
106.5
101.3160
5.1840
1930
123.2
121.3073
1.8927
1940
131.7
142.5731
10.8731
1950
150.7
164.3532
13.6532
1960
179.3
185.8106
6.5106
1970
204.0
206.1566
2.1566
1980
226.5
224.7610
1.7390
1990
251.4
241.2164
10.1836
根据对比可知,第二个模型更好,所以我们用第二个模型来预测。
用拟合得出的公式
可以预测
,即2000年的人口有306.4791百万人。