插值及其误差Word文档格式.docx
- 文档编号:22588806
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:22.84KB
插值及其误差Word文档格式.docx
《插值及其误差Word文档格式.docx》由会员分享,可在线阅读,更多相关《插值及其误差Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
anXo
yo
ax
anX
y1(3)
LL
LLL
anXn
yn
记此方程组的系数矩阵为A,则
1XoLxn
detA
1x1Lx-iLLLLLL
1XnLx:
是范德蒙特(Vandermonde)行列式。
当x0,x1,L,焉互不相同时,此行列式值不为
零。
因此方程组(3)有唯一解。
这表明,只要n1个节点互不相同,满足插值要求
(2)的插值多项式
(1)是唯一的。
插值多项式与被插函数之间的差
称为截断误差,又称为插值余项。
当fx充分光滑时,
a,b
fn1尺xfxLnx
n1
其中n1xxxj。
j0
1.1.2拉格朗日插值多项式
实际上比较方便的作法不是解方程(
3)求待定系数,而是先构造一组基函数
lix
xx0Lx1
人X。
LXj
X1LXjXn
0,1L,n
nxXj.
ij0XXj
lix是n次多项式,满足
Oji
liXj
令
1ji
nxXj
(4)
Lnx
yilix
yi
iO
jOXiXj
上式称为n次Lagrange插值多项式,由方程(3)解的唯一性,n1个节点的n次Lagrange插值多项式存在唯一。
1.1.3用Matlab作Lagrange插值
Matlab中没有现成的Lagrange插值函数,必须编写一个M文件实现Lagrange插值。
设n个节点数据以数组xO,yO输入,m个插值点以数组x输入,输出数组y为m个插值。
编写一个名为的M文件:
functiony=lagrange(xO,yO,x);
n=length(xO);
m=length(x);
fori=1:
m
z=x(i);
s=;
fork=1:
n
P=;
forj=1:
ifj〜=k
p=p*(z-xO(j))/(xO(k)-xO(j));
end
s=p*yO(k)+s;
y(i)=s;
endsin=0.
cos=
tan=
分段线性插值
1.2.1插值多项式的振荡
用Lagrange插值多项式Lnx近似fxaxb,虽然随着节点个数的增加,Lnx的次数n变大,多数情况下误差Rnx会变小。
但是n增大时,Lnx的光滑性变坏,有时会出现很大的振荡。
理论上,当n,在a,b内并不能保证Lnx处处收敛于fx。
Runge给出了一个有名的例子:
fx亠,x5,5
1x
对于较大的x,随着n的增大,Lnx振荡越来越大,事实上可以证明,仅当
x3.63时,才有limLnxfx,而在此区间外,Lnx是发散的。
高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。
1.2.2分段线性插值
简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作Inx,它满足InXy,且Inx『i在每个小区间
x/1上是线性函数i0,1丄,n。
Inx可以表示为
InxYilix
i0
x1
xXi-1,Xii
0时舍去
Xi
x1'
NZ
x+1
xx,X1i
n时舍去
x+1'
0,
其它
Inx有良好的收敛性,即对于xa,b,
limInxfx
用InX计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n无关。
但n越大,分段越多,插值误差越小。
实际上用函数表作插值计算时,分段线性插值就
足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。
123用Matlab实现分段线性插值
用Matlab实现分段线性插值不需要编制函数程序,Matlab中有现成的一维插值函数interpl。
y=interp1(xO,yO,x,'
method'
)
method指定插值的方法,默认为线性插值。
其值可为:
'
nearest'
最近项插值
linear'
线性插值
spline'
逐段3次样条插值
cubic'
保凹凸性3次插值。
所有的插值方法要求xO是单调的。
当x0为等距时可以用快速插值法,使用快速插值法的格式为'
*nearest'
、
*linear'
、'
*spline'
*cubic'
。
样条插值
许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,而且要有连续的曲率,这就导致了样条插值的产生。
1.3.1样条函数的概念
所谓样条(Spline)本来是工程设计中使用的一种绘图工具,它是富有弹性的细木条或细金属条。
绘图员利用它把一些已知点连接成一条光滑曲线(称为样条曲线),并使连接点处有连续的曲率。
数学上将具有一定光滑性的分段多项式称为样条函数。
具体地说,给定区间a,b的一个分划
ax0X|L
Xn1
Xnb
如果函数sX满足:
(1)在每个小区间x,Xiii0,1,L,n1上sX是k次多项式;
(2)sx在a,b上具有k1阶连续导数。
则称sX为关于分划的k次样条函数,其图形称为k次样条曲线。
Xo,X1,L,Xn称
为样条节点,X1,X2,L,Xn1称为内节点,Xo,Xn称为边界点,这类样条函数的全体记做SP,k,称为k次样条函数空间。
显然,折线是一次样条曲线。
若sxSp,k,则sX是关于分划的k次多项式样条函数。
k次多项式样条函数的一般形式为
skX
kixin1ik
上LXXj
i0i!
j0k!
j
其中i
i0,1,L,k和jj1,2,L,n1均为任意常数,而
XXj
k
kXXj,XXj
jj,j1,2,L,n1
0,xxj
在实际中最常用的是k=2和3的情况,即为二次样条函数和三次样条函数。
二次样条函数:
对于a,b上的分划:
ax0x1Lxn1xnb,则
sx
22n1i2
01X2!
Xj02「XSP,2(5)
2
2xXj,xXj
其中xXj,j1,2,L,n1。
三次样条函数:
axqx-\Lx,.1xnb,贝U
n13
2233i3cc/
S3xoixxxxxjSp,3(6)
2!
3!
jo2!
3
3xxj,xxj
其中xxj,j1,2,L,n1。
利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。
例如分段线
性插值是一次样条插值。
下面我们介绍二次、三次样条插值。
1.3.2二次样条函数插值
首先,我们注意到s2xSp,2中含有n2个特定常数,故应需要n2个
插值条件,因此,二次样条插值问题可分为两类:
问题
(1):
已知插值节点Xi和相应的函数值yii0,1,L,n以及端点x°
(或x,)处的导
数值
y'
(或)
n,
求
tS2X
Sp
2
使得
S2
yii
0,1,2,L
n
或S'
(7)
S'
X0
y。
Xn
事实上,
可以证明
这两类插值问
题者
E是唯
「可解的
对于问题
(1)
由条件
1
1X0
2X0
X1
1X1
2Xl
y1
1n1
Xj
1Xj
—
2Xj
i
yjj
2j0
引入记号
X
1,2
1,L,
为未
知向量,
o
2,3,L,n
Cyo,y1,L,yn,y'
o为已
知向量。
12
X。
2X0
A1
X2
产
M
xn
XnX
于是,问题转化为求方程组AXC的解X0,1,2,1,L,n1T的问题,即可得到二次样条函数s2x的表达式。
1.3.3三次样条函数插值
由于S3xS,3中含有n3个特定常数,故应需要n3个插值条件,已知插值节点Xi和相应的函数值f为yii0,1,L,n,这里提供了n1个条
件,还需要2个边界条件。
常用的三次样条函数的边界条件有3种类型:
(1)s'
3ay'
o,s'
3by;
由这种边界条件建立的样条插值函数称为
fx的完备三次样条插值函数。
特别地,y'
oy'
n0时,样条曲线在端点处呈水平状态。
如果f'
x不知道,我们可以要求s'
3x与f'
x在端点处近似相等。
这时
以Xo,X1,X2,X3为节点作一个三次Newton插值多项式Nax,以Xn,Xn1,Xn2,Xn3作一个三次Newton插值多项式Nbx,要求
s'
aN'
aa,s'
bN'
bb
由这种边界条件建立的三次样条称为fx的Lagrange三次样条插值函数。
(2)s'
3xyis“3by'
3。
特别地y'
ny'
n0时,称为自然边界条件。
(3)s'
3a0s'
3b0,s'
3b0,(这里要求s3a0s3b0)此条件称为周期条件。
三次样条插值在Matlab中的实现
在Matlab中数据点称之为断点。
如果三次样条插值没有边界条件,最常用的方法,就是采用非扭结(not-a-knot)条件。
这个条件强迫第1个和第2个三次多项式的三阶导数相等。
对最后一个和倒数第2个三次多项式也做同样地处理。
Matlab中三次样条插值也有现成的函数:
y=interp1(x0,y0,x,'
spline'
);
y=spline(x0,y0,x);
pp=csape(x0,y0,conds,)y=ppval(pp,x)。
其中xO,yO是已知数据点,x是插值点,y是插值点的函数值。
对于三次样条插值,提倡使用函数csape,csape的返回值是pp形式,要求插值点的函数值,必须调用函数ppval。
pp=csape(xO,yO)使用默认的边界条件,即Lagrange边界条件。
pp=csape(x0,y0,conds中的conds指定插值的边界条件,其值可为:
complete'
边界为一阶导数,即默认的边界条件
not-a-knot'
非扭结条件
periodic'
周期条件
second'
边界为二阶导数,二阶导数的值[O,O]。
variational'
设置边界的二阶导数值为[O,O]。
对于一些特殊的边界条件,可以通过conds的一个1x2矩阵来表示,conds元素的取值为1,2。
此时,使用命令
pp=csape(xO,yO_ext,conds)
其中y0_ext=[left,y0,right],这里left表示左边界的取值,right表示右边界的取值。
conds(i)=jB含义是给定端点i的j阶导数,即conds的第一个元素表示左边界的条件,第二个元素表示右边界的条件,conds=[2,1]表示左边界是二阶导数,右边界是一阶导数,对应的值由left和right给出。
2源程序
clcclearallcloseallx0=[];
%y0=[];
y00=[];
y0=[];
x=;
digits(16);
y仁vpa(lagrange(xO,yO,x))%调用前面编写的Lagrange插值函数y2=vpa(interp1(x0,y0,x))%分段线性插值
y3=vpa(interp1(xO,yO,x,'
))%边界为一阶导数的三次样条插值pp1=csape(xO,yO);
y4=vpa(ppval(pp1,x))%边界为一阶导数的三次样条插值pp2=csape(xO,yO,'
);
y5=vpa(ppval(pp2,x))%边界为二阶导数的三次样条插值
y1=vpa(lagrange(xO,yOO,x))
y2=vpa(interp1(xO,yOO,x))y3=vpa(interp1(xO,yOO,x,'
))pp1=csape(xO,yOO);
y4=vpa(ppval(pp1,x))pp2=csape(xO,yOO,'
y5=vpa(ppval(pp2,x))
3结果
Lagrange®
值结果
sinO.
cossincostan
分段线性插值结果
sincossincostan
边界为一阶导数的三次样条插值
sin0.
cos
sincos
tan
csape)
边界为一阶导数的三次样条插值(使用sin0.
边界为二阶导数的三次样条插值
MATLAB计算的近似值(作为准确值)
sincostan
.all*厌i»
»
*»
•«
/
\
g
r
w
•
/1
II
■
}
I
<
«
383IV33
•r
icICC1244IMC3isriuan
•M«
K*l»
I®
1SWU
—j
"
Wj
■—亠亠~*
■■
/I'
♦,
IC«
B
em
4G
4
->
OR
OK
q
K1021244(SStSM1ST1M
力ISJM1KC1«
14TI&
2U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 及其 误差