数学建模作业6指数增长模型和Logistic模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)模型建立
(显示模型函数的构造过程)
由于量大,()x t 可看作连续、可微函数,t 到t t +∆时间内人口的增量为
()()
()x t t x t rx t t
+∆-=∆
于是()x t 满足微分方程
(0)dx
rx dt
x x ⎧=⎪
⎨⎪=⎩ (1) (3)模型求解
(显示模型的求解方法、步骤及运算程序、结果)
解微分方程(1)得
0()rt x t x e = (2)
当t →∞时,()(0)x t r →∞>,即随着时间增加,人口按指数规律无限增长。 (4)模型的参数估计
要用模型的结果(2)式来预报人口,必须对常数r 进行估计,可以用表1的数据通过拟合得到。取0 3.9x =,通过(2)式以及表中1790-1990的数据进行最小二乘法拟合得r=0.2169.程序如下: 模型求解:取初始值x(0)=3.9
Matlab 程序:
建立M 文件volum.m,如下: function y=volum(beta,t) y=3.9*exp(beta(1)*t);
再建立r1.m程序,如下:
t=0:1:20;
x=[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 251.4];
beta0=[0.01];
[beta,r,J]=nlinfit(t',x','volum',beta0);
beta
结果为beta =0.2169
(5)模型检验
先建立M文件renkou.m,如下:
function x=renkou(beta,t)
x=3.9*exp(beta*t);
再建立程序zhishu.m,如下:
t=0:1:20;
x=[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 251.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 =
Columns 1 through 8
3.9000
4.8444 6.0176 7.4748 9.2849 11.5334 14.3264 17.7957
Columns 9 through 16
22.1051 27.4582 34.1075 42.3671 52.6268 65.3711 81.2015 100.8655
Columns 17 through 21
125.2914 155.6324 193.3208 240.1359 298.2879
error =
Columns 1 through 8
0 0.4556 1.1824 2.1252 3.6151 5.5666 8.8736 13.6043
Columns 9 through 16
16.4949 22.7418 28.7925 33.6329 39.3732 41.1289 41.9985 30.8345
Columns 17 through 21
25.4086 23.6676 10.6792 13.6359 46.8879
图像如下:
根据拟合出的数据和原来数据填写表格,如下:
表2 实际人口与按指数增长模型计算的人口比较
年(公元) 实际人口
(百万)
指数增长模型
预测人口(百万)误差
图2:阻滞增长模型~x t 曲线图
(4)模型的参数估计
通过表1中1790-1990年的数据对r 和m x 进行拟合,得到0.2798r =,
311.9555m x =。程序如下:
模型求解:取初始值x(0)=3.9 Matlab 程序:
建立M 文件volum1.m,如下: function y1=volum1(beta,t)
y1=beta(1)./(1+((beta(1)./3.9)-1).*exp(-beta(2)*t));
再建立程序rm.m ,如下:
t=0:1:20;
x=[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 251.4]; beta0=[10 0.01]';
[beta,r,J]=nlinfit(t',x','volum1',beta0); beta
t
x 0
x m x m /2 x 0
结果为beta =
311.9555
0.2798
(5)模型检验
t=0:1:20;
x=[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 251.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 =