




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实验03 建立数学模型3.1 人口指数增长模型演示本实验不要求写实验报告。1实验目的(1)学会人口指数增长模型的建模过程; (2)进一步掌握MATLAB软件的一些基本功能;(3)初步掌握用MATLAB软件对模型作分析检验;(4)学会使用MATLAB软件的help功能。2实验内容(参考教材p10-12)利用表1,对人口指数增长模型作检验。表1 美国1790-2000年人口统计数据(以百万为单位)年17901800181018201830184018501860187018801890人口3.95.37.29.612.917.123.231.438.650.262.9年1
2、9001910192019301940195019601970198019902000人口76.092.0106.5123.2131.7150.7179.3204.0226.5251.4281.43实验步骤(1)模型假设人口增长率为常数r。(2)模型建立(微分方程模型)记时刻t的人口为x(t),为了利用微积分这一数学工具,将x(t)视为连续、可微函数。记初始时刻(t=0)的人口为x0。由模型假设人口增长率为常数r。考虑t到t+t时间内人口的增量,可得x(t+t)-x(t)=rx(t)t x(t+t)-x(t) = rx(t) t 令t0,得到x(t)满足微分方程 dx = rx(t) dt x
3、(0)=x0用MATLAB求解该微分方程>> x=dsolve('Dx=r*x','x(0)=x0') x =x0*exp(r*t)得解为x(t) = x0 e r t即为人口指数增长模型。(3)参数估计用表1的数据估计参数x0、r。将x(t) = x0 e r t两边对数,可得y = rt + a, y = ln x, a = ln x0采用线性最小二乘法进行数据拟合,用MATLAB软件计算。以下是MATLAB的一个脚本式文件:%分别用1790年至1900年的数据和全部数据(1790年至2000年)进行数据拟合求参数r,x0。%文件名:p10_ra
4、.mclear;clc;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 281.4;t=0:length(x)-1;y1=log(x(1:12);%取1790-1900年的数据ra1=polyfit(t(1:12),y1,1);%为数据数拟合多项式,用help ployfit查阅disp('用1790-1900年的数据估计的参数为:')disp(' r=',num2str(round
5、(10000*ra1(1)/10000),. ' x0=',num2str(exp(ra1(2)y2=log(x);%取1790-2000年的数据ra2=polyfit(t,y2,1);disp('用1790-2000年的数据估计的参数为:')disp(' r=',num2str(round(10000*ra2(1)/10000),. ' x0=',num2str(exp(ra2(2)运行结果:用1790-1900年的数据估计的参数为: r=0.2743 x0=4.1884用1790-2000年的数据估计的参数为: r=0.202
6、2 x0=6.045分别得到两个人口指数增长模型:x1(t) = 4.1884 e 0.2743 tx2(t) = 6.0450 e 0.2022 tx1(t),x2(t)是1790+10t年的人口数(以百万为单位),t=0,1,2,。 r为每10年的人口增长率(估计值)。x(0)=x0为1790年初始人口数(估计值)。(4)结果分析用以上模型计算出的结果与实际数据作比较。为了减少误差,把求模型参数和计算结果数据编写成一个MATLAB程序。以下是一个脚本式文件:%分别用1790年至1900年和用1790年至2000年的数据建立人口指数增长模型,用模型计算人口数据。%文件名:p11_data.m
7、clear;clc;format compact %输出中没有空行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 281.4;t=0:length(x)-1;y1=log(x(1:12);ra1=polyfit(t(1:12),y1,1);y2=log(x);ra2=polyfit(t,y2,1);y=ra1(1)*t+ra1(2);ra2(1)*t+ra2(2);xx=exp(y);xx(1,13:22)=zer
8、os(1,10);disp('指数增长模型拟合美国人口数据的结果')disp('第1行:年')disp('第2行:实际人口')disp('第3行:计算人口(1790年至1900年)')disp('第4行:计算人口(1790年至2000年)')format short g;%用help format查阅1790+10*t;x;round(10*xx)/10format;以上m文件的运行结果:指数增长模型拟合美国人口数据的结果第1行:年第2行:实际人口第3行:计算人口(1790年至1900年)第4行:计算人口(1790
9、年至2000年)ans = Columns 1 through 6 1790 1800 1810 1820 1830 1840 3.9 5.3 7.2 9.6 12.9 17.1 4.2 5.5 7.2 9.5 12.5 16.5 6 7.4 9.1 11.1 13.6 16.6 Columns 7 through 12 1850 1860 1870 1880 1890 1900 23.2 31.4 38.6 50.2 62.9 76 21.7 28.6 37.6 49.5 65.1 85.6 20.3 24.9 30.5 37.3 45.7 55.9 Columns 13 through 1
10、8 1910 1920 1930 1940 1950 1960 92 106.5 123.2 131.7 150.7 179.3 0 0 0 0 0 0 68.4 83.7 102.5 125.5 153.6 188 Columns 19 through 22 1970 1980 1990 2000 204 226.5 251.4 281.4 0 0 0 0 230.1 281.7 344.8 422.1以下是由数据和模型绘图的三个m文件,其中一个是脚本式文件,两个是函数式文件:%根据人口数据和人口指数增长模型绘制图形。%文件名:p11_fig.mclear;clc;x=3.9 5.3 7.2
11、 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 281.4;t=0:length(x)-1;plot(t(1:12),x(1:12),'b+');title('指数增长模型拟合图形(1790年至1900年)','FontSize',8);xlabel('t (1790+10 t 年)','FontSize',8);ylabel('x (百万人)'
12、,'FontSize',8);hold on;fplot('p11_figfun1',0,11,'r');%用help fplot查阅axis(0,12,0,100);legend('实际数据','计算结果',0); %用help legend查阅hold off;figure(2);plot(t,x,'b+');title('指数增长模型拟合图形(1790年至2000年)','FontSize',8);xlabel('t (1790+10 t 年)'
13、,'FontSize',8);ylabel('x (百万人)','FontSize',8);hold on;fplot('p11_figfun2',0 length(x)-1,'r');axis(0,25,0,500);%用help查阅legend('实际数据','计算结果',0);hold off;下面是一个函数式文件:%用1790-1900年的人口数据得到的模型函数%文件名:p11_figfun1.mfunction x=p11_figfun1(t)x=4.1884*exp(0.
14、2743*t);下面是另一个函数式文件:%用1790-2000年的人口数据得到的模型函数%文件名:p11_figfun2.mfunction x=p11_figfun2(t)x=6.0450*exp(0.2022*t);执行p11_fig.m得到以下两个图形:可以看出,我们所求得的模型基本上能够描述十九世纪以前美国人口的增长,但是进入二十世纪后,美国人口增长明显变慢,这个模型就不合适了。下面讨论人口增长率为常数r这个模型假设是否合理。以下是求每10年的各个人口增长率的脚本式文件:%用数值微分的三点公式计算美国人口增长率(/10年)%文件名:p12_r.mclear;clc;x=3.9 5.3
15、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 281.4;t=0:length(x)-1;r=zeros(size(x);for i=1:length(x) %求数值微分 if i=1 r(1)=(-3*x(1)+4*x(2)-x(3)/2;%x(1) elseif i=length(x) r(i)=(x(i-2)-4*x(i-1)+3*x(i)/2; %x(length(x) else r(i)=(x(i+1)-x(i-1)/2;
16、 %x(i),1<i<length(x) endendr=r./x; %求增长率(/10年)disp('第1行:年')disp('第2行:增长率(/10年)')format short g;1790+10*t;round(10000*r)/10000%输出数据plot(t,r,'ro-');hold on;plot(0,11,0.2743,0.2743,':',0,21,0.2022,0.2022,'-.');xlabel('t(1790+10t年)','FontSize'
17、;,8);ylabel('r(增长率/10年)','FontSize',8);legend('实际增长率','r = 0.2743(1790-1900年)','r = 0.2022(1790-2000年)');hold;以上m文件的执行结果:第1行:年第2行:增长率(/10年)ans = Columns 1 through 6 1790 1800 1810 1820 1830 1840 0.2949 0.3113 0.2986 0.2969 0.2907 0.3012 Columns 7 through 12 18
18、50 1860 1870 1880 1890 1900 0.3082 0.2452 0.2435 0.242 0.2051 0.1914 Columns 13 through 18 1910 1920 1930 1940 1950 1960 0.1658 0.1465 0.1023 0.1044 0.1579 0.1486 Columns 19 through 22 1970 1980 1990 2000 0.1157 0.1046 0.1092 0.1157 可见实际的增长率变化范围很大,必须修改指数增长模型关于人口增长率是常数这个基本假设。3.2 人口指数增长模型检验本实验要求写实验报告。
19、1实验目的学会用MATLAB软件的功能检验模型。2实验内容用1900年至2000年的数据拟合指数增长模型x(t)=x0*er*t,计算并作图,观察结果。具体任务如下:(1)参数估计r,x0;(2)结果分析。计算指数增长模型拟合美国人口数据的结果;绘制指数增长模型拟合图形(1900年至2000年)。3.3 人口阻滞增长模型(Logistic模型)检验演示1实验目的学会用MATLAB软件的功能检验模型。学会用help查询系统函数的使用。2实验内容(参考教材p12-15)(1)用MATLAB绘制Logistic模型dx/dtx曲线。dx x = rx(1- ), x(0)=x0dt xm取r=xm=
20、1。(2)用MATLAB求解微分方程dx x = rx(1- ), x(0)=x0dt xm(3)用MATLAB绘制Logistic模型xt曲线x(t)=xm/(1+(xm/x0-1)e-rt)取xm=1,r=2.3,x0=0.1。(4)用1790年至1990年的数据拟合估计参数r,xm,计算阻滞增长模型拟合美国人口数据的结果(1790-1990),绘制阻滞增长模型拟合图形(以1790年为起点)。用下面方程dx/dt r = r-sx, s = x xm估计参数r,xm。3实验步骤(1)用MATLAB绘制Logistic模型dx/dtx曲线。dx x = rx(1- ), x(0)=x0dt
21、xm取r=xm=1。%绘制Logistic模型dx/dtx,dx/dt=rx(1-x/xm),r=xm=1%文件名p13_dx.mfplot('x*(1-x)',0 1 0 0.351)title('Logistic模型dx/dtx曲线');hold onplot(0.5 0.5,0 0.25,':')text(0,0.351,'dx/dt','VerticalAlignment','bottom')text(1,0,' x','HorizontalAlignment'
22、;,'left')text(0.5,-0.025,'xm/2','HorizontalAlignment','center')text(1,-0.025,'xm','HorizontalAlignment','center')运行结果如图。(2)用MATLAB求解微分方程dx x = rx(1- ), x(0)=x0dt xm>> x=dsolve('Dx=r*x*(1-x/xm)','x(0)=x0')x =xm/(1+exp(-r*t)
23、*(xm-x0)/x0)即得x(t)=xm/(1+(xm/x0-1)e-rt)(3)用MATLAB绘制Logistic模型xt曲线x(t)=xm/(1+(xm/x0-1)e-rt)%绘制Logistic模型xt曲线,x(t)=xm/(1+(xm/x0-1)e(-rt),xm=1,r=2.3,x0=0.1%文件名p13_x.mfplot('1/(1+(1/0.1-1)*exp(-2.3*t)',0 3 0 1.401)title('Logistic模型xt曲线');hold onplot(0 3,1 1,':',0 1,0.5 0.5,':
24、')text(0,1.401,'x','VerticalAlignment','bottom')text(3,0,' t','HorizontalAlignment','left')text(0,1,'xm ','HorizontalAlignment','right')text(0,0.5,'xm/2 ','HorizontalAlignment','right')运行结果如图。(4)用1790
25、年至1990年的数据拟合估计参数r,xm,计算阻滞增长模型拟合美国人口数据的结果(1790-1990),绘制阻滞增长模型拟合图形(以1790年为起点)。用下面方程dx/dt r = r-sx, s = x xm估计参数r,xm。以下是脚本式文件:%用数值微分的三点公式计算美国人口增长率(/10年)%文件名:p14_datafig.mclear;clc;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;%21个t=0:
26、length(x)-1;rr=zeros(size(x);for i=1:length(x) %求数值微分 if i=1 rr(1)=(-3*x(1)+4*x(2)-x(3)/2; elseif i=length(xx) rr(i)=(x(i-2)-4*x(i-1)+3*x(i)/2; else rr(i)=(x(i+1)-x(i-1)/2; endendrr=rr./x; %rr=(dx/dt)/x, 增长率(/10年)sr=polyfit(x,rr,1);r=sr(2);xm=-r/sr(1);disp('固有增长率:r=',num2str(round(10000*r)/10000),'/10年')disp('人口容量:xm=',num2str(round(10000*xm)/10000)x0=3.9;%xm=392.0886;r=0.2557;xx=xm./(1+(xm/x0-1)*exp(-r*t);%计算人口disp('阻滞增长模型拟合美国人口数据的结果')disp('第1行:年')disp('第2行:实际人口')disp('第3行:计算人口')format short g;1790+10*t;x;round(10*xx)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路枢纽关键设备故障诊断方法
- 城市地下管线综合布置方案
- 助教岗位培训计划及日志模板
- 文化传媒项目策划与推广实施方案
- 企业内训课程开发流程及工具包
- 基础语法词性辨析与练习题
- 护士职业培训综合教材
- 水质检测操作与质量控制措施
- 初中物理实验题操作技巧汇编
- 陈弘晔给张老师的一封信550字13篇
- 预防校园欺凌家长告知书
- 《空调基础知识》课件
- 南海区高一上学期9月初高中衔接测试语文试题(含答案)
- 事业单位考试职业能力倾向测验(自然科学专技类C类)试卷及解答参考(2025年)
- 人教统编版(部编版)小学科学教材目录
- 6.4.3.1余弦定理教学设计高一下学期数学人教A版
- 颈椎后路单开门椎管扩大成形术的护理课件
- 新外研版(三起)三年级上册英语全册教学课件(2024年新版教材)
- 外研版七年级上册初一英语全册课时练(一课一练)
- 蚯蚓养殖和治污改土技术规程 第1部分:蚯蚓养殖和粪污处理
- 成人鼻肠管的留置与维护(2021团体标准解读)-20221004172843
评论
0/150
提交评论