插值与逼近拟合及其Matlab应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xk 1 x x xk L1 ( x) yk yk 1 xk 1 xk xk 1 xk
令
xk 1 x lk ( x ) , xk 1 xk
x xk lk 1 ( x) xk 1 xk
则所求线性插值多项式 L1 ( x) yk lk ( x) yk 1lk 1 ( x),
2、spline( )是三次样条插值函数,其调用格式为 yi=spline(x,y,xi), 其中x,y,xi,yi的意义与上述yi=interp1(x,y,xi,'spline') 中的相同,其实执行interp1(x,y,xi,'spline')就是调用 spline(x,y,xi).边界条件通常是非扭结边界条件,即三次 样条在第二个和倒数第二个插值节点处的三阶导数连续; 当y比x恰多两个元素时,y的首元素和末元素为在两个 端点的斜率.
解 输入 >>x=[1 4 9 16];y=[1 2 3 4]; >>pp=csape(x,y,'complete',[1/2 1/8]); >>ppval(pp,5) 输出>>ans =2.2287,即近似值为 5 S (5) 2.2287 再输入 >>pp.coefs 就得到输出 >>ans =
再考察n 2时, 假定给定插值节点 k 1 , xk , xk 1,要求 x 二次插值多项式 2 ( x ),满足 L L2 ( xk 1 ) yk 1 , L2 ( xk ) yk , L2 ( xk 1 ) yk 1 .
采用基函数法,基函数lk 1 ( x), lk ( x)和lk 1 ( x)是二次函数, 并满足 lk 1 ( xk 1 ) 1 lk 1 ( xk ) 0,lk 1 ( xk 1 ) 0, , lk ( xk 1 ) 0,lk ( xk ) 1 lk ( xk 1 ) 0, , lk 1 ( xk 1 ) 0,lk 1 ( xk ) 0,lk 1 ( xk 1 ) 1.
插值和拟合及其Matlab应用
内容提要
§1、插值方法 §1.1 拉格朗日插值方法 §1.2 三次样条插值方法 §1.3 Matlab应用举例 §2、逼近与拟合 §2.1 最佳平方逼近 §2.2 数据拟合的最小二乘法 §2.3 Matlab应用举例
§1 插值方法
§1.1 拉格朗日插值方法
设函数y f ( x)在区间[a, b]上有定义, 且已知它在点a x0 x1 xn b上的函数值y0 , y1,, yn .
2
jk
§1.2 三次样条插值方法
定义1 对节点a x0 x1 xn b,若存在s( x )满足 : 1) 在每个小区间 x j , x j 1 ]是一个次数不超过3次的多项式; [ 2) 在每一个内节点上具有 直到二阶的连续导数 , 则称s( x )是节点x0 , x1 ,, xn上的三次样条函数.
第三种边界条件(周期 边界条件) : s( x0 0) s( xn 0), s( x0 0) s( xn 0). 注意:因插值条件 0 yn , 故 s( x0 0) s( xn 0)已成立. y
§1.3 Matlab应用举例
1、interp1( )是Matlab中的一维插值函数,其调用格式为 yi=interp1(x,y,xi,'method'), 其中x为插值节点组成的向量,y为插值节点上的函数值 组成的向量,yi为在被插值点xi处的插值结果, ‘method’是采用的插值方法,有以下几种选择: ‘nearest’为最邻近插值;‘linear’为分段线性插值; ‘spline’为三次样条插值;‘cubic’和‘pchip’均为分 段Hermite插值;缺省时表示分段线性插值.
(1.6)
一般情况, 对于给定的n 1个插值节点x0 x1 xn, 要求n次插值多项式Ln ( x),满足 Ln ( xi ) yi , (i 0,1,, n).
仍采用基函数法,求一个n次插值基函数 lk ( x), 满足 0, i k lk ( xi ) (i, k 0,1,, n) 1, i k ( x x0 )Βιβλιοθήκη Baidu( x xk 1 )( x xk 1 )( x xn ) lk ( x) , ( xk x0 )( xk xk 1 )( xk xk 1 )( xk xn ) 故所求n次插值多项式
解 输入
>> x=[0.0 4.74 9.50 19.0 38.0 57.0 76.0 95.0 114.0 133.0 152.0 171.0 190.0]; y=[0.0 5.32 8.10 11.97 16.15 17.1 16.34 14.63 12.16 9.69 7.03 3.99 0.0];
>> xx=0.0:0.1:190;yy=spline(x,y,xx);plot(xx,yy) 输出图2如下:
图2 用三次样条函数画出的机翼曲线
3、csape()是三次样条插值函数,可以输入边界条件,其调用格式为 pp=csape(x,y,CONDS,VALCONDS), 其中pp是返回值矩阵,第i行表示三次样条插值多项式第i个小区 间上四项的系数;x和y的意义与前面相同,CONDS是边界条件 类型,有如下选择:'complete'为第一种边界条件(给定端点一阶 导数);'second'为第二种边界条件(给定端点二阶导数); 'variational'为自然边界条件(端点二阶导数为零);'periodic'为 第三种边界条件(周期边界条件);'not-a-knot'为非扭结边界条 件;缺省时表示非扭结边界条件.VALCONDS为所需边界值. 例3 已知平方根表,如下所示, x: 1 4 9 16 √x: 1 2 3 4 以及第一种边界条件,求三次样条插值函数,并计算的近似值.
还需2个条件,通常在两个端 点加上边界条件.
常见三种边界条件 :
第一种边界条件: s( x0 ) y0 , s( xn ) yn . 第二种边界条件: s( x0 ) y0 , s( xn ) yn . 特别地,自然边界条件: s( x0 ) 0, s( xn ) 0.
于是,所求二次插值多 项式 L2 ( x ) yk 1lk 1 ( x ) yk lk ( x ) yk 1lk 1 ( x ),
也就是, ( x xk )( x xk 1 ) L2 ( x ) yk 1 ( xk 1 xk )( xk 1 xk 1 ) ( x xk 1 )( x xk 1 ) yk ( xk xk 1 )( xk xk 1 ) ( x xk 1 )( x xk ) yk 1 . ( xk 1 xk 1 )( xk 1 xk )
例1 某日测得从零点开始每隔2小时的环境温度数据如下(℃): 12,9,9,10,18,24,28,27,25,20,18,15,13, 推测中午1点(即13点)的温度,并画出这一天的温度曲线.
解 1) 输入 >> x=0:2:24; y=[12 9 9 10 18 24 28 27 25 20 18 15 13]; >> x1=13; y1=interp1(x,y,x1),y2=interp1(x,y,x1,'spline') 依次输出线性插值和三次样条插值结果 y1 =27.5000,y2= 27.8725. 推测中午1点的温度约为27.87℃. 2) 输入 >> xi=0:1/3600:24; y1i=interp1(x,y,xi); y2i=interp1(x,y,xi,'spline'); >> plot(x,y,'o',xi,y1i,'-', xi,y2i,'-.') 输出这一天的温度曲线,见图1. 图1 圆圈为插值点,折线为线性插值曲线,点划线为三次样条曲线.
( x xk )( x xk 1 ) lk 1 ( x) , ( xk 1 x1 )( xk 1 xk 1 ) ( x xk 1 )( x xk 1 ) ( x xk 1 )( x xk ) lk ( x) , lk 1 ( x) . ( xk xk 1 )( xk xk 1 ) ( xk 1 xk 1 )( xk 1 xk )
若存在一个次数不超过n的多项式 P( x) a0 a1x an x n , 满足条件 P( xi ) yi (i 0,1,, n) 则称P( x)为f ( x)的插值多项式,点( xi , yi )为插值点, x0 , x1 ,, xn为插值节点.
先考察n 1时, 假定给定区间 xk , xk 1 ]及端点函数值yk [ f ( xk ), yk 1 f ( xk 1 ), 要求线性插值多项式 1 ( x ),满足 L L1 ( xk ) yk , L1 ( xk 1 ) yk 1 .
Ln ( x) yk lk ( x)
k 0 n
Ln ( x)称为n次拉格朗日插值多项式 .
练习 给定数据表
xi 0 1 2 3
yi
0
1
5
14
求三次拉格朗日插值多项式L3(x).
解:在( .10 1 )中,取n 3并代入数据表值得 L3 ( x ) 0 l0 ( x ) 1 l1 ( x ) 5 l2 ( x ) 14 l3 ( x )
(2.2)
在每个[ x j , x j 1 ]上要确定 4个待定系数,共 4n个参数 .
因二阶导数连续,故在 内节点x j 上满足连续性条件 s( x j 0) s( x j 0), s( x j 0) s( x j 0), s( x j 0) s( x j 0). ( j 1,, n 1) (2.3 ) 再加上插值条件,共 n 2个条件. 4
x( x 2)( x 3) x( x 1)( x 3) x( x 1)( x 2) 01 5 14 1 ( 1) ( 2) 2 1 ( 1) 3 21 x( 2 x 3 x 1) 1 x( x 1)( 2 x 1). 6 6 n x x ( x x0 )( x xk 1 )( x xk 1 )( x xn ) j 或 ( xk x0 )( xk xk 1 )( xk xk 1 )( xk xn ) j 0 xk x j
例2 已知机翼上缘轮线数据如下,试用三次样条函数画出机翼曲线.
x: 0.00 4.74 9.50 19.00 38.00 57.0 76.00 95.00 114.0 133.0 152.0 171.0 190.0 y: 0.00 5.32 8.10 11.97 16.15 17.1 16.34 14.63 12.16 9.69 7.03 3.99 0.00
若在节点上给定函数值 ( x j ) y j ( j 0,, n), 并满足 f 3) s( x j ) y j , j 0,, n, 则称s( x )是三次样条插值函数 . (2.1 )
三次样条插值函数 ( x )的确定 : s s1 ( x ), x0 x x1 , s( x ) s ( x ), x x x . n n1 n
令
xk 1 x lk ( x ) , xk 1 xk
x xk lk 1 ( x) xk 1 xk
则所求线性插值多项式 L1 ( x) yk lk ( x) yk 1lk 1 ( x),
2、spline( )是三次样条插值函数,其调用格式为 yi=spline(x,y,xi), 其中x,y,xi,yi的意义与上述yi=interp1(x,y,xi,'spline') 中的相同,其实执行interp1(x,y,xi,'spline')就是调用 spline(x,y,xi).边界条件通常是非扭结边界条件,即三次 样条在第二个和倒数第二个插值节点处的三阶导数连续; 当y比x恰多两个元素时,y的首元素和末元素为在两个 端点的斜率.
解 输入 >>x=[1 4 9 16];y=[1 2 3 4]; >>pp=csape(x,y,'complete',[1/2 1/8]); >>ppval(pp,5) 输出>>ans =2.2287,即近似值为 5 S (5) 2.2287 再输入 >>pp.coefs 就得到输出 >>ans =
再考察n 2时, 假定给定插值节点 k 1 , xk , xk 1,要求 x 二次插值多项式 2 ( x ),满足 L L2 ( xk 1 ) yk 1 , L2 ( xk ) yk , L2 ( xk 1 ) yk 1 .
采用基函数法,基函数lk 1 ( x), lk ( x)和lk 1 ( x)是二次函数, 并满足 lk 1 ( xk 1 ) 1 lk 1 ( xk ) 0,lk 1 ( xk 1 ) 0, , lk ( xk 1 ) 0,lk ( xk ) 1 lk ( xk 1 ) 0, , lk 1 ( xk 1 ) 0,lk 1 ( xk ) 0,lk 1 ( xk 1 ) 1.
插值和拟合及其Matlab应用
内容提要
§1、插值方法 §1.1 拉格朗日插值方法 §1.2 三次样条插值方法 §1.3 Matlab应用举例 §2、逼近与拟合 §2.1 最佳平方逼近 §2.2 数据拟合的最小二乘法 §2.3 Matlab应用举例
§1 插值方法
§1.1 拉格朗日插值方法
设函数y f ( x)在区间[a, b]上有定义, 且已知它在点a x0 x1 xn b上的函数值y0 , y1,, yn .
2
jk
§1.2 三次样条插值方法
定义1 对节点a x0 x1 xn b,若存在s( x )满足 : 1) 在每个小区间 x j , x j 1 ]是一个次数不超过3次的多项式; [ 2) 在每一个内节点上具有 直到二阶的连续导数 , 则称s( x )是节点x0 , x1 ,, xn上的三次样条函数.
第三种边界条件(周期 边界条件) : s( x0 0) s( xn 0), s( x0 0) s( xn 0). 注意:因插值条件 0 yn , 故 s( x0 0) s( xn 0)已成立. y
§1.3 Matlab应用举例
1、interp1( )是Matlab中的一维插值函数,其调用格式为 yi=interp1(x,y,xi,'method'), 其中x为插值节点组成的向量,y为插值节点上的函数值 组成的向量,yi为在被插值点xi处的插值结果, ‘method’是采用的插值方法,有以下几种选择: ‘nearest’为最邻近插值;‘linear’为分段线性插值; ‘spline’为三次样条插值;‘cubic’和‘pchip’均为分 段Hermite插值;缺省时表示分段线性插值.
(1.6)
一般情况, 对于给定的n 1个插值节点x0 x1 xn, 要求n次插值多项式Ln ( x),满足 Ln ( xi ) yi , (i 0,1,, n).
仍采用基函数法,求一个n次插值基函数 lk ( x), 满足 0, i k lk ( xi ) (i, k 0,1,, n) 1, i k ( x x0 )Βιβλιοθήκη Baidu( x xk 1 )( x xk 1 )( x xn ) lk ( x) , ( xk x0 )( xk xk 1 )( xk xk 1 )( xk xn ) 故所求n次插值多项式
解 输入
>> x=[0.0 4.74 9.50 19.0 38.0 57.0 76.0 95.0 114.0 133.0 152.0 171.0 190.0]; y=[0.0 5.32 8.10 11.97 16.15 17.1 16.34 14.63 12.16 9.69 7.03 3.99 0.0];
>> xx=0.0:0.1:190;yy=spline(x,y,xx);plot(xx,yy) 输出图2如下:
图2 用三次样条函数画出的机翼曲线
3、csape()是三次样条插值函数,可以输入边界条件,其调用格式为 pp=csape(x,y,CONDS,VALCONDS), 其中pp是返回值矩阵,第i行表示三次样条插值多项式第i个小区 间上四项的系数;x和y的意义与前面相同,CONDS是边界条件 类型,有如下选择:'complete'为第一种边界条件(给定端点一阶 导数);'second'为第二种边界条件(给定端点二阶导数); 'variational'为自然边界条件(端点二阶导数为零);'periodic'为 第三种边界条件(周期边界条件);'not-a-knot'为非扭结边界条 件;缺省时表示非扭结边界条件.VALCONDS为所需边界值. 例3 已知平方根表,如下所示, x: 1 4 9 16 √x: 1 2 3 4 以及第一种边界条件,求三次样条插值函数,并计算的近似值.
还需2个条件,通常在两个端 点加上边界条件.
常见三种边界条件 :
第一种边界条件: s( x0 ) y0 , s( xn ) yn . 第二种边界条件: s( x0 ) y0 , s( xn ) yn . 特别地,自然边界条件: s( x0 ) 0, s( xn ) 0.
于是,所求二次插值多 项式 L2 ( x ) yk 1lk 1 ( x ) yk lk ( x ) yk 1lk 1 ( x ),
也就是, ( x xk )( x xk 1 ) L2 ( x ) yk 1 ( xk 1 xk )( xk 1 xk 1 ) ( x xk 1 )( x xk 1 ) yk ( xk xk 1 )( xk xk 1 ) ( x xk 1 )( x xk ) yk 1 . ( xk 1 xk 1 )( xk 1 xk )
例1 某日测得从零点开始每隔2小时的环境温度数据如下(℃): 12,9,9,10,18,24,28,27,25,20,18,15,13, 推测中午1点(即13点)的温度,并画出这一天的温度曲线.
解 1) 输入 >> x=0:2:24; y=[12 9 9 10 18 24 28 27 25 20 18 15 13]; >> x1=13; y1=interp1(x,y,x1),y2=interp1(x,y,x1,'spline') 依次输出线性插值和三次样条插值结果 y1 =27.5000,y2= 27.8725. 推测中午1点的温度约为27.87℃. 2) 输入 >> xi=0:1/3600:24; y1i=interp1(x,y,xi); y2i=interp1(x,y,xi,'spline'); >> plot(x,y,'o',xi,y1i,'-', xi,y2i,'-.') 输出这一天的温度曲线,见图1. 图1 圆圈为插值点,折线为线性插值曲线,点划线为三次样条曲线.
( x xk )( x xk 1 ) lk 1 ( x) , ( xk 1 x1 )( xk 1 xk 1 ) ( x xk 1 )( x xk 1 ) ( x xk 1 )( x xk ) lk ( x) , lk 1 ( x) . ( xk xk 1 )( xk xk 1 ) ( xk 1 xk 1 )( xk 1 xk )
若存在一个次数不超过n的多项式 P( x) a0 a1x an x n , 满足条件 P( xi ) yi (i 0,1,, n) 则称P( x)为f ( x)的插值多项式,点( xi , yi )为插值点, x0 , x1 ,, xn为插值节点.
先考察n 1时, 假定给定区间 xk , xk 1 ]及端点函数值yk [ f ( xk ), yk 1 f ( xk 1 ), 要求线性插值多项式 1 ( x ),满足 L L1 ( xk ) yk , L1 ( xk 1 ) yk 1 .
Ln ( x) yk lk ( x)
k 0 n
Ln ( x)称为n次拉格朗日插值多项式 .
练习 给定数据表
xi 0 1 2 3
yi
0
1
5
14
求三次拉格朗日插值多项式L3(x).
解:在( .10 1 )中,取n 3并代入数据表值得 L3 ( x ) 0 l0 ( x ) 1 l1 ( x ) 5 l2 ( x ) 14 l3 ( x )
(2.2)
在每个[ x j , x j 1 ]上要确定 4个待定系数,共 4n个参数 .
因二阶导数连续,故在 内节点x j 上满足连续性条件 s( x j 0) s( x j 0), s( x j 0) s( x j 0), s( x j 0) s( x j 0). ( j 1,, n 1) (2.3 ) 再加上插值条件,共 n 2个条件. 4
x( x 2)( x 3) x( x 1)( x 3) x( x 1)( x 2) 01 5 14 1 ( 1) ( 2) 2 1 ( 1) 3 21 x( 2 x 3 x 1) 1 x( x 1)( 2 x 1). 6 6 n x x ( x x0 )( x xk 1 )( x xk 1 )( x xn ) j 或 ( xk x0 )( xk xk 1 )( xk xk 1 )( xk xn ) j 0 xk x j
例2 已知机翼上缘轮线数据如下,试用三次样条函数画出机翼曲线.
x: 0.00 4.74 9.50 19.00 38.00 57.0 76.00 95.00 114.0 133.0 152.0 171.0 190.0 y: 0.00 5.32 8.10 11.97 16.15 17.1 16.34 14.63 12.16 9.69 7.03 3.99 0.00
若在节点上给定函数值 ( x j ) y j ( j 0,, n), 并满足 f 3) s( x j ) y j , j 0,, n, 则称s( x )是三次样条插值函数 . (2.1 )
三次样条插值函数 ( x )的确定 : s s1 ( x ), x0 x x1 , s( x ) s ( x ), x x x . n n1 n