exp5_2数学实验之二维插值
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
77 81 162 162 117.5 3 56.5 -66.5 84 -33.5 8 8 9 4 9
上一页
下一页
主 页
引例2:船在该海域会搁浅吗?
y
x
返回 上一页 下一页 主 页
插值的基本原理
二 维 插 值 的 提 法
第一种(网格节点)
返回 上一页 下一页 主 页
用MATLAB作插值计算
网格节点的插值计算;
散点数据的插值计算;
用MATLAB作插值计算小结
返回 上一页 下一页 主 页
网格节点数据的插值
例:测得平板表面3*5网格点处的温度 分别为: x
82 79 84 81 63 84 80 61 82 82 65 85 84 81 86
被插值点 的函数值 插值节点 插值函数参数 被插值点
返回
通常两程序是配合使用的。
上一页 下一页 主 页
范例1:绘制山区地貌图
要在某山区方圆大约27平方公里 范围内修建一条公路,从山脚出发经过 一个居民区,再到达一个矿区。横向纵 向分别每隔400米测量一次,得到一些 地点的高程(网格节点):(平面区域 0<=x<=5600,0<=y<=4800),首先需作 出该山区的地貌图和等高线图。
或
再用
计算插值,即
返回 上一页 下一页 主 页
二维插值方法
网格节点插值法: 最邻近插值; 分片线性插值; 双线性插值; 双三次插值。 散点数据插值法:
修正Shephard法
上一页 下一页 主 页
返回
1.最邻近插值
y (x1, y2) (x2, y2) x
(x1, y1) (x2, y1)
xlabel('Width of Plate'), ylabel('Depth of Plate') zlabel('Degrees Celsius'), axis('ij'),grid, pause; zlin=interp2(width,depth,temps,wi,di,… 'cubic'); figure(3); mesh(wi,di,zlin) xlabel('Width of Plate'), ylabel('Depth of Plate') zlabel('Degrees Celsius'), axis('ij'),grid
注意:(x, y)当然应该是在插值节点所形成的矩形区 域内。显然,分片线性插值函数是连续的;
返回 上一页 下一页 主 页
3.双线性插值
y
(x1 y2) ,
(x2, y2)
(x1, y1) (x2, y1)
x
双线性插值是一片一片的空间二次曲面构成。 插值函数的形式如下: f ( x, y) (ax b)(cy d)
-9 -4 -9];
plot(x,y,'+');
pause
上一页 下一页 主 页
150
100
50
0
-50
-100 60
80
100
120
140
160
180
200
上一页
下一页
主 页
[fnodes,a,rnw,b,c]=e01sef(x,y,z);
nx=100; px=linspace(75,200,nx);
ny=200;
py=linspace(-50,150,ny); for i=1:ny for j=1:nx
求出测量范 围内的细网 格的节点的 x,y坐标数组
[pf(i,j),ifail]=e01sff(x,y,z,…
rnw,fnodes,px(j),py(i));
end end
用插值 方法求 出网格 节点处 的z坐 标矩阵
4500 4000 3500 3000 2500 2000 1500 1000 500 0
0
2000
4000
0
2000
4000
上一页
下一页
主 页
4200 4000 3800 3600 3400
4200 4000 3800 3600 3400
Y
3200 3000 2800 2600 1500 2000 X 2500
注意:最邻近插值一般不连续。具有连续性的最简 单的插值是分片线性插值。
返回 上一页 下一页 主 页
2.分片线性插值
y
(xi, yj+1) (xi+1, yj+1) (xi, yj) (xi+1, yj)
x
上一页
下一页
主 页
2.分片线性插值
四个插值点(矩形的四个顶点)处的函
上一页 下一页 主 页
1.作出测量点的分布图
clear;
x=[129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5]; y=[7.5 141.5 23 147 22.5 137.5 85.5… -6.5 -81 3 56.5 -66.5 84 -33.5]; z=[-4 -8 -6 -8 -6 -8 -8 -9 -9 -8 -8 …
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 107.5 77 81 162 162 117.5 -6.5 -81 3 56.5 -66.5 84 -33.5 9 9 8 8 9 4 9
Y
3200 3000 2800 2600 1500 2000 X 2500
上一页 下一页 主 页
上一页
下一页
主 页
返回 上一页 下一页 主 页
范例2:船在该海域会搁浅吗?
在某海域测得一些点(x,y)处的水深z由下表给出, 船的吃水深度为5英尺,在矩形区域(75,200)* (-50,150)里的哪些地方船要避免进入。
上一页 下一页 主 页
引例1:如何绘制山区地貌图
上一页
下一页
主 页
2000 1500
Z
1000 500 0 0 1000 2000 3000 4000 5000 6000 X
上一页 下一页 主 页
5000 4000 3000 2000 1000 0 Y
引例1:如何绘制山区地貌图
y
数学实验之
——二维插值
Baidu Nhomakorabea验目的
[1] 了解二维插值的基本原理,了解三 种网格节点数据的插值方法的基本思想; [2] 掌握用MATLAB计算二维插值的方法, 并对结果作初步分析; [3] 通过实例学习如何用插值方法解决 实际问题。
上一页
下一页
主 页
二维插值主要内容
引例1,引例2 二维插值的基本原理 二维插值方法
已知 mn个节点 (xi, xj, zij) ( i=1, 2, …,m; j=1, 2, …, n )
其中xi, yj互不相同,不妨设
a=x1<x2<…<xm=b c=y1<y2<…<yn=d
求任一插值点(x*, y*) ( ≠(xi, yj) )处的插值Z*
上一页 下一页 主 页
二维插值的提法
上一页 下一页 主 页
范例1:绘制山区地貌图
分别用最近邻点插值、线性插 值和三次插值加密数据点,并分别 作出这三组数据点的网格图。
注意观察双线性插值方法和双三 次插值方法的插值效果的差异。
上一页 下一页 主 页
上一页
下一页
主 页
上一页
下一页
主 页
上一页
下一页
主 页
4500 4000 3500 3000 2500 2000 1500 1000 500 0
y
试作出平板表面的温度分布曲面 z=f(x,y)的图形。
上一页 下一页 主 页
上一页
下一页
主 页
网格节点数据的插值
二维插值:已有程序
z=interp2(x0,y0,z0,x,y,’method’)
插值 被插值点 被插值点 节点 插值方法 的函数值 Method可取: ‘nearest’ 最邻近插值;‘linear’ 双线性插值; ‘cubic’ 双三次插值;缺省时, 双线性插值。 注意:x0,y0为向量,但z0是矩阵,其 列数等于x0的长度,行数等于y0的长度。
y y3 y2
(x*, y*)
y1
x1
x2
上一页
x3
下一页 主 页
x4
x5 x
二维插值的提法
第二种(散乱节点) 已知n个节点
其中
互不相同,
求任一插值点 处的插值
上一页 下一页 主 页
二维插值方法的基本思路
构造一个二元函数 通过全部已知节点,即
上一页 下一页 主 页
范例2:船在该海域会搁浅吗?
假设:海底平滑
1.作出测量点的分布图; 2.求出矩形区域(75,200)*(-50,150)的 细分网格节点之横、纵坐标向量; 3.利用MATLAB中的散点插值函数求网格节点 的水深; 4.作出海底曲面图形和等高线图;
5.作出水深小于5的海域范围。
上一页 下一页 主 页
2.分片线性插值
第二片(上三角形区域): y j1 y j y (x x i ) y i x i 1 x i 插值函数为: f ( x, y) f1 (f 4 f1 )( y y j ) (f 3 f 4 )( x x i )
数值: f (xi, yj)=f1, f (xi+1, yj)=f2,
f (xi+1, yj+1)=f3,
第一片(下三角形区域):
f (xi, yj+1)=f4
插值函数为: f ( x, y) f1 (f 2 f1 )( x x i ) (f 3 f 2 )( y y j )
上一页 下一页 主 页
用MATLAB作散点数据的插值计算
方法二: 修正Shephard法插值。已有程序 e01sef 和e01sff ,其调用格式为:
[fnodes, minnq, rnw,rnq, ifail]=e01sef(x, y, z)
插值函数参数 插值节点
[pf(i, j), ifail]=e01sff(x, y, z, rnw, fnodes, px(j), py(i))
figure(2),meshz(px,py,pf), rotate3d,pause
figure(3),surf(px,py,pf),
rotate3d,pause figure(4),contour(px,py,pf,[-5 -5]); grid,pause [i1,j1]=find(pf<-5); 图2到4: 利用网格 节点的x,y坐标向量 px,py及其对应的z 坐标矩阵pf,作出网 格线图和填充曲面图, 水深5英尺处海底曲 面的等高线
上一页
下一页
x
主 页
引例2:船在该海域会搁浅吗?
在某海域测得一些点(x,y)处的水深z由下表给 出,船的吃水深度为5英尺,在矩形区域(75,200) *(-50,150)里的哪些地方船要避免进入。
x y z x y z 129 140 103.5 88 185.5 195 7.5 141.5 23 147 22.5 137.5 4 8 6 8 6 8 157.5 -6.5 9 107.5 -81 9 105 85.5 8
用MATLAB作二维插值计算 范例1:山区的山形地貌 范例2:船在该海域会搁浅吗? 布置实验
上一页 下一页 主 页
返回
某山区的地形图
上一页
下一页
主 页
上一页
下一页
主 页
引例1:如何绘制山区地貌图
要在某山区方圆大约27平方公里范围内 修建一条公路,从山脚出发经过一个居民区, 再到达一个矿区。横向纵向分别每隔400米测 量一次,得到一些地点的高程:(平面区域 0<=x<=5600,0<=y<=4800),首先需作出该山 区的地貌图和等高线图。
上一页
下一页
主 页
返回 上一页 下一页 主 页
用MATLAB作散点数据的插值计算
方法一: z=griddata(x0,y0,z0,x,y,’method’)
被插值点 的函数值
插值节点
被插值点
注意:x0,y0,z0均为向量,长度相等。
Method可取 ‘nearest’,’linear’,’cubic’,’v4’; ‘linear’是缺省值。
上一页 下一页 主 页
M文件 width=1:5; wenduqm.m depth=1:3; temps=[82 81 80 82 84;79 63 61… 65 81;84 84 82 85 86]; mesh(width,depth,temps);pause di=1:.1:3;di=di'; 加密数据点 wi=1:.1:5; zlin=interp2(width,depth,temps,… wi,di,'linear'); figure(2); mesh(wi,di,zlin);