数学实验-插值和拟合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
* * *
f ( x, y)
计算插值,即
最邻近插值
y ( x1, y2) (x2 , y2) x
( x1, y 1 ) (x2 , y1)
O
二维或高维情形的最邻近插值,与被插值点最邻近的 节点的函数值即为所求。 注意:最邻近插值一般不连续。具有连续性的最简单 的插值是分片线性插值。
0
x
已知n个节点
( x i , y i , z i ) ( i 1, 2 ,..., n )
其中
( xi , yi )
互不相同,
构造一个二元函数 z f ( x , y ), 通过全部已知节点,即
f ( xi , yi ) zi
再用
( i 0,1, , n )
z f ( x , y ).
+ +
y=f(x)
x i 为点(xi,yi) 与曲线 y=f(x) 的距离
拟合与插值的关系
问题:给定一批数据点,需确定满足特定要求的曲线或曲面 解决方案: •若要求所求曲线(面)通过所给所有数据点,就是插值问题; •若不要求曲线(面)通过所有数据点,而是要求它反映对象 整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟 合. 函数插值与曲线拟合都是要根据一组数据构造一个函数作为 近似,由于近似要求不同,二者在数学方法上是完全不同的. 实例:下面数据是某次实验所得,希望得到X和 f之间的关系?
10
2
c ( t ) c 10 kt
10
1
c, k 为 待 定 系 数
10
0
0
2
4
6
8
曲线拟合问题的思想
已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,…,n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有 数据点最为接近,即曲线拟合得最好. y + + + + + i (x+ i,yi) +
用MATLAB作网格节点数据的插值
z=interp2(x0,y0,z0,x,y,’method’)
被插值点 的函数值
插值 节点
被插值点
插值方法
‘nearest’ 最邻近插值 ‘linear’ 双线性插值 ‘cubic’ 双三次插值 缺省时, 双线性插值 要求x0,y0单调;x,y可取为矩阵,或x取 行向量,y取为列向量,x,y的值分别不能超出 x0,y0的范围。
在一天24小时内, 从零点开始每间隔2小时测 得的环境温度为(摄氏度) 12,9,9,10,18,24,28,27,25,20,18,15,13, 推测在每一分钟时的温度.
问题的提出
在生产和实验中,关于函数f(x),经常存在两种情况: (1)其表达式不便于计算; (2)无表达式, 而只有函数在给定点的函数值,
称为拉格朗日插值基函数。
function y=lagrange(x0,y0,x) % x0插值节点, y0插值节点处的函数值,x要计算函数值的点; n=length(x0); m=length(x); for i=1:m s=0;z=x(i); for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); %计算插值基函数 end end s=p*y0(k)+s; end y(i)=s; end %计算在x(i)处的函数值(拉格朗日) %计算x0的长度 %计算x的长度
二维插值的定义
第一种(网格节点):
y
O
x
已知 mn个节点
( x i , y j , z ij ) ( i 1, 2 ,..., m ; j 1, 2 , n )
其中
xi , y j
互不相同,不妨设
a x1 x2 xm b c y1 y2 yn d
ys=interp1(x0,y0,x,'spline') %三次样条插值法 xyl=interp1(x0,y0,xx,'linear'); xyc=interp1(x0,y0,xx,'cubic'); xys=interp1(x0,y0,xx,'spline'); plot(x0,y0,'*',xx,xyl,'r',xx,xyc,'k',xx,xys,'g')
分两片的函数表达式如下: 第一片(下三角形区域): (x, y)满足
y y j1 y j x i 1 x i (x x i ) y j
插值函数为:
f ( x , y) f 1 (f 2 f 1 )( x x i ) (f 3 f 2 )( y y j )
x f 1 1 .5 2 3 .9 4 6 .6 7 1 1 .7 9 1 5 .6 12 1 8 .8 13 1 9 .6 15 2 0 .6 17 2 1 .1
例:测得平板表面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) 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)
构造一个二元函数 z f ( x , y ), 通过全部已知节点,即
f ( x i , y j ) z ij ( i 0 ,1, , m ; j 0,1, , n )
再用
f ( x, y)
计算插值,即
z f ( x , y ).
*
*
*
第二种(散乱节点):
y
y1 y0
x0 x1
y1 y0
xn
x0 x1
xn
多项式插值法包含:
拉格朗日插值 牛顿插值 三次埃尔米特插值法 分段线性插值 分段三次埃尔米特插值法 三次样条插值
拉格朗日插值公式
已知函数f(x)在n+1个点x0,x1,…,xn处的函数值为 y0,y1,…,yn 。求一n次多项式函数Pn(x),使其满足: Pn(xi)=yi,i=0,1,…,n. 解决此问题的拉格朗日插值多项式公式如下
双线性插值
y (x1 , y2 ) ( x2 , y2 ) x
(x1 , y1 ) ( x2 , y1 )
O
双线性插值是一片一片的空间二次曲面构成。 双线性插值函数的形式如下:
f ( x , y) (ax b)(cy d )
其中有四个待定系数,利用该函数在矩形的四个顶 点(插值节点)的函数值,得到四个代数方程,正 好确定四个系数。
分片线性插值
y (xi, yj+1) (xi+1, yj+1) (xi, yj) (xi+1, yj)
x
O
将四个插值点(矩形的四个顶点)处的函数值依次 简记为: f (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f4
x y
x0 y0
x1 y1
x2 y2
… …
xn yn
怎样计算其它点的函数值?
两种方法: (1)函数插值; (2)曲线拟合.
插值法
定义:当精确函数 y = f(x) 非常复杂或未知 时,在一系列节点 x0 … xn 处测得函数值 y0 = f(x0), … ,yn = f(xn), 由此构造一个简单易算的近似函数 p(x) f(x),满 足条件 p(xi) = f(xi) (i = 0, … n)------ 插值条件 这里的 p(x) 称为f(x) 的插值函数;构造插值函数的 方法为插值法。 当 p(x)为多项式时,我们称p(x)为插值多项 式;构造插值多项式的方法称为多项式插值法.
用MATLAB作插值计算
一维插值函数:
yi=interp1(x,y,xi,'method')
xi处的插 值结果 插值节点 被插值点 插值方法
‘nearest’ :最邻近插值 ‘linear’ : 线性插值; ‘spline’ : 三次样条值; ‘cubic’ : 立方插值。 缺省时: 分段线性插值。
n
Pn ( x ) L i ( x ) y i
i 0
其中Li(x) 为n次多项式:
( x x 0 )( x x 1 ) ( x x i 1 )( x x i 1 ) ( x x n ) L i (x) ( x i x 0 )( x i x 1 ) ( x i x i 1 )( x i x i 1 ) ( x i x n )
Baidu Nhomakorabea
注意:所有的插值方法都要求x是单调的,并且xi不 能够超过x的范围。
插值法的应用
一水库上游河段降暴雨,根据预报测算上游流入水库的流量为 Q(t) (102立方米/秒) : t (时) 8 12 16 24 30 44 48 56 60 Q(t) 36 54 78 92 101 35 25 16 13 通过这个预报值,分别用不同的数值方法插值法来估计14 和 20时上游流入水库的流量,并利用不同的插值方法描绘水流量 曲线 。
第二片(上三角形区域):(x, y)满足
y y j1 y j x i 1 x i (x x i ) y i
插值函数为:
f ( x , y) f 1 (f 4 f 1 )( y y j ) (f 3 f 4 )( x x i )
注意:(x, y)当然应该是在插值节点所形成的矩形区 域内。显然,分片线性插值函数是连续的;
示例
给定数据表:
x lnx 0.4 -0.916291 0.5 -0.693147 0.6 -0.510826 0.7 -0.356675 0.8 -0.223144
用lagrange插值公式计算ln(0.54)的函数值 clear x0=0.4:0.1:0.8; y0=log(x0); x=0.54; lagrange(x0,y0,x)
拟合
ºC) 温度 t ( 20.5 32.7 51.0 73.0 95.7 已知热敏电阻数据:
电阻R() 765 求60ºC时的电阻R.
1100 1000 900 800 700 20
826
873
942 1032
设 R=at+b a,b为待定系数
40
60
80
100
已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg) t (h) 0.25 0.5 1 1.5 2 3 4 6 8 c (g/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01 求血药浓度随时间的变化规律c(t). 作半对数坐标系(semilogy:y轴用以10为底的对数刻度标定,类似于 plot(x,log10(y)),但是对于log10(0)不能给出警告信息)下的图形
x0=[8,12,16,24,30,44,48,56,60]; y0=[36,54,78,92,101,35,25,16,13]; x=[14,20];xx=[8:0.1:60]; yl=interp1(x0,y0,x,'linear') %分段线性插值法 yc=interp1(x0,y0,x,'cubic') %分段三次埃尔米特插值法
数学软件与数学实验 插值与拟合
2 1.5
1
0.5
0
-0.5 -5
-4
-3
-2
-1
0
1
2
3
4
5
zhuysxxu2009@163.com
问题
一水库上游河段降暴雨,根据预报测算上游流入 水库的流量为Q(t) (102立方米/秒) : t (时) 8 12 16 24 30 44 48 56 60 Q(t)36 54 78 92 101 35 25 16 13 通过这个预报值,估计14 和 20 时上游流入水库 的流量.
f ( x, y)
计算插值,即
最邻近插值
y ( x1, y2) (x2 , y2) x
( x1, y 1 ) (x2 , y1)
O
二维或高维情形的最邻近插值,与被插值点最邻近的 节点的函数值即为所求。 注意:最邻近插值一般不连续。具有连续性的最简单 的插值是分片线性插值。
0
x
已知n个节点
( x i , y i , z i ) ( i 1, 2 ,..., n )
其中
( xi , yi )
互不相同,
构造一个二元函数 z f ( x , y ), 通过全部已知节点,即
f ( xi , yi ) zi
再用
( i 0,1, , n )
z f ( x , y ).
+ +
y=f(x)
x i 为点(xi,yi) 与曲线 y=f(x) 的距离
拟合与插值的关系
问题:给定一批数据点,需确定满足特定要求的曲线或曲面 解决方案: •若要求所求曲线(面)通过所给所有数据点,就是插值问题; •若不要求曲线(面)通过所有数据点,而是要求它反映对象 整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟 合. 函数插值与曲线拟合都是要根据一组数据构造一个函数作为 近似,由于近似要求不同,二者在数学方法上是完全不同的. 实例:下面数据是某次实验所得,希望得到X和 f之间的关系?
10
2
c ( t ) c 10 kt
10
1
c, k 为 待 定 系 数
10
0
0
2
4
6
8
曲线拟合问题的思想
已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,…,n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有 数据点最为接近,即曲线拟合得最好. y + + + + + i (x+ i,yi) +
用MATLAB作网格节点数据的插值
z=interp2(x0,y0,z0,x,y,’method’)
被插值点 的函数值
插值 节点
被插值点
插值方法
‘nearest’ 最邻近插值 ‘linear’ 双线性插值 ‘cubic’ 双三次插值 缺省时, 双线性插值 要求x0,y0单调;x,y可取为矩阵,或x取 行向量,y取为列向量,x,y的值分别不能超出 x0,y0的范围。
在一天24小时内, 从零点开始每间隔2小时测 得的环境温度为(摄氏度) 12,9,9,10,18,24,28,27,25,20,18,15,13, 推测在每一分钟时的温度.
问题的提出
在生产和实验中,关于函数f(x),经常存在两种情况: (1)其表达式不便于计算; (2)无表达式, 而只有函数在给定点的函数值,
称为拉格朗日插值基函数。
function y=lagrange(x0,y0,x) % x0插值节点, y0插值节点处的函数值,x要计算函数值的点; n=length(x0); m=length(x); for i=1:m s=0;z=x(i); for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); %计算插值基函数 end end s=p*y0(k)+s; end y(i)=s; end %计算在x(i)处的函数值(拉格朗日) %计算x0的长度 %计算x的长度
二维插值的定义
第一种(网格节点):
y
O
x
已知 mn个节点
( x i , y j , z ij ) ( i 1, 2 ,..., m ; j 1, 2 , n )
其中
xi , y j
互不相同,不妨设
a x1 x2 xm b c y1 y2 yn d
ys=interp1(x0,y0,x,'spline') %三次样条插值法 xyl=interp1(x0,y0,xx,'linear'); xyc=interp1(x0,y0,xx,'cubic'); xys=interp1(x0,y0,xx,'spline'); plot(x0,y0,'*',xx,xyl,'r',xx,xyc,'k',xx,xys,'g')
分两片的函数表达式如下: 第一片(下三角形区域): (x, y)满足
y y j1 y j x i 1 x i (x x i ) y j
插值函数为:
f ( x , y) f 1 (f 2 f 1 )( x x i ) (f 3 f 2 )( y y j )
x f 1 1 .5 2 3 .9 4 6 .6 7 1 1 .7 9 1 5 .6 12 1 8 .8 13 1 9 .6 15 2 0 .6 17 2 1 .1
例:测得平板表面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) 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)
构造一个二元函数 z f ( x , y ), 通过全部已知节点,即
f ( x i , y j ) z ij ( i 0 ,1, , m ; j 0,1, , n )
再用
f ( x, y)
计算插值,即
z f ( x , y ).
*
*
*
第二种(散乱节点):
y
y1 y0
x0 x1
y1 y0
xn
x0 x1
xn
多项式插值法包含:
拉格朗日插值 牛顿插值 三次埃尔米特插值法 分段线性插值 分段三次埃尔米特插值法 三次样条插值
拉格朗日插值公式
已知函数f(x)在n+1个点x0,x1,…,xn处的函数值为 y0,y1,…,yn 。求一n次多项式函数Pn(x),使其满足: Pn(xi)=yi,i=0,1,…,n. 解决此问题的拉格朗日插值多项式公式如下
双线性插值
y (x1 , y2 ) ( x2 , y2 ) x
(x1 , y1 ) ( x2 , y1 )
O
双线性插值是一片一片的空间二次曲面构成。 双线性插值函数的形式如下:
f ( x , y) (ax b)(cy d )
其中有四个待定系数,利用该函数在矩形的四个顶 点(插值节点)的函数值,得到四个代数方程,正 好确定四个系数。
分片线性插值
y (xi, yj+1) (xi+1, yj+1) (xi, yj) (xi+1, yj)
x
O
将四个插值点(矩形的四个顶点)处的函数值依次 简记为: f (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f4
x y
x0 y0
x1 y1
x2 y2
… …
xn yn
怎样计算其它点的函数值?
两种方法: (1)函数插值; (2)曲线拟合.
插值法
定义:当精确函数 y = f(x) 非常复杂或未知 时,在一系列节点 x0 … xn 处测得函数值 y0 = f(x0), … ,yn = f(xn), 由此构造一个简单易算的近似函数 p(x) f(x),满 足条件 p(xi) = f(xi) (i = 0, … n)------ 插值条件 这里的 p(x) 称为f(x) 的插值函数;构造插值函数的 方法为插值法。 当 p(x)为多项式时,我们称p(x)为插值多项 式;构造插值多项式的方法称为多项式插值法.
用MATLAB作插值计算
一维插值函数:
yi=interp1(x,y,xi,'method')
xi处的插 值结果 插值节点 被插值点 插值方法
‘nearest’ :最邻近插值 ‘linear’ : 线性插值; ‘spline’ : 三次样条值; ‘cubic’ : 立方插值。 缺省时: 分段线性插值。
n
Pn ( x ) L i ( x ) y i
i 0
其中Li(x) 为n次多项式:
( x x 0 )( x x 1 ) ( x x i 1 )( x x i 1 ) ( x x n ) L i (x) ( x i x 0 )( x i x 1 ) ( x i x i 1 )( x i x i 1 ) ( x i x n )
Baidu Nhomakorabea
注意:所有的插值方法都要求x是单调的,并且xi不 能够超过x的范围。
插值法的应用
一水库上游河段降暴雨,根据预报测算上游流入水库的流量为 Q(t) (102立方米/秒) : t (时) 8 12 16 24 30 44 48 56 60 Q(t) 36 54 78 92 101 35 25 16 13 通过这个预报值,分别用不同的数值方法插值法来估计14 和 20时上游流入水库的流量,并利用不同的插值方法描绘水流量 曲线 。
第二片(上三角形区域):(x, y)满足
y y j1 y j x i 1 x i (x x i ) y i
插值函数为:
f ( x , y) f 1 (f 4 f 1 )( y y j ) (f 3 f 4 )( x x i )
注意:(x, y)当然应该是在插值节点所形成的矩形区 域内。显然,分片线性插值函数是连续的;
示例
给定数据表:
x lnx 0.4 -0.916291 0.5 -0.693147 0.6 -0.510826 0.7 -0.356675 0.8 -0.223144
用lagrange插值公式计算ln(0.54)的函数值 clear x0=0.4:0.1:0.8; y0=log(x0); x=0.54; lagrange(x0,y0,x)
拟合
ºC) 温度 t ( 20.5 32.7 51.0 73.0 95.7 已知热敏电阻数据:
电阻R() 765 求60ºC时的电阻R.
1100 1000 900 800 700 20
826
873
942 1032
设 R=at+b a,b为待定系数
40
60
80
100
已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg) t (h) 0.25 0.5 1 1.5 2 3 4 6 8 c (g/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01 求血药浓度随时间的变化规律c(t). 作半对数坐标系(semilogy:y轴用以10为底的对数刻度标定,类似于 plot(x,log10(y)),但是对于log10(0)不能给出警告信息)下的图形
x0=[8,12,16,24,30,44,48,56,60]; y0=[36,54,78,92,101,35,25,16,13]; x=[14,20];xx=[8:0.1:60]; yl=interp1(x0,y0,x,'linear') %分段线性插值法 yc=interp1(x0,y0,x,'cubic') %分段三次埃尔米特插值法
数学软件与数学实验 插值与拟合
2 1.5
1
0.5
0
-0.5 -5
-4
-3
-2
-1
0
1
2
3
4
5
zhuysxxu2009@163.com
问题
一水库上游河段降暴雨,根据预报测算上游流入 水库的流量为Q(t) (102立方米/秒) : t (时) 8 12 16 24 30 44 48 56 60 Q(t)36 54 78 92 101 35 25 16 13 通过这个预报值,估计14 和 20 时上游流入水库 的流量.