1第一章数据建模常规方法的MATLAB实现
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
预报人口的增长 指数增长模型 阻滞增长模型
修改假设
• 参数估计和模型检验是建模的重要步骤. • 线性最小二乘法是参数估计的基本方法.
1.4 数据的可视化
1.4.1 地形地貌图形的绘制
对某地地貌测量所得结果(相对某高度),x,y方向均从 1~10,用这些数据尽量准确地绘制出该地区的地形图。
关键是要将未测量的高度用数据插值的方法求出来,然后 用MATLAB绘制出来。
MATLAB程序如下
p=0.03;x=25.0216; for y1=-0.002:0.0004:0.002
y0=(-0.036:0.001:0.036)'*ones(1,73); z0=ones(73,1)*(-0.036:0.001:0.036); x0=(y0.^2+z0.^2)/(2*p); xn=(p^3+4*x0*2*p.*x0+p*(-4*y1*y0+3*2*p*x0))./(2*(p^2+2*p*x0)); yn=(2*p*x0.*y0+p^2*(-y1+y0)+y1*(y0.^2-z0.^2))./(p^2+2*p*x0); zn=(p^2+2*p*x0+2*y1*y0).*z0./(p^2+2*p*x0); y=y0+(yn-y0).*(x-x0)./(xn-x0); z=z0+(zn-z0).*(x-x0)./(xn-x0); plot(y,z,'b.') xlabel('y');ylabel('z'); hold on end
? 随着时间增加,人口按指数规律无限增长.
指数增长模型的应用及局限性
• 与19世纪以前欧洲一些地区人口统计数据吻合. • 适用于19世纪后迁往加拿大的欧洲移民后代. • 可用于短期人口增长预测. • 不符合19世纪后多数地区人口增长规律. • 不能预测较长期的人口增长过程. 19世纪后人口数据 人口增长率r不是常数(逐渐下降)
中国人口增长概况
年 1908 1933 1953 1964 1982 1990 1995 2000 人口(亿) 3.0 4.7 6.0 7.2 10.3 11.3 12.0 13.0
研究人口变化规律
控制人口过快增长
常用的计算公式 今年人口 x0, 年 r)k
xm
例:美国人口数据(百万)
y r sx
t 1860 1870 1880 …… 1960 1970 1980 1990 2000 x 31.4 38.6 50.2 …… 179.3 204.0 226.5 251.4 281.4
数据(t,x) 数据(x,y) 用最小二乘法估计r,s r,xm
s r r(x) r(1 x )
xm
xm
阻滞增长模型(Logistic模型) r(x) r(1 x )
xm
指数增 长模型
dx rx dt
dx/dt
dx r(x)x rx(1 x )
dt
xm
x
xm
xm/2
0
xm/2 xm x
x0 0
t
x(t)
xm
1 ( xm 1)e rt
第一章 数据建模常规方法的MATLAB实现
1.1 数据的读入与写出 1.2 数据拟合方法 1.3 数据拟合应用实例 1.4 数据的可视化
1.1 数据的读入与写出
数据读入
(算 法) 程序
输出
数据 图形
数学建模不可避免地要用到大量的数据,最简单的方法是 复制、粘贴,但是不方便。另一种方法是与Excel和记事本 (*.dat或者*.txt的文件)进行交互。
自学(我 的教材缺 页!)
例子:d122
1.2.2 指定函数拟合 1.2.3 曲线拟合工具箱
MATLAB主窗口左下角: start→toolboxes→CurveFitting→Curve Fitting Tool (cftool)
1.3 数据拟合应用实例
1.3.1 人口预测模型
某地区1971-2000年人口数据,给出该地区人口增长的数学 模型。
0.1,0,0.58,0,0,1.75,0,-0.11,0,0;
0,-0.01,0,0,0.3,0,0,0,0,0.01];
[xi,yi]=meshgrid(1:0.1:10);
%构造插值网格
hi=interp2(x,y,h,xi,yi,'spline'); %二维插值命令
surf(hi);
%绘制地形图
xlabel('x');ylabel('y'),zlabel('h');
1.4.2 车灯光源投影区域的绘制CUMCM2002A
2002年CUMCM的A题,其中的一个要求时绘制投影区 域。先建立车灯投影的数学模型,再根据模型绘出投影效果 图。
根据得到的线光源长度,用投点法可以画出测试屏上的 反射光亮区。MATLAB程序如下:
1.1.2 记事本与MATLAB的数据交互
%从记事本t.txt中读取数据 [name,type, x,y,answer]=textread('t.txt','%s Type %n %f %n %s',2)
%将Matlab数据写入记事本 fid= fopen('tp.txt','wt'); %文件扩展名可以为:*.dat或*.xls fprintf(fid,'This is the database of class 1.\n'); name='Sally';types=1;x=3.1;y=45;answer='Yes'; fprintf(fid,'% s Type %u %f %u %s \n',name,types,x,y,answer); name='Tom';types=2;x=2.5;y=20;answer='No'; fprintf(fid,'% s Type %u %f %u %s \n',name,types,x,y,answer); fclose(fid);
k
0
指数增长模型——马尔萨斯提出 (1798)
基本假设 : 人口(相对)增长率 r 是常数
x(t) ~时刻t的人口
dx dt rx, x(0) x0
x(t t) x(t) rt x(t)
x(t ) x e rt 0
与常用公式的一致 x(t) x0 (er )t x0 (1 r)t
1.2 数据拟合方法
一般情况下,数据点较少的用插值法。数据点较多的,
只需要考察数据的总体变化趋势的,用拟合法。最常用的拟
合方法是最小二乘拟合法。
1.2.1 多项式拟合
2.图形窗口的多项式拟合
1.多项式拟合指令
x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; P=polyfit(x,y,3); xi=0:0.2:10; yi=polyval(P,xi); plot(xi,yi,x,y,'r*');
0,0,0,3.52,0,0,0,0,0,0;
-0.43,-1.98,0,0,0,0.77,0,2.17,0,0;
0,0,-2.29,0,0.69,0,2.59,0,0.3,0;
-0.09,-0.31,0,0,0,4.27,0,0,0,-0.01;
0,0,0,5.13,7.4,0,1.89,0,0.04,0;
资源环境等因素对人口增长的阻滞作用且阻滞作用随人口数量增加而变大r是x的减函数假设0?r??ssxrxrr固有增长率x很小时xm人口容量资源环境能容纳的最大数量1rmxxxr??mxrs?0?mxrrxdtdx?xxrdtdx?dxdtxmx阻滞增长模型logistic模型1mxxrx??1rmxxxr??指数增长模型x0xmxm2xtxxxemmrt????110t0xts形曲线x增加先快后慢x0xm2参数估计用指数增长模型或阻滞增长模型作人口预报必须先估计模型参数r或rxm
根据所给数据作出散点图。人口随时间的变化是非线性的, 存在一条与x轴平行的渐近线,因此用Logistic曲线模型进行拟 合。
程序见d131
1.3.2 薄膜渗透率的测定
程序见d132
1.3.3 如何预报人口的增长
背景
世界人口增长概况
年 1625 1830 1930 1960 1974 1987 1999 人口(亿) 5 10 20 30 40 50 60
x0
x(t)~S形曲线, x增加先快后慢
阻滞增长模型(Logistic模型)
参数估计 用指数增长模型或阻滞增长模型作人口 预报,必须先估计模型参数 r 或 r, xm .
根据统计数据利用线性最小二乘法作拟合
dx rx(1 x ) y dx / dt x , s r
dt
xm
x xt
阻滞增长模型(Logistic模型)
用美国1860~1990年数据(去掉个别异常数据)
r=0.2557, xm=392.1
300
模型检验
250
200
150
用模型计算2000年美国人口
100
50
x(2000 ) x(1990 ) x x(1990 )
0 0
rx(1990 )[1 x(1990 ) / xm ] =274.5
阻滞增长模型(Logistic模型)
人口增长到一定数量后,增长率下降的原因:
资源、环境等因素对人口增长的阻滞作用,
且阻滞作用随人口数量增加而变大
r是x的减函数
假设 r(x) r sx (r, s 0) r~固有增长率(x很小时)
xm~人口容量(资源、环境能容纳的最大数量)
r(xm ) 0
程序如下:
[x,y]=meshgrid(1:10); %构造测量网格
h=[0,0.02,-0.12,0,-2.09,0,-0.58,-0.08,0,0; %测量高度矩阵
0.02,0,0,-2.38,0,-4.96,0,0,0,-0.1;
0,0.1,1,0,-3.04,0,-0.53,0,0.1,0;
1.1.1 Excel与MATLAB的数据交互
首先要安装Excel和MATLAB。 第一,打开Excel的工具→宏→安全性→安全级(中) 第二,打开Excel的工具→加载宏→浏览→
安装MATLAB的目录→toolbox →exlink →excllink.xla →确定,得到如下的工具条(即可使用):
5
10
15
20
1790年为零点
与实际数据(2000年为281.4)比较 误差不到3%
模型应用 预报美国2010年的人口
加入2000年人口数据后重新估计模型参数
r=0.2490, xm=434.0
x(2010)=306.0
Logistic 模型的应用
• 种群数量模型 (鱼塘中的鱼群, 森林中的树木). • 经济领域中的增长规律(耐用消费品的售量).