数学建模与数学实验插 值实验目的实验内容
1.了解插值的基本内容.
[1]一维插值
[2]二维插值
[3]实验作业拉格朗日插值分段线性插值三次样条插值一 维 插 值一,插值的定义二、插值的方法三,用 MATLAB解插值问题 返回返回二维插值一,二维插值定义二、网格节点插值法三、用 MATLAB解插值问题最邻近插值分片线性插值双线性插值网格节点数据的插值散点数据的插值一维插值的定义已知 n+1个节点 (,) ( 0,1,,,
jjx y j n?
其中
jx
互不相同,不妨设 ),
10 bxxxa n
求任一插值点
)(* jxx?
处的插值,*y
0x 1x nx
0y
1y
节点可视为由
)( xgy? 产生,
g
表达式复杂,
或无封闭形式,
或未知,
*x
*y
构造一个 (相对简单的 )函数 ),( xfy? 通过全部节点,即
( ) ( 0,1,,)jjf x y j n
再用
)(xf
计算插值,即 ).( ** xfy?
0x 1x nx
0y
1y
*x
*y
返回称为 拉格朗日插值基函数,
0
( ) ( )
n
n i i
i
P x L x y
已知函数 f(x)在 n+1个点 x0,x1,…,xn处的函数值为
y0,y1,…,yn,求一 n次多项式函数 Pn(x),使其满足:
Pn(xi)=yi,i=0,1,…,n.
解决此问题的拉格朗日插值多项式公式如下其中 Li(x) 为 n次多项式:
0 1 1 1
0 1 1 1
( ) ( ) ( ) ( ) ( )()
( ) ( ) ( ) ( ) ( )
i i n
i
i i i i i i i n
x x x x x x x x x xLx
x x x x x x x x x x
拉格朗日 (Lagrange)插值拉格朗日 (Lagrange)插值特别地,
两点一次 (线性 )插值多项式,
1
01
0
0
10
1
1 yxx
xxy
xx
xxxL
三点二次 (抛物 )插值多项式,
2
1202
10
1
2101
20
0
2010
21
2 yxxxx
xxxxy
xxxx
xxxxy
xxxx
xxxxxL
,.nLx直 接 验 证 可 知 满 足 插 值 条 件拉格朗日多项式插值的这种振荡现象叫 Runge现象
55,
1
1)(
2 xxxg
采用拉格朗日多项式插值:选取不同插值节点 n+1个,其中 n为插值多项式的次数,当 n分别取 2,4,6,8,10时,绘出插值结果图形,
例返回
To MATLAB lch(larg1)
分段线性插值
0
1
1
1
1
1
1
( ) ( )
,
( ),
0,
n
n j j
j
j
jj
jj
j
j j j
jj
L x y l x
xx
x x x
xx
xx
l x x x x
xx
其 他计算量与 n无关 ;
n越大,误差越小,
nnn xxxxgxL 0),()(l i m
xjxj-1 xj+1x0 xn xO
y
To MATLAB
xch11,xch12,xch13,
xch14.
返回
66,
1
1)(
2 xxxg
例用分段线性插值法求插值,并观察插值误差,
1.在 [-6,6]中平均选取 5个点作插值 (xch11)
4.在 [-6,6]中平均选取 41个点作插值 (xch14)
2.在 [-6,6]中平均选取 11个点作插值 (xch12)
3.在 [-6,6]中平均选取 21个点作插值 (xch13)
比分段线性插值更光滑
x
y
xi-1 xia b
在数学上,光滑程度的定量描述是:函数 (曲线 )的 k阶导数存在且连续,则称 该曲线具有 k阶光滑性,
光滑性的阶次越高,则越光滑,是否存在较低次的分段多项式达到较高阶光滑性的方法? 三次样条插值就是一个很好的例子,
三次样条插值三次样条插值
1( ) { ( ),[,],1,,}i i iS x s x x x x i n
32
2
0
1 ) ( ) ( 1,,)
2 ) ( ) ( 0,1,,)
3 ) ( ) [,]
i i i i i
ii
n
s x a x b x c x d i n
S x y i n
S x C x x
)1,,1()()(),()(),()( 111 nixsxsxsxsxsxs iiiiiiiiiiii?
自然边界条件)(0)()()4 0 nxSxS
)(,,,)4)3)2 xSdcba iiii
g(x)为被插值函数,
)()(lim xgxS
n
例
66,
1
1)(
2 xxxg
用三次样条插值选取 11个基点计算插值 (ych)
返回
To MATLAB ych(larg1)
用 MATLAB作插值计算一维插值函数:
yi=interp1(x,y,xi,'method')
插值方法被插值点插值节点xi处的插值结果
‘nearest’ 最邻近插值;
‘ linear’ 线性插值;
‘ spline’ 三次样条插值;
‘ cubic’ 立方插值;
缺省时 分段线性插值.
注意:所有的插值方法都要求 x是单调的,并且 xi不能够超过 x的范围.
例:从 1点 12点 的 11小时内,每隔 1小时测量一次温度,测得的温度的数值依次为,5,8,9,15,
25,29,31,30,22,25,27,24.试估计每隔
1/10小时的温度值.
To MATLAB (temp)
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,hours,temps,'r:') %作图
xlabel('Hour'),ylabel('Degrees Celsius’)
x
y
机翼下轮廓线
X 0 3 5 7 9 11 12 13 14 15
Y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6
例 已知飞机下轮廓线上数据如下,求 x每改变 0.1时的 y值.
To MATLAB(plane)
返回二维插值的定义
x
y
O
第一种(网格节点):
已知 m?n个节点其中 互不相同,不妨设构造一个二元函数 通过全部已知节点,即再用 计算插值,即第二种(散乱节点):
y
xO
已知 n个节点其中 互不相同,
构造一个二元函数 通过全部已知节点,即再用 计算插值,即返回注意,最邻近插值一般不连续.具有连续性的最简单的插值是分片线性插值.
最邻近插值
x
y
(x1,y1)
(x1,y2)
(x2,y1)
(x2,y2)
O
二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求.
返回将四个插值点 ( 矩形的四个顶点 ) 处的函数值依次简记为:
分片线性插值
x
y
(xi,yj)
(xi,yj+1)
(xi+1,yj)
(xi+1,yj+1)
O
f (xi,yj)=f1,f (xi+1,yj)=f2,f (xi+1,yj+1)=f3,f (xi,yj+1)=f4
插值函数为:
1 2 1 3 2(,) ( ) ( ) ( ) ( )ijf x y f f f x x f f y y
第二片 (上三角形区域 ),(x,y)满足
1
1
()jj ii
ii
yyy x x y
xx
插值函数为:
1 4 1 3 4(,) ( ) ( ) ( ) ( )jif x y f f f y y f f x x
注意,(x,y)当然应该是在插值节点所形成的矩形区域内.显然,分片线性插值函数是连续的;
分两片的函数表达式如下:
第一片 (下三角形区域 ),(x,y)满足返回双线性插值是一片一片的空间二次曲面构成,
双线性插值函数的形式如下:
(,) ( ) ( )f x y a x b c y d
其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数.
双线性插值
x
y
(x1,y1)
(x1,y2)
(x2,y1)
(x2,y2)
O
返回要求 x0,y0单调; x,y可取 为矩阵,或 x
取行向量,y取为列向量,x,y的值分别不能超出 x0,y0的范围.
z=interp2(x0,y0,z0,x,y,’method’)
被插值点 插值方法用 MATLAB作网格节点数据的插值插值节点被插值点的函数值
‘nearest’ 最邻近插值;
‘ linear’ 双线性插值;
‘ cubic’ 双三次插值;
缺省时 双线性插值,
例:测得平板表面 3× 5网格点处的温度分别为:
82 81 80 82 84
79 63 61 65 81
84 84 82 85 86
试作出平板表面的温度分布曲面 z=f(x,y)的图形.
输入以下命令:
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)
1.先在三维坐标画出原始数据,画出粗糙的温度分布曲线图,
2,以平滑数据,在 x,y方向上每隔 0.2个单位的地方进行插值,
再输入以下命令,
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'cubic');
mesh(xi,yi,zi)
画出插值后的温度分布曲面图,
To MATLAB (wendu)
例 山区地貌,
在某山区测得一些地点的高程如下表。平面区域为
1 2 0 0 < = x < =4000,1200<= y <=3600)
试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。
X
Y
1200 1600 2000 2400 2800 3200 3600 4000
1200 1 130 1250 1280 1230 1040 900 500 700
1600 1320 1450 1420 1400 1300 700 900 850
2000 1390 1500 1500 1400 900 1 100 1060 950
2400 1500 1200 1 100 1350 1450 1200 1 150 1010
2800 1500 1200 1 100 1550 1600 1550 1380 1070
3200 1500 1550 1600 1550 1600 1600 1600 1550
3600 1480 1500 1550 1510 1430 1300 1200 980
通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较.
To MATLAB (moutain)
返回插值函数 griddata格式为,
cz =griddata( x,y,z,cx,cy,‘ method’)
用 MATLAB作散点数据的插值计算要求 cx取行向量,cy取为列向量,
被插值点 插值方法插值节点被插值点的函数值
‘nearest’最邻近插值
‘ linear’ 双线性插值
‘ cubic’ 双三次插值
'v4'- MATLAB提供的插值方法缺省时,双线性插值例 在某海域测得一些点 (x,y)处的水深 z由下表给出,船的吃水深度为 5英尺,在矩形区域( 75,
200) × ( -50,150)里的哪些地方船要避免进入.
x
y
z
129 140 103.5 88 185.5 195 1 05
7.5 141.5 23 147 22.5 137.5 85.5
4 8 6 8 6 8 8
x
y
z
157.5 107.5 77 81 162 162 1 17.5
- 6.5 - 81 3 56,5 - 66.5 84 - 33.5
9 9 8 8 9 4 9
2,7 5,2 0 0 5 0,1 5 0,
( 1 )hd
在 矩 形 区 域 作 二 维 插 值三 次 插 值 法
..1 输入插值基点数据
To MATLAB hd1
返回
4.作出水深小于 5的海域范围,即 z=5的等高线,
..3 作海底曲面图实验作业山区地貌,在某山区测得一些地点的高程如下表,(平面区域 1200≤ x ≤ 4000,1200≤ y ≤ 3600),试作出该山区的地貌图和等高线图,并对几种插值方法进行比较.
3600
3200
2800
2400
2000
1600
1200
1480 1 5 0 0 1 5 5 0 1 5 1 0 1 4 3 0 1 3 0 0 1 2 0 0 9 8 0
1500 1 5 5 0 1 6 0 0 1 5 5 0 1 6 0 0 1 6 0 0 1 6 0 0 1 5 5 0
1500 1 2 0 0 1 1 0 0 1 5 5 0 1 6 0 0 1 5 5 0 1 3 8 0 1 0 7 0
1500 1 2 0 0 1 1 0 0 1 3 5 0 1 4 5 0 1 2 0 0 1 1 5 0 1 0 1 0
1 3 9 0 1 5 0 0 1 5 0 0 1 4 0 0 9 0 0 1 1 0 0 1 0 6 0 9 5 0
1 3 2 0 1 4 5 0 1 4 2 0 1 4 0 0 1 3 0 0 7 0 0 9 0 0 8 5 0
1 1 3 0 1 2 5 0 1 2 8 0 1 2 3 0 1 0 4 0 9 0 0 5 0 0 7 0 0
y / x
1 2 0 0 1 6 0 0 2 0 0 0 2 4 0 0 2 8 0 0 3 2 0 0 3 6 0 0 4 0 0 0
返回
1.了解插值的基本内容.
[1]一维插值
[2]二维插值
[3]实验作业拉格朗日插值分段线性插值三次样条插值一 维 插 值一,插值的定义二、插值的方法三,用 MATLAB解插值问题 返回返回二维插值一,二维插值定义二、网格节点插值法三、用 MATLAB解插值问题最邻近插值分片线性插值双线性插值网格节点数据的插值散点数据的插值一维插值的定义已知 n+1个节点 (,) ( 0,1,,,
jjx y j n?
其中
jx
互不相同,不妨设 ),
10 bxxxa n
求任一插值点
)(* jxx?
处的插值,*y
0x 1x nx
0y
1y
节点可视为由
)( xgy? 产生,
g
表达式复杂,
或无封闭形式,
或未知,
*x
*y
构造一个 (相对简单的 )函数 ),( xfy? 通过全部节点,即
( ) ( 0,1,,)jjf x y j n
再用
)(xf
计算插值,即 ).( ** xfy?
0x 1x nx
0y
1y
*x
*y
返回称为 拉格朗日插值基函数,
0
( ) ( )
n
n i i
i
P x L x y
已知函数 f(x)在 n+1个点 x0,x1,…,xn处的函数值为
y0,y1,…,yn,求一 n次多项式函数 Pn(x),使其满足:
Pn(xi)=yi,i=0,1,…,n.
解决此问题的拉格朗日插值多项式公式如下其中 Li(x) 为 n次多项式:
0 1 1 1
0 1 1 1
( ) ( ) ( ) ( ) ( )()
( ) ( ) ( ) ( ) ( )
i i n
i
i i i i i i i n
x x x x x x x x x xLx
x x x x x x x x x x
拉格朗日 (Lagrange)插值拉格朗日 (Lagrange)插值特别地,
两点一次 (线性 )插值多项式,
1
01
0
0
10
1
1 yxx
xxy
xx
xxxL
三点二次 (抛物 )插值多项式,
2
1202
10
1
2101
20
0
2010
21
2 yxxxx
xxxxy
xxxx
xxxxy
xxxx
xxxxxL
,.nLx直 接 验 证 可 知 满 足 插 值 条 件拉格朗日多项式插值的这种振荡现象叫 Runge现象
55,
1
1)(
2 xxxg
采用拉格朗日多项式插值:选取不同插值节点 n+1个,其中 n为插值多项式的次数,当 n分别取 2,4,6,8,10时,绘出插值结果图形,
例返回
To MATLAB lch(larg1)
分段线性插值
0
1
1
1
1
1
1
( ) ( )
,
( ),
0,
n
n j j
j
j
jj
jj
j
j j j
jj
L x y l x
xx
x x x
xx
xx
l x x x x
xx
其 他计算量与 n无关 ;
n越大,误差越小,
nnn xxxxgxL 0),()(l i m
xjxj-1 xj+1x0 xn xO
y
To MATLAB
xch11,xch12,xch13,
xch14.
返回
66,
1
1)(
2 xxxg
例用分段线性插值法求插值,并观察插值误差,
1.在 [-6,6]中平均选取 5个点作插值 (xch11)
4.在 [-6,6]中平均选取 41个点作插值 (xch14)
2.在 [-6,6]中平均选取 11个点作插值 (xch12)
3.在 [-6,6]中平均选取 21个点作插值 (xch13)
比分段线性插值更光滑
x
y
xi-1 xia b
在数学上,光滑程度的定量描述是:函数 (曲线 )的 k阶导数存在且连续,则称 该曲线具有 k阶光滑性,
光滑性的阶次越高,则越光滑,是否存在较低次的分段多项式达到较高阶光滑性的方法? 三次样条插值就是一个很好的例子,
三次样条插值三次样条插值
1( ) { ( ),[,],1,,}i i iS x s x x x x i n
32
2
0
1 ) ( ) ( 1,,)
2 ) ( ) ( 0,1,,)
3 ) ( ) [,]
i i i i i
ii
n
s x a x b x c x d i n
S x y i n
S x C x x
)1,,1()()(),()(),()( 111 nixsxsxsxsxsxs iiiiiiiiiiii?
自然边界条件)(0)()()4 0 nxSxS
)(,,,)4)3)2 xSdcba iiii
g(x)为被插值函数,
)()(lim xgxS
n
例
66,
1
1)(
2 xxxg
用三次样条插值选取 11个基点计算插值 (ych)
返回
To MATLAB ych(larg1)
用 MATLAB作插值计算一维插值函数:
yi=interp1(x,y,xi,'method')
插值方法被插值点插值节点xi处的插值结果
‘nearest’ 最邻近插值;
‘ linear’ 线性插值;
‘ spline’ 三次样条插值;
‘ cubic’ 立方插值;
缺省时 分段线性插值.
注意:所有的插值方法都要求 x是单调的,并且 xi不能够超过 x的范围.
例:从 1点 12点 的 11小时内,每隔 1小时测量一次温度,测得的温度的数值依次为,5,8,9,15,
25,29,31,30,22,25,27,24.试估计每隔
1/10小时的温度值.
To MATLAB (temp)
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,hours,temps,'r:') %作图
xlabel('Hour'),ylabel('Degrees Celsius’)
x
y
机翼下轮廓线
X 0 3 5 7 9 11 12 13 14 15
Y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6
例 已知飞机下轮廓线上数据如下,求 x每改变 0.1时的 y值.
To MATLAB(plane)
返回二维插值的定义
x
y
O
第一种(网格节点):
已知 m?n个节点其中 互不相同,不妨设构造一个二元函数 通过全部已知节点,即再用 计算插值,即第二种(散乱节点):
y
xO
已知 n个节点其中 互不相同,
构造一个二元函数 通过全部已知节点,即再用 计算插值,即返回注意,最邻近插值一般不连续.具有连续性的最简单的插值是分片线性插值.
最邻近插值
x
y
(x1,y1)
(x1,y2)
(x2,y1)
(x2,y2)
O
二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求.
返回将四个插值点 ( 矩形的四个顶点 ) 处的函数值依次简记为:
分片线性插值
x
y
(xi,yj)
(xi,yj+1)
(xi+1,yj)
(xi+1,yj+1)
O
f (xi,yj)=f1,f (xi+1,yj)=f2,f (xi+1,yj+1)=f3,f (xi,yj+1)=f4
插值函数为:
1 2 1 3 2(,) ( ) ( ) ( ) ( )ijf x y f f f x x f f y y
第二片 (上三角形区域 ),(x,y)满足
1
1
()jj ii
ii
yyy x x y
xx
插值函数为:
1 4 1 3 4(,) ( ) ( ) ( ) ( )jif x y f f f y y f f x x
注意,(x,y)当然应该是在插值节点所形成的矩形区域内.显然,分片线性插值函数是连续的;
分两片的函数表达式如下:
第一片 (下三角形区域 ),(x,y)满足返回双线性插值是一片一片的空间二次曲面构成,
双线性插值函数的形式如下:
(,) ( ) ( )f x y a x b c y d
其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数.
双线性插值
x
y
(x1,y1)
(x1,y2)
(x2,y1)
(x2,y2)
O
返回要求 x0,y0单调; x,y可取 为矩阵,或 x
取行向量,y取为列向量,x,y的值分别不能超出 x0,y0的范围.
z=interp2(x0,y0,z0,x,y,’method’)
被插值点 插值方法用 MATLAB作网格节点数据的插值插值节点被插值点的函数值
‘nearest’ 最邻近插值;
‘ linear’ 双线性插值;
‘ cubic’ 双三次插值;
缺省时 双线性插值,
例:测得平板表面 3× 5网格点处的温度分别为:
82 81 80 82 84
79 63 61 65 81
84 84 82 85 86
试作出平板表面的温度分布曲面 z=f(x,y)的图形.
输入以下命令:
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)
1.先在三维坐标画出原始数据,画出粗糙的温度分布曲线图,
2,以平滑数据,在 x,y方向上每隔 0.2个单位的地方进行插值,
再输入以下命令,
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'cubic');
mesh(xi,yi,zi)
画出插值后的温度分布曲面图,
To MATLAB (wendu)
例 山区地貌,
在某山区测得一些地点的高程如下表。平面区域为
1 2 0 0 < = x < =4000,1200<= y <=3600)
试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。
X
Y
1200 1600 2000 2400 2800 3200 3600 4000
1200 1 130 1250 1280 1230 1040 900 500 700
1600 1320 1450 1420 1400 1300 700 900 850
2000 1390 1500 1500 1400 900 1 100 1060 950
2400 1500 1200 1 100 1350 1450 1200 1 150 1010
2800 1500 1200 1 100 1550 1600 1550 1380 1070
3200 1500 1550 1600 1550 1600 1600 1600 1550
3600 1480 1500 1550 1510 1430 1300 1200 980
通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较.
To MATLAB (moutain)
返回插值函数 griddata格式为,
cz =griddata( x,y,z,cx,cy,‘ method’)
用 MATLAB作散点数据的插值计算要求 cx取行向量,cy取为列向量,
被插值点 插值方法插值节点被插值点的函数值
‘nearest’最邻近插值
‘ linear’ 双线性插值
‘ cubic’ 双三次插值
'v4'- MATLAB提供的插值方法缺省时,双线性插值例 在某海域测得一些点 (x,y)处的水深 z由下表给出,船的吃水深度为 5英尺,在矩形区域( 75,
200) × ( -50,150)里的哪些地方船要避免进入.
x
y
z
129 140 103.5 88 185.5 195 1 05
7.5 141.5 23 147 22.5 137.5 85.5
4 8 6 8 6 8 8
x
y
z
157.5 107.5 77 81 162 162 1 17.5
- 6.5 - 81 3 56,5 - 66.5 84 - 33.5
9 9 8 8 9 4 9
2,7 5,2 0 0 5 0,1 5 0,
( 1 )hd
在 矩 形 区 域 作 二 维 插 值三 次 插 值 法
..1 输入插值基点数据
To MATLAB hd1
返回
4.作出水深小于 5的海域范围,即 z=5的等高线,
..3 作海底曲面图实验作业山区地貌,在某山区测得一些地点的高程如下表,(平面区域 1200≤ x ≤ 4000,1200≤ y ≤ 3600),试作出该山区的地貌图和等高线图,并对几种插值方法进行比较.
3600
3200
2800
2400
2000
1600
1200
1480 1 5 0 0 1 5 5 0 1 5 1 0 1 4 3 0 1 3 0 0 1 2 0 0 9 8 0
1500 1 5 5 0 1 6 0 0 1 5 5 0 1 6 0 0 1 6 0 0 1 6 0 0 1 5 5 0
1500 1 2 0 0 1 1 0 0 1 5 5 0 1 6 0 0 1 5 5 0 1 3 8 0 1 0 7 0
1500 1 2 0 0 1 1 0 0 1 3 5 0 1 4 5 0 1 2 0 0 1 1 5 0 1 0 1 0
1 3 9 0 1 5 0 0 1 5 0 0 1 4 0 0 9 0 0 1 1 0 0 1 0 6 0 9 5 0
1 3 2 0 1 4 5 0 1 4 2 0 1 4 0 0 1 3 0 0 7 0 0 9 0 0 8 5 0
1 1 3 0 1 2 5 0 1 2 8 0 1 2 3 0 1 0 4 0 9 0 0 5 0 0 7 0 0
y / x
1 2 0 0 1 6 0 0 2 0 0 0 2 4 0 0 2 8 0 0 3 2 0 0 3 6 0 0 4 0 0 0
返回