数学建模 插值和拟合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海底曲面图
%程序二:作出水深小于5的海域范围。
z1(z1>=5)=nan; %将水深大于5的置为nan,这 样绘图就不会显示出来 meshc(x1,y1,z1)
水深小于5的海域范围
实验作业1
已知13名成年女性的身高和腿长的测量数据如下:
身 高 腿 长
145 146 148
150
152
154
156
再通过 ( t ) 求每隔1/10小时的温度值。
4.1 (一维)插值问题的一般描述
设给出关于函数y= f (x)的一组函数值,
x y
x0Fra Baidu biblioteky0
x1 y1
… xn … yn
其中x0,x1, …xn是n+1个互不相同的点,求一个 近似函数 ( x ) ,使得 ( xi ) f ( xi ) i 0,1 …n 即要求这个近似函数经过所已知的所有数据点, 则称此类问题为插值问题。
数学建模中的数据处理方法 (一)插值与拟合
插值与拟合
一、插值的基本原理 二、插值的MATLAB实现 三、拟合的基本原理
四、插值与拟合的关系 五、拟合的Matlab实现
一、概述
我们经常会遇到大量的数据需要处理, 而处理数据的关键就在于这些算法,例如 数据拟合、参数估计、插值等数据处理算 法。此类问题在MATLAB中有很多现成的 函数可以调用,熟悉MATLAB,这些方法 都能游刃有余的用好。
例1:从1点到12点的11小时内,每隔1小时测量一次温 度,测得的温度的数值依次为:5,8,9,15,25,29, 31,30,22,25,27,24.试估计(1)每隔1/10小时的 温度值;(2)估计1点30分和13的温度值。 hours=1:12; temps=[5 8 9 15 25 29 31 30 22 25 27 24]; h=1:0.1:12; t=interp1(hours,temps,h,'spline'); plot(hours,temps,'+',h,t,'r:') xlabel('Hour'),ylabel('Degrees Celsius’)
被插值点 的函数值
例:测得平板表面3×5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试作出平板表面的温度分布曲面z=f(x,y)的图形. 1.先在三维坐标画出原始数据,画出粗糙的温度分布曲线图. 输入以下命令: x=1:5; y=1:3; temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86]; mesh(x,y,temps)
157
158
159
161
162
165
85
87
90
91
92
94
98
98
96
99
100
101
103
试研究身高与腿长的关系,绘制出身高和腿长的关系图,并给 出身高为149cm,155cm,163cm时,腿长的预测值。
例 山区地貌:
实验作业2
在某山区测得一些地点的高程如下表。平面区域为 1200≤ x≤ 4000,1200≤ y≤ 3600 试作出该山区的地貌图和等高线图,找出高度≥ 1400 的区域,并对几种插 值方法进行比较(最近邻点插值、双线性插值方法和双三次插值方法) 。
X Y 1200 1600 2000 2400 2800 3200 3600 1200 1130 1320 1390 1500 1500 1500 1480 1600 1250 1450 1500 1200 1200 1550 1500 2000 1280 1420 1500 1100 1100 1600 1550 2400 1230 1400 1400 1350 1550 1550 1510 2800 1040 1300 900 1450 1600 1600 1430 3200 900 700 1100 1200 1550 1600 1300 3600 500 900 1060 1150 1380 1600 1200 4000 700 850 950 1010 1070 1550 980
y
近似函数 ( x )
x0
x
xn
x
4.2 MATLAB实现插值 Matlab 实现:实现插值不需要编制函 数程序,它自身提供了内部的功能函数 interp1(一维分段插值)
interp2(二维)
interp3(三维) intern(n维)
4.3.1一维插值 用MATLAB作插值计算
二、基本概念
在实际中,常常要处理由实验或测量所 得到的一些离散数据。插值与拟合方法就是 要通过这些数据去确定某一类已知函数的参 数或寻求某个近似函数,使所得到的近似函 数与已知数据有较高的拟合精度。 如果要求这个近似函数(曲线或曲面) 经过所已知的所有数据点,则称此类问题为 插值问题。 (不需要函数表达式)
2.以平滑数据,在 x、y方向上每隔0.2个单位的地方进行插值.
x1=1:0.2:5; y1=1:0.2:3; z1=interp2(x,y,temps,x1,y1','cubic'); mesh(x1,y1,z1) title(‘双三次插值温度分布图’)
%画出插值后的温度分布曲面图.
注:surf(xi,yi,zi) title(‘双三次插值温度分布图’) %画出插值后的温度分布曲面图.
用MATLAB作散点数据的插值计算
插值函数griddata格式为:
cz =griddata(x,y,z,cx,cy,‘method’)
被插值点 的函数值 插值 节点 被插值点
插值方法
要求cx取行向量, cy取为列向量.
‘nearest’最邻近插值 ‘linear’ 双线性插值 ‘cubic’ 双三次插值 'v4'- MATLAB提供的插值方法 缺省时, 双线性插值
二、针对于插值节点为散乱节点的二维插值
例 在某海域测得一些点(x,y)处的水深z由下表 给出,船的吃水深度为5英尺,在矩形区域(75,200) ×(-50,150)里的哪些地方船要避免进入.
x y z x y z
129 140 103.5 88 185.5 195 105 7.5 141.5 23 147 22.5 137.5 85.5 4 8 6 8 6 8 8 157.5 -6.5 9 107.5 77 81 162 162 117.5 -81 3 56.5 -66.5 84 -33.5 9 8 8 9 4 9
例 在某海域测得一些点(x,y)处的水深z由下表 给出,船的吃水深度为5英尺,在矩形区域(75,200) ×(-50,150)里的哪些地方船要避免进入.
x y z x y z
129 140 103.5 88 185.5 195 105 7.5 141.5 23 147 22.5 137.5 85.5 4 8 6 8 6 8 8 157.5 -6.5 9 107.5 77 81 162 162 117.5 -81 3 56.5 -66.5 84 -33.5 9 8 8 9 4 9
针对的是插值节点为网格节点
用MATLAB作网格节点数据的插值
z=interp2(x0,y0,z0,x,y,’method’)
插 被插值点 插值方法 值 节 点 ‘nearest’ 最邻近插值; 要求x0,y0单调;x,y ‘linear’ 双线性插值; 可取为矩阵,或x取行向 ‘cubic’ 双三次插值; 量,y取为列向量,x,y 缺省时 双线性插值. 的值分别不能超出 x0,y0的范围.
如果不要求近似函数通过所有数据点, 而是要求它能较好地反映数据变化规律的近 似函数的方法称为数据拟合。(必须有函数 表达式)
二、插值的使用及求解
例:从1点到12点的11小时内,每隔1小时测量一次 温度,测得的温度的数值依次为:5,8,9,15,25, 29,31,30,22,25,27,24.试估计每隔1/10小 时的温度值. 解题思路:不知道描述时间与温度关系的函数f(t),仅 知道一些离散的数据点。首先求一个性质优良、便于 计算的函数 ( t ) ,作为 f(t)的近似函数,并且在已知 的数据节点上 (ti ) f (ti ) … i 1, 2
例1:从1点12点的11小时内,每隔1小时测量一次温度, 测得的温度的数值依次为:5,8,9,15,25,29,31, 30,22,25,27,24.试估计(1)每隔1/10小时的温度 值;(2)估计1点30分和13的温度值。 t=interp1(hours,temps,1.5, 'spline') t=interp1(hours,temps,13, 'spline', 'extrap')
1.输入插值基点数据 2.在矩形区域(75,200)×(-50,150)进行插值。
3. 作海底曲面图 4.作出水深小于5的海域范围,即z=5的等高线.
返回
%程序一:插值并作海底曲面图
x =[129.0 140.0 103.5 88.0 185.5 195.0 105.5 157.5 107.5 77.0 81.0 162.0 162.0 117.5 ]; y =[ 7.5 141.5 23.0 147.0 22.5 137.5 85.5 -6.5 81 3.0 56.5 -66.5 84.0 -33.5 ]; z =[ 4 8 6 8 6 8 8 9 9 8 8 9 4 9 ]; x1=75:1:200; y1=-50:1:150; z1=griddata(x,y,z,x1,y1','v4'); meshc(x1,y1,z1) %meshc命令在三维图形下方绘制 等值线
一维插值函数: yi=interp1(x,y,xi,'method')
xi处的 插值结果 插值节点 被插值点 插值方法
注意(1)所有的插值方法 ‘nearest’ 最近邻点插值; 都要求x是单调的,并且xi不 ‘linear’分段线性插值; ‘spline’ 三次样条插值; 能够超过x的范围; ‘cubic’ 三次多项式插值; (2)interp1()并没有提供 缺省时 分段线性插值. 插值函数的表达式。
%当数据超出插值运算范围时,可以使用外推方法插值
4.3.2二维插值 一、针对于插值节点为网格节点的二维插值
例:测得平板表面3×5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试作出平板表面的温度分布曲面z=f(x,y)的图形.
二维插值函数: z=interp2(x0,y0,z0,x,y,’method’)