您现在的位置:首页 > >

第6章 数值分析

发布时间:

第6章 插值法

6.1 引言
6.2 拉格朗日插值

6.3 均差与牛顿插值 ?
6.4 差分与等距节点插值? 6.5 Hermite插值 6.6 分段低次插值? 6.7 三次样条插值

6.8 MATLAB解法及主要程序
*题6 数值实验题

第6章 插值法

6.1 引



许多实际问题都是用函数y=f(x)来表示某种内在规律的数 量关系的,其中相当一部分函数是通过实验或观测得到的。

虽然y=f(x)在某个区间[a, b]上是存在的,有的还是连续的,
但却只能给出[a,b]上一系列点xi的函数值yi=f(xi)(i=0, 1, 2,?, n)。这只是一张函数表。有的函数虽然有解析表达式, 但由于计算复杂,使用不方便,通常也造一个函数表,如我 们熟悉的三角函数表、对数表、*方根和立方根表, 等等。 为了研究函数的变化规律,往往需要求出不在表上的函数值。

第6章 插值法

因此,我们希望根据给定的函数表做一个既能反映函数
f(x)的特性,又便于计算的简单函数P(x),用P(x)*似f(x)。通 常选一类较简单的函数(如代数多项式或分段代数多项式)作 为P(x),并使P(xi)=f(xi)对i=0, 1, 2,?, n成立。这样确定的函数 P(x)就是我们希望得到的插值函数。下面我们给出有关插值 法的定义。?

第6章 插值法

插值的最终目的就是要在所给函数表中再“插”进一些
所需要的函数值,即计算插值点x(x≠xi)上的函数值f(x),而插

值法的关键在于求插值函数P(x)。事实上,插值函数P(x)的
选取是事先人为给定的,若选取P(x)为次数不超过n的代数多 项式,即?? P(x)=a0+a1x+a2x2+?+anxn (6.2)

第6章 插值法

其中ai(i=0, 1, 2, ?, n)为实数,则称P(x)为插值多项式,相应
的插值方法称为代数多项式插值; 若P(x)为分段的多项式,

就称为分段插值; 若P(x)为三角多项式,就称为三角插值。
本章只讨论代数多项式插值。?

从几何上看,插值法就是求曲线y=P(x),使其通过给定
的n+1个点(xi, yi), i=0, 1, 2,?, n,并用它*似已知曲线y=f(x), 如图6.1所示.?

第6章 插值法

图 6.1

第6章 插值法

插值方法源于科学研究的实践。17世纪的西欧科学家探
索活动空前活跃,出现了诸如哥伦布发现“新大陆”、麦哲 伦环球航行等一系列重大事件,科学活动的客观需要强烈地 刺激了插值方法的深入研究。其实,插值方法是一类古老的 数学方法,早在一千多年前的隋唐时期,中华先贤在制定历

法的过程中就已经广泛地应用了插值技术。公元6世纪,隋
唐时期的刘焯已将等距节点的二次插值应用于天文计算,而 直到17世纪Newton才建立起等距节点上一般的插值公式,插 值的基本理论和结果也随之得以逐步完善,其应用日益增多。

第6章 插值法

电子计算机广泛使用以后,由于航空、造船、精密机械
加工等实际问题的需要,使插值法在实践或理论上显得更为 重要,并得到进一步发展,尤其是*几十年发展起来的样条 (?Spline?)插值更获得了广泛的应用。? 函数插值的基本问题有: 存在唯一性, 构造方法, 截断误 差和收敛性,以及数值计算的稳定性等。? 定理6.1(插值多项式的存在唯一性) 在n+1个互异节点

xi(i=0, 1, 2, ?, n)处满足插值条件(6.1)的次数不超过n的多项
式(6.2)存在且唯一。?

第6章 插值法

证明 对于多项式(6.2)应用条件(6.1)得
?
2 +?+a n ?a0+a1x0+a2 x0 n x0 =y0?

a0+a1x1+a2 x12 +?+an x1nn =y1?
??
n a0+a1xn+a2 x12 +?+an xn =yn

(6.3)

第6章 插值法

这是关于a0, a1, ?, an的n+1阶线性方程组,其系数行
列式

1 x0
??Vn(x0, x1, ?, xn)= 1

2 n x0 ? x0

x1 ? xn

? 1

x12 ? x1n ? ? n 2 xn ? xn

第6章 插值法

为范得蒙(Vandermonde)行列式,且??
Vn(x0, x1, ?, xn)=
0? j ?i ? n

? ( x i- x j)

??由于已知xi(i=0, 1, ?, n)互异,所以所有因子xi-xj≠0,于
是 Vn(x0, x1, ?, xn)≠0 ??由克莱姆(Cramer)法则,方程组(6.3)的解存在且唯一, 所以满足条件(6.1)的多项式(6.2)存在且唯一。 □?

定理的存在性说明插值问题总是有解的,唯一性说明插 值多项式的构造与所用的方法无关。

第6章 插值法

6.2 拉格朗日插值?
根据插值条件(6.1)通过求解线性方程组(6.3)来确定插值 多项式的系数,其计算量较大,因此常用其它方法来构造插

值多项式,而插值多项式的唯一性保证了用这些方法构造的
函数P(x)与解方程组(6.3)得到的函数是一致的。

本节将采用插值基函数的方法,构造一种具有一定特点
的插值多项式,即拉格朗日(Lagrange)插值多项式。?

第6章 插值法

先以两点插值问题为例来说明插值基函数及拉格朗日插
值多项式的构造方法。?

已知yi=f(xi)(i=0,1),求满足条件P1(xi)=yi(i=0, 1)的插值多
项式P1(x)。?

根据解析几何的知识,所求的P1(x)为过点(x0, y0)和点(x1,
y1)的直线,即?

y1 ? y0 P1(x)=y0+ ( x- x0 ) x1 ? x0

第6章 插值法

整理得??

x ? x1 x ? x0 P1(x)= y0 ? y1 ? l0 ( x) y0 ? l1 ( x) y1 x0 ? x1 x1 ? x0 ?? x ? x0 x ? x1 式中l0(x)= ,l1(x)= 。 显然l0(x),l1(x)具 x ? x x0 ? x1 1 0 有以下性质。?

第6章 插值法

性质1
性质2

?1 i ? 0 ?0 i ? 0 l0(xi)= ? , l1 ( xi ) ? ? . ?0 i ? 1 ?1 i ? 1 l0(x), l1(x)为由插值节点唯一确定的线性函数。

称上述一次多项式l0(x),l1(x)为节点x0, x1上的一次插值基函 数。可以看出,节点x0, x1上的一次插值基函数的次数为插 值节点个数减1,基函数组中所含的函数个数与插值节点的 个数相同。

第6章 插值法

而满足P1(xi)=yi(i=0, 1)的插值多项式P1(x)就是节点x0,x1
上插值基函数的线性组合,其组合系数分别为y0,y1。这种

表示为插值基函数线性组合的一次插值多项式就是一次拉格
朗日插值多项式。 当给定n+1个插值节点后,可类似地定义n次插值基函数, 并以此为基础构造n次拉格朗日插值多项式。 ?

第6章 插值法

6.2.1 插值基函数?
定义6.2 若n次多项式lk(x)(k=0, 1, 2, ?, n)在n+1个插值

节点x0<x1<?<xn上满足条件

??lk(xi)=δik=
??

?1 ? ?0

i?k i?k

(i, k=0, 1, 2, ?, n)

则称这n+1个n次多项式l0(x), l1(x), ?, ln(x)为插值节点x0, x1, ?, xn上的n次插值基函数。?

第6章 插值法

下面建立其具体表达式。?
由于i≠k时,lk(xi)=0,所以x0, x1, ?, xk-1, xk+1, ?, xn为lk(x) 的零点。故设 ??lk(x)=Ak(x-x0)(x-x1)?(x-xk-1)(x-xk+1)?(x-xn) ??由lk(xk)=1,得??

1 Ak= ( xk ? x0 )?( xk ? xk ?1 )( xk ? xk ?1 )?( xk ? xn )
(k=0, 1, ?, n)

第6章 插值法

于是
??

( x ? x0 )?( x ? xk ?1 )( x ? xk ?1 )?( x ? xn ) lk(x)= ( xk ? x0 )?( xk ? xk ?1 )( xk ? xk ?1 )?( xk ? xn )
(k=0, 1, ?, n)

第6章 插值法

显然lk(x)具有以下性质:?

1 i?k ? 性质1 lk(xi)= ? (k=0, 1, ?, n)。? ?0 i ? k 插值基函数的取值情况可用图形表示,如图6.2所示,
其中上、下图分别为n=1和n=2 时的插值基函数。?

第6章 插值法

图 6.2 ?Lagrange插值基函数

第6章 插值法

性质2

lk(x)(k=0, 1, ?, n)为由插值节点x0, x1, ?, xn唯一

确定的n次函数。?

性质3
同。?

基函数组所含的基函数个数与插值节点个数相

第6章 插值法

6.2.2 拉格朗日插值多项式?
下面以n次插值基函数为基础构造满足插值条件?? Ln(xk)=yk (k=0, 1, ?, n) ?的插值多项式Ln(x)。? (6.4)

第6章 插值法

容易验证,n次插值基函数的线性组合
以将满足条件(6.4)的插值多项式Ln(x)表示为

k ?0

?

n

lk(x)yk在插值

节点xk处的值等于yk(k=0, 1, ?, n)。 故利用n次插值基函数可

( x ? x0 )?( x ? xk ?1 )( x ? xk ?1 )?( x ? xn ) Ln ( x) ? ? lk ( x) yk ? ? yk k ?0 k ? 0 ( xk ? x0 ) ? ( xk ? xk ?1 )( xk ? xk ?1 ) ? ( xk ? xn )
n n

? x ? xj ? ? yk ?? ? ? ? ? k ? 0 ? 0 ? k ? j ? n xk ? x j ?
n

(6.5)? ?称Ln(x)为拉格朗日插值多项式。?

第6章 插值法

当n=1时,有??

x ? x1 x ? x0 y0 ? y1 L1(x)= x0 ? x1 x1 ? x0

(6.6)

? 当n=2时,有

L2(x)=

( x ? x1 )( x ? x2 ) ( x ? x0 )( x ? x2 ) ( x ? x0 )( x ? x1 ) y0 ? y1 ? y2 ( x0 ? x1 )( x0 ? x2 ) ( x1 ? x0 )( x1 ? x2 ) ( x2 ? x0 )( x2 ? x1 )
(6.7)

第6章 插值法

L1(x),L2(x)分别称为线性插值多项式和二次插值多项式, 其
几何意义如图6.3所示。

其中图6.3(a)表示过点(x0, y0),(x1, y1)的一条直线,图
6.3(b)表示通过三点(x0, y0),(x1, y1),(x2, y2)的一条抛物线,

所以也称二次插值为抛物插值。?

第6章 插值法

图 6.3

第6章 插值法

若记??
ωn+1(x)= ??则有ωn+1′(xk)=
n i ?0

?
i ?0

n

( x - x i)

(6.8)

(xk-xi)。于是Ln(x)也可写为?? ?

?n?1 ( x) yk Ln(x)= ? ? ?1 ( xk ) k ? 0 ( x ? xk )? n
n

(6.9)

第6章 插值法

6.2.3 拉格朗日插值多项式的余项?
若在[a,b]上用Ln(x)*似f(x),则其截断误差为 Rn(x)=f(x)-Ln(x),也称为插值多项式的余项。关于插值余项估 计有以下定理。?

第6章 插值法

定理6.2 设f (n)(x)在[a,b]上连续,f(n+1)(x)在(a, b)内存
在,节点a≤x0<x1<?<xn≤b,Ln(x)是满足条件(6.4)的插值多项 式,则对任何x∈[a,b],插值余项
( n ?1) f (? ) ω (x) ??Rn(x)=f(x)-Ln(x)= n+1 (n ? 1)!

(6.10)

第6章 插值法

这里ξ∈(a,b)且依赖于x。?
证明 由已知条件知Rn(x)在节点xk(k=0, 1, ?, n)上为零,

即Rn(xk)=0(k=0, 1, ?, n),于是
??Rn(x)=K(x)(x-x0)(x-x1)?(x-xn)=K(x)ωn+1(x)

(6.11)
?其中K(x)是与x有关的待定函数。?

第6章 插值法

现把x看成[a,b]上的一个固定点,作函数??
φ(t)=f(t)-Ln(t)-K(x)(t-x0)(t-x1)?(t-xn)

??根据插值条件及余项定义,可知φ(t)在点x0, x1, ?, xn及x
处均为零, 故φ(t)在[a,b]上有n+2个零点。 根据罗尔(Rolle) 中值定理, φ′(t)在φ(t)的两个零点之间至少有一个零点, 故 φ′(t)在(a, b)内至少有n+1个零点。对φ′(t)再应用罗尔中值定理, 可知φ″(t)在(a, b)内至少有n个零点。

第6章 插值法

依此类推,φ(n+1)(t)在(a, b)内至少有一个零点,设为ξ∈(a, b),
则??

φ (n+1)(ξ)=f (n+1)(ξ)-(n+1)!K(x)=0
??于是??
( n ?1) f (? ) ,ξ∈(a,b)且依赖于x K(x)= (n ? 1)! ??将它代入式(6.11),就得到余项表达式(6.10)。

□?

第6章 插值法

应当指出,余项表达式只有在f(x)的高阶导数存在时才能
应用。ξ在(a, b)内的具体位置通常不可能给出,如果我们 可以求出 max |f(n+1)(x)|=Mn+1,那么用插值多项式Ln(x)*
a ? x ?b

f(x)的误差限即为?? |Rn(x)|≤

M n ?1 |ωn+1(x)| ( n ? 1)!
(6.12)

第6章 插值法

当n=1时,线性插值余项为?? 1 R1(x)= f″(ξ)(x-x0)(x-x1), ξ∈[x0, x1] 2 (6.13)
??且进一步可以证明,若x在x0与x1之间,则??

|R1(x)|≤

( x1 ? x0 ) 2 max |f″(x)| a ? x ?b 8

(6.14)

第6章 插值法

当n=2时,抛物插值余项为??
R2(x)= 1 f(ξ)(x-x0)(x-x1)(x-x2),ξ∈[x0, x2] (6.15) 6 例6.1 设f(x)=x4,用余项定理写出节点-1,0,1,2上 的三次插值多项式。? 解 根据余项定理??
( 4) f (? ) (x-x )(x-x )(x-x )(x-x ) f(x)-L3(x)= 0 1 2 3 4!

??

第6章 插值法

即??
x4-L3(x)=x(x+1)(x-1)(x-2)

??所以?
L3(x)=2x3+x2-2x?

例6.2 ?Laplace积分函数
f(x)= 的函数值已造成函数表。

2 x ?t 2 ?? e ?dt?? ? 0 π

第6章 插值法

当在x0=4,x1=5之间用线性插值计算f(x)的*似值时,误差有
多大?? 解 由误差估计式(6.14),有?? 2 1 ( 5 ? 4 ) |R1(x)|≤ |f″(ξ)|= |f″(ξ)|, ξ∈(4,5) 8 8 ??由于

??

2 ? x2 4 x ? x2 f ?( x) ? e , f ??( x) ? ? e π π 4 2 ? x2 f ???( x) ? (2 x ? 1)e ? 0, x ? [4,5] π

第6章 插值法

即f″(x)是增函数,从而|f″(x)|=
数。 因此??

4 x ? x2 ?? e (x∈[4,5])是减函 π

??

max |f″(x)|=max(|f″(4)|
4? x ?5

?|f″(5)|)=|f″(4)|<1.015 86×10-6?

??故有??

1 max |f″(x)|<0.127×10-6? |R1(x)|≤?? 8 4? x ?5

第6章 插值法

例6.3 已知sin0.32=0.314 567,sin0.34=0.333 487,sin?
0.36=0.352 274,用线性插值和抛物插值计算sin0.3367的值并

估*囟衔蟛睢?
解 由题意取x0=0.32,y0=0.314 567,x1=0.34,y1=0.333 487,x2=0.36,y2=0.352 274。??

第6章 插值法

用线性插值计算,取x0=0.32及x1=0.34,由公式(6.6)得?
?

0.3367 ? x1 0.3367 ? x0 sin 0.3367 ? L1 (0.3367) ? y0 ? y1 x0 ? x1 x1 ? x0 0.3367 ? 0.34 0.3367 ? 0.32 ? ? 0.314567 ? ? 0.333487 0.32 ? 0.34 0.34 ? 0.32 ? 0.330365

第6章 插值法

其截断误差由式(6.13)得

M2 ??|R1(x)|≤ |(x-x0)(x-x1)| 2 ??其中M2= xmax |f″(x)|,因f(x)=sinx,f″(x)=-sinx。可取 ? x? x
0 1

M2=

max |sinx|=sinx1≤ 0.3335,于是?? x ? x? x
0 1

|R1(0.3367)|=|sin 0.3367-L1(0.3367)|?

1 × 0.3335×0.0167× 0.0033? 2 ≤ 0.92× 10-5?


第6章 插值法

用抛物插值计算sin0.3367时,由公式(6.7)得??
?sin0.3367≈

( x ? x1 )( x ? x2 ) ( x ? x0 )( x ? x2 ) ( x ? x0 )( x ? x1 ) y0 ? y1 ? y2 ( x0 ? x1 )( x0 ? x2 ) ( x1 ? x0 )( x1 ? x2 ) ( x2 ? x0 )( x2 ? x1 ) ? L2 (0.3367) 0.7689 ? 10 ?4 3.89 ? 10 ?4 ? 0.314567 ? ? 0.33487 ? 0.0008 0.0004 ? 0.5511? 10 ?4 ? 0.352274 ? 0.0008 ? 0.330274

第6章 插值法

这个结果与6位有效数字的正弦函数表完全一样,这说明查
表时用二次插值精度已相当高了。其截断误差限由式(6.15)

得??

M3 |R2(x)|≤ |(x-x0)(x-x1)(x-x2)| 6 ??其中M3= max |f(x)|=cosx0<0.828,于是??
x0 ? x ? x2

|R2(0.3367)|=|sin0.3367-L2(0.3367)|? 1 ≤ × 0.828×0.0167× 0.033× 0.0233? 6 <0.178× 10-6?

第6章 插值法

6.3 均差与牛顿插值
6.3.1 均差及其性质?
前面介绍的拉格朗日插值多项式,其形式具有对称性,
且便于编程计算。但当插值节点增加时全部插值基函数

lk(x)(k=0, 1, ?, n)均要随之变化,整个公式也将发生变化,并
且被插函数的表格形式也使得插值余项难以估计,这在实际 计算中是很不方便的。

第6章 插值法

本节介绍的牛顿插值克服了这些缺点,当增加插值节点
时,只需在原有的基础上增加部分计算工作量,且可用于被

插函数由表格形式给出时的余项估计。?
为了给出均差的概念,把插值多项式表示为以下便于计 算的形式:?? Nn(x)=a0+a1(x-x0)+a2(x-x0)(x-x1)+?? +an(x-x0)(x-x1)?(x-xn-1) (6.16)

第6章 插值法

其中a0, a1, ?, an为待定常数,可由插值条件??
Nn(xi)=yi def fi (i=0, 1, ?, n)

(6.17)
确定。?

当x=x0时,Nn(x0)=a0=f0。?

第6章 插值法

当x=x1时,Nn(x1)=a0+a1(x1-x0)=f1,推得
??

f 2 ? f 0 f1 ? f 0 ? a1= x2 ? x0 x1 ? x0 x2 ? x1

第6章 插值法

依此递推可得到a3, ?, an。为写出系数ak的一般表达式,
先引进均差定义。? 定义6.3 给定函数f(x)在互异节点x0<x1<?<xn处的函数值 分别为f(x0),f(x1), ?,f(xn),称??

f[xi, xj]=

f ( xi ) ? f ( x j ) xi ? x j
(i≠ j)

??为函数f(x)关于点xi, xj的一阶均差。

第6章 插值法

称??
f[xi, xj, xk]=

f [ xi , x j ] ? f [ x j , xi ] xi ? xk
( i ≠j ≠ k)

??为函数f(x)关于点xi, xj, xk的二阶均差。? 一般地,称?? f [ x0 , x1 ,?, xk ?1 ] ? f [ x1 , x2 ,? xk ] f[x0, x1, ?, xk]= x0 ? xk (6.18)

第6章 插值法

为函数f(x)关于点x0, x1, ?, xk的k阶均差, 即f(x)的k-1阶均差的
均差称为k阶均差(均差也称为差商)。?因为?? f ( xi ) ? f ( x j ) f′(xj)= lim xi ? x j xi ? x j 所以??

f′(xj)=

xi ? x j

lim f[xi, xj]??

可见,均差是微商的离散形式。?

均差有以下一些基本性质。

第6章 插值法

性质1

k阶均差可表为函数值f(x0), f(x1),?, f(xk)的
k

线性组合,即??

f ( xi ) f[x0, x1, ?, xk]= ? i ? 0 ? k ?1 ( xi )

? ?1 ( xi ) ? 其中 ?n

j ?0, j ?i

? ( xi ? x j ).

k

第6章 插值法

这个性质可对阶数用数学归纳法加以证明。该性质也表
明均差与节点的排列次序无关,称为均差的对称性, 即??

f[x0, x1, ?, xk]=f[x1, x0, x2, ?, xk]=?=f[x1, ?, xk, x0]?
? 性质2 由性质1及式(6.18)可得??

f[x0, x1, ?, xk]=

f [ x1 , x2 ,?, xk ] ? f [ x0 , x1 ,?, xk ?1 ] xk ? x0

第6章 插值法

性质3

若f(x)在[a, b]上存在n阶导数,且节点x0,

x1, ?, xn∈[a, b], 则n阶均差与n阶导数之间有以下关系:
(n) f (? ) , ξ∈(a,b) ??f[x0, x1, ?, xn]= n!

(6.19)

第6章 插值法

6.3.2 牛顿插值公式?
根据均差定义,把x看成[a, b]上一点,可得

f(x)=f(x0)+f[x, x0](x-x0)?
f[x, x0]=f[x0, x1]+f[x, x0, x1](x-x1)?

? ??f[x, x0, ?, xn-1]=f[x0, x1, ?, xn]
+f[x, x0, x1, ?, xn](x-xn)

第6章 插值法

只要把后一式代入前一式,就得到
f(x)=f(x0)+f[x0, x1](x-x0)+f[x0, x1, x2](x-x0)(x-x1)+??

+f[x0, x1, ?, xn](x-x0)(x-x1)?(x-xn-1)?
+f[x, x0, x1, ?, xn]ωn+1(x)=Nn(x)+Rn(x)

其中
Nn(x)=f(x0)+f[x0, x1](x-x0)+f[x0, x1, x2](x-x0)(x-x1)+?? +f[x0, x1, ?, xn](x-x0)(x-x1)?(x-xn-1?) ?Rn(x)=f(x)-Nn(x)=f[x, x0, x1, ?, xn]ωn+1(x) (6.20) (6.21)

第6章 插值法

且ωn+1(x)由式(6.8)定义。?
由Rn(xi)=0(i=0,1,?,n)可知,Nn(x)为满足插值条件(6.17) 的n次插值多项式。 通常称Nn(x)为n次牛顿插值多项式,Rn(x)为牛顿型插值 余项。? 实际计算时,往往借助于均差表(表6.1)。从表中可以看 出,牛顿插值多项式的系数ak就是表中第一条斜线上对应的

各阶均差。?

第6章 插值法

表6.1 均 差 表?

第6章 插值法

另外,根据插值多项式的存在唯一性定理6.1可知
Nn(x)≡Ln(x)??

因此,当f(x)在[a, b]上有n+1阶导数时,有??
Rn(x)=f[x, x0, x1, ?, xn]ωn+1(x)=

f ( n?1) (? ) ωn+1(x) (n ? 1)! (6.22)

第6章 插值法

所以,对列表函数或高阶导数不存在的函数,其余项可
由牛顿型插值余项给出。?

另外,由式(6.22)可得??

f ( n?1) (? ) f[x, x0, x1, ?, xn]= ,ξ∈(a,b) (n ? 1)! ??从而可得性质3,即?
(n) f (? ) f[x0, x1, ?, xn]= (n ? 1)!

,ξ∈(a,b)

第6章 插值法

记Nk(x)为具有节点x0, x1, ?, xk的牛顿插值多项式,则具
有节点x0, x1, ?,xk, xk+1的牛顿插值多项式Nk+1(x)可表示为

??Nk+1(x)=Nk(x)+f[x0, x1, ?, xk+1](x-x0)(x-x1)?(x-xk)
这说明增加一个新节点xk+1,只需在Nk(x)的基础上增加

计算??
f[x0, x1, ?, xk+1](x-x0)(x-x1)?(x-xk)

??即可。这种递推性给应用带来了很大的方便。?

第6章 插值法

例6.4

设f(x)=

x ,并已知f(2.0)=1.414 214,

f(2.1)=1.449 138,f(2.2)=?1.483 240.? 试用二次牛顿插值公式N2(x)求f(2.15)的*似值,并估计 误差。? 解 先构造均差表如下:?

第6章 插值法

于是由牛顿插值公式,有??
N2(x)=1.414 214+0.349 24×(x-2.0)-0.041 10×(x-2.0)(x-2.1)

?取x=2.15得N2(2.15)=1.466 292。?
由于f(x)在区间[2.0,2.2]上充分光滑,因此可以利用误差

估计公式(6.12)。 注意到?? 3 -4 f(x)= , | f ( x )|=0.066 29 , | ω (2.15)|=3.75 × 10 max 3 8 x 2 x 2.0? x? 2.2 ?

第6章 插值法

从而得出??
|R2(x)|=|f(x)-N2(x)|≤ M 3|ω3(x)|=0.4143× 10-5? 3! ?? 又f(2.15)的真值为1.466 288,可见,利用二次牛顿插值 公式得到的结果其精度是比较高的。 ?

第6章 插值法

6.4 差分与等距节点插值*
6.4.1 差分的定义及性质?
定义6.4 设a=x0<x1<?<xn=b, yi=f(xi)为等距节点xi=x0+ih(i=0,

b?a 1, ?, n)上的函数值,其中h= 称为步长,则?? n
Δyi=yi+1-yi (i=0, 1, ?, n) (6.23)

第6章 插值法

称为f(x)在xi处以h为步长的一阶向前差分。??
?Δ2yi=Δyi+1-Δ? yi=yi+2-2yi+1+yi (i=0, 1, ?, n) (6.24)

??称为f(x)在xi处以h为步长的二阶向前差分。一般地,? ??Δmyi=Δm-1yi+1-Δm-1yi (i=0, 1, ?, n) (6.25)

第6章 插值法

称为f(x)在xi处以h为步长的m阶向前差分。?
类似地,可定义f(x)在xi处以h为步长的m阶向后差分为

????? ? m?1 yi ? ? m?1 yi ?1 (i=n, n-1, ?, 1) ?m yi=?
(6.26)

差分有如下一些性质:?
性质1 各阶差分可表示为函数值的线性组合,即?? ?n? ?n? n k ?Δ yi=yn+i- ? ? yn+i-1+?+(-1) ? ? yn+i-k+?+(-1) nyi ?k ? ?1 ?

第6章 插值法

其中??

?n? n! n(n ? 1)?(n ? k ? 1) ? ? ?? ? k! ? k ? k!(n ? k )! 该性质的证明请读者自行完成。
性质2 ????? 性质3 两种差分之间的关系??

? m yk ? ?m yk ?m
差分与均差满足下述关系

n n ? y ? yn 0 ??f[x0, x1, ?, xn]= ? n n!h n!h n

(6.27)

第6章 插值法

证明 利用归纳法证明前一式如下(后一式由性质2即得):
? 当n=1时,有f[x0, x1]= ?y0 ,即结论成立。? h 设n=k-1时结论成立,即有??

?k ?1 y0 f[x0, x1, ?, xk-1]= (k ? 1)!h k ?1 ?k ?1 y1 f[x1, x2, ?, xk]= (k ? 1)!h k ?1

第6章 插值法

则当n=k时,有??
f[x0, x1, ?, xk]= f [ x1 , x2 ,?, xk ] ? f [ x0 , x1 ,?, xk ?1 ] xk ? x0

?k ?1 y1 ? ?k ?1 y0 ?k y0 ? ? k ?1 (k ? 1)!h · kh k!h k

故式(6.27)成立。

□?

第6章 插值法

性质4

差分与导数满足关系??
ξ∈(x0, xn) (6.28)

?Δny0=hnf (n)?(ξ)

?? 证明 将式(6.19)与式(6.27)联立,即得?? n ? y0 f (n)(ξ)= ξ∈(a, b) n h ??
故式(6.28)成立。□?

第6章 插值法

6.4.2 等距节点插值多项式及其余项?
对于等距节点xi=x0+ih(i=0, 1, ?, n),利用式(6.27)在牛 顿插值多项式(6.20)中将均差用向前差分来表示,就得到n次 牛顿前差插值多项式(简称前插公式)
2 ? y0 ?y 0 Nn(x)=f(x0)+ (x-x0)+ 2 2 ! h h n ? y0 (x-x )(x-x )?(x-x ) (x-x0)(x-x1)+?+ 0 1 n-1 n n!h

第6章 插值法

令x=x0+th(0≤ t≤n),则??
x-xi=(t-i)h ?于是牛顿前插公式又可写成?? (i=0, 1, ?, n)

t (t ? 1) Nn(x0+th)=f(x0)+tΔy0+ ?Δ2y0+? 2! t (t ? 1)?(t ? n ? 1) n + ?Δ y0 n!
(6.29)

第6章 插值法

余项公式(6.21)化为?? h n ?1 Rn(x)= t(t-1)?(t-n)f(n+1)(ξ) ξ∈(a, b) ( n ? 1)! (6.30)
?? 类似地,把插值节点按xn, xn-1, ?, x0的次序排列,用牛

顿插值多项式(6.20)得
?Nn(x)=f(xn)+f[xn, xn-1](x-xn)+f[xn, xn-1, xn-2](x-xn)(x-xn-1)? +?+f[xn, xn-1, ?, x0](x-xn)(x-xn-1)?(x-x1)

第6章 插值法

用式(6.27)将上式中的均差用向后差分来表示,即??
k ? yn f[xn, xn-1, ?, xn-k]= k=1, 2, ?, n k k!h ??再令x=xn+th(-n≤t≤0),则x-xn-k=(t+k)h。 由此得n次牛顿后

差插值多项式(简称后插公式)为

t (t ? 1) 2 t (t ? 1)?(t ? n ? 1) n N n ( xn ? th) ? yn ? t?yn ? ? yn ? ? ? ? yn 2! n! t (t ? 1) 2 t (t ? 1)?(t ? n ? 1) n ? yn ? t?yn ?1 ? ? yn ? 2 ? ? ? ? y0 2! n!
(6.31)

第6章 插值法

其余项??

h n ?1 Rn(x)= t(t+1)?(t+n)f (n+1)(ξ) ξ∈(a, b) ( n ? 1)! (6.32)

?? 计算差分可按差分表(表6.2)进行。?

第6章 插值法

表6.2 差 分 表

第6章 插值法

显而易见,表6.2中每一个需要计算的差分值分别等于其
左侧的数减去左上侧的数之差,且前插公式(6.29)中的各阶 差分就是表中下划线的各数,而后插公式(6.31)中的各阶差 分就是表中最后一行的相应各数。? 通常求插值节点开头附*的函数值时使用牛顿前插公式,

求插值节点末尾附*的函数值时用牛顿后插公式。 如果用相
同节点进行插值,则向前、向后两种公式只是形式上的差别, 其计算结果是相同的。如?

第6章 插值法

例6.5

以步长h=0.1给出y=f(x)=

x 从x=2.0到2.4的值

(精确到10-4),试用3次牛顿前插公式和后插公式求 2.15 的

*似值并估计误差。?
解 先作出差分表(表6.3).?

第6章 插值法 表6.3 例6.5差分表

第6章 插值法

此处给出5个插值节点,若要计算 2.05 的值可用牛顿4
次前插公式,计算 2.35 可用4次后插公式。现只需用3次插

值公式,所以取x0=2.0,x1=2.1,x2=2.2,x3=2.3。?
用前插公式(6.29),此时t=

x ? x0 2.15 ? 2.0 =1.5,代 ? h 0.1

入得

2.15 ? N 3 (2.15) 1.5 ? (1.5 ? 1) ? 1.4142 ? 1.5 ? 0.0349 ? ? (?0.0008) 2 1.5 ? (1.5 ? 1) ? (1.5 ? 2) ? ? 0.0001 6 ? 1.4662

第6章 插值法

15 ,所以?? 16 x 3 x 15 (4) M4= max |f (x)|≤ =0.0829?? 2.0? x ? 2.3 16 ? 8 2
因为f (4)(x)=故余项
4 h |R3(x)|= |t(t-1)(t-2)(t-3)|·|f (4)(ξ)| 4! 4 h M 4 |t(t-1)(t-2)(t-3)|=0.1942×10-6? ≤ 4!

第6章 插值法

用后插公式(6.31),此时t= x ? x3 ? 2.15 ? 2.3 =-1.5, h 0.1 代入得

2.15 ≈N3(2.15)?
(?1.5) ? (?1.5 ? 1) ×(-0.0007) 2 ? + (?1.5) ? (?1.5 ? 1) ? (?1.5 ? 2) × 0.0001? 2 =1.4662
=1.5166+(-1.5)× 0.0334+

第6章 插值法

6.5 ?Hermite插值
6.5.1 完全Hermite插值问题?
先以在两个点上给定函数值和导数值构造三次插值函数 为例,来说明Hermite插值过程。 此时Hermite插值问题是:

设给定x0,x1和相应的函数值y0,y1以及导数值m0,m1,
要求构造插值多项式H(x),使之满足以下条件: ?

第6章 插值法

(1) H(x)是不超过3次的多项式; ?
(2) H(xi)=yi,H′(xi)=mi, i=0,1。 (6.33)? 仍采用插值基函数的方法,在每个节点上构造两个插值 基函数。设点x0对应的插值基函数分别为h0(x)和H0(x),点x1 对应的插值基函数分别为h1(x)和H1(x),它们的取值情况如下:

?

第6章 插值法

因为在点x1, h0(x)除函数值为零外导数值也为零,所以
它必有因子(x-x1)2。 另外,h0(x)最多是一个3次多项式,因此

可设??

? x ? x1 ? h0(x)=(a+b(x-x0)) ? ?x ?x ? ? ? 0 1? 利用h0(x0)=1得a=1。为确定b,对h0(x)求导数,再由h0′(x0)=0 2 得b=,于是得 x0 ? x1 2 x ? x0 ?? x ? x1 ? h0(x)= ? ? ?1 ? 2 x ? x ? ?? ?x ?x ? ? ? 1 0 ?? 0 1? (6.34)

2

第6章 插值法

同理可得??

? x ? x1 ?? x ? x0 ? h1(x)= ? ?1 ? 2 x ? x ? ?? ?x ?x ? ? ? 0 1 ?? 1 0?

(6.35)

第6章 插值法

下面构造H0(x)。因H0(x)在点x0,x1的函数值为零,在点
x1的导数值为零,故H0(x)有因子(x-x1)2(x-x0)。此外,H0(x)是

不超过3次的多项式,所以可设 2 ? x ? x1 ? H0(x)=a(x-x0) ? ?x ?x ? ? ? 0 1? ??为确定a,对H0(x)求导数,再利用条件H0′(x0)=1推得a=1,
所以?

x ? x1 ? ?H0(x)=(x-x0) ? ? ?x ?x ? ? ? 0 1?

2

(6.36)

第6章 插值法

同理

? x ? x0 ? H1(x)=(x-x1) ? ?x ?x ? ? ? 1 0?

2

(6.37) ??这4个函数的图形见图6.4。?

利用这4个插值基函数可直接写出Hermite插值多项式 ?H(x)=y0h0(x)+y1h1(x)+m0H0(x)+m1H1(x) ??容易验证H(x)满足插值条件式(6.33)。 (6.38)

第6章 插值法

图 6.4 ?Hermite插值基函数

第6章 插值法

定理6.3 设H(x)是过点x0,x1的Hermite插值多项式,
f(x)∈C3[a, b], 且f (4)(x)在[a,b]内存在,其中[a, b]是

包含x0, x1的任一区间,则对任意给定的x∈[a,b],总存
在一点ξ(依赖于x)使??

R(x)=f(x)-H(x)=

f ( 4) (? ) 4!

( x- x0 ) 2 ( x- x1 ) 2

a<ξ<b
(6.39)

第6章 插值法

证明 对任一固定点x(≠x0, x1)引进辅助函数?? R( x) 2(t-x )2 φ(t)=f(t)-H(t)( t x ) 0 1 2 2 ( x ? x0 ) ( x ? x1 ) ??显然φ(t)具有4阶连续导数,并且有x0,x1和x三个零点,
其中x0,x1是二重零点。 根据罗尔定理φ′(t)在x0,x1和x构成 的两个子区间上至少各有一个零点,设为η0,η1,这样φ′(t)共 有四个零点,它们是x0,η0,η1,x1。 反复利用罗尔定理可推出φ(4)(t)在[a, b]内至少有一个

零点,设为ξ,对φ(t)求4阶导数,并注意到H(t)是一个3次多
项式,所以 ?? φ
(4)(t)=f(4)(t)-4!

R( x) ( x ? x0 ) 2 ( x ? x1 ) 2

第6章 插值法

把ξ代入,再利用φ(4)(ξ)=0,即可求出Hermite插值的余项为?
? ??
( 4) f (? ) (x-x )2(x-x )2 a<ξ<b R(x)= 0 1 4!



一般地,若给定n+1个节点和相应的函数值及导数值如

下:?

第6章 插值法

则可以构造满足以下条件的2n+1次Hermite插值多项式
H(x):?

(1) H(x)是不超过2n+1次的多项式; ?
(2) H(xi)=yi,H′(xi)=mi,i=0,1,?,n。 (6.40)?

首先在这n+1个点上构造2n+2个插值基函数??

???1 ( xi ) ?2 ?n hi(x)= ? ? ?1 ? ?? ( x ) ( x ? xi ) ? ?li ( x) ? ? n ?1 i Hi(x)= li2 (x)(x-xi) i=0, 1, ?, n
?

第6章 插值法

其中,ωn+1(x)见式(6.8), li(x)为拉格朗日插值基函数。
如此便得2n+1次的Hermite插值多项式?? H(x)=

i ?0

?

n

(yihi(x)+miHi(x)) (6.41)

第6章 插值法

下面证明,满足条件式(6.40)的Hermite插值多项式(6.41)
是唯一存在的。 假设另有一个次数不高于2n+1的多项式P2n+1(x)满足条件 式(6.40),? ψ(x)=H2n+1(x)-P2n+1?(x)

?是次数不高于2n+1的多项式,且以节点xi(i=0, 1, 2, ?, n)为
二重零点,即ψ(x)至少有2n+2个零点, 从而必有ψ(x)≡0,即 H2n+1(x)≡P2n+1(x)。? 仿照拉格朗日插值余项的讨论方法,可以得出Hermite? 插值多项式的余项。?

第6章 插值法

定理6.4

设H(x)是过点x0,x1,?,xn的2n+1次Hermite

插值多项式, f(x)∈C2n+1[a, b],且f (2n+2)(x)在[a, b]存在,

其中[a, b]是包含x0,x1,?,xn的任一区间,则对任意给
定的x∈[a, b],总存在一点ξ(依赖于x)使??

R(x)=f(x)-H(x)=

f ( 2 n? 2 ) (? ) 2 ? ?n ?1 (2n ? 2)!

( x)

a<ξ<b
(6.42)

第6章 插值法

例6.6 设f(x)=lnx,给定f(1)=0,f(2)=0.693 147,f′(1)=1,
f′(2)=0.5。试用3次Hermite插值多项式H3(x)计算f(1.5)的*似

值。?
解 令x0=1,x1=2,则由式(6.34)~式(6.37)直接得 h0(x)=(2x-1)(2-x)2 h1(x)=(5-2x)(x-1)2? H0(x)=(x-1)(2-x)2 ? H1(x)=(x-2)(x-1)2 ?

第6章 插值法

再用公式(6.38)得3次插值多项式??
H3(x)=0.693 147×(5-2x)(x-1)2+(x-1)(2-x)2+

1 (x-2)(x-1) 2 2

??由此得f(1.5)≈H3(1.5)=0.409 074。?

第6章 插值法

6.5.2

不完全Hermite插值问题?
在带导数的插值问题中,有时插值条件中的导数值个数

少于函数值个数。这时可以牛顿插值多项式或完全Hermite插
值为基础,运用待定系数法求出满足插值条件的多项式。这 里我们通过举例来说明这种方法的基本思路。?

第6章 插值法

例6.7 求满足条件P(xi)=f(xi)(i=0, 1, 2)及P′(x1)=f′(x1)的插
值多项式及其余项表达式。?

解 由给定条件,可确定次数不超过3的插值多项式P(x)。
由于P(x)通过点

?(xi, f(xi))(i=0,1,2),故其形式为
??P(x)=f(x0)+f[x0, x1](x-x0)+f[x0, x1, x2](x-x0)(x-x1)? +A(x-x0)(x-x1)(x-x2)

第6章 插值法

其中A为待定常数,可由条件P′(x1)=f′(x1)确定,计算得?
?

f ?( x1 ) ? f [ x0 , x1 ] ? ( x1 ? x0 ) f [ x0 , x1 , x2 ] A=?? ( x1 ? x0 )( x1 ? x2 )
为了求出余项R(x)=f(x)-P(x)的表达式,可设??
R(x)=f(x)-P(x)=k(x)(x-x0)(x-x1)2(x-x2)

第6章 插值法

其中k(x)为待定函数。构造??
φ(t)=f(t)-P(t)-k(x)(t-x0)(t-x1)2(t-x2)

??显然φ(xi)=0(i=0, 1, 2), 且φ′(x1)=0,φ(x)=0,故φ(t)在(a,b)
内有5个零点(二重根算两个)。反复应用罗尔定理,

得φ (4)(t)在(a, b)内至少存在一个零点ξ,使??
φ(4)(ξ)=f (4)(ξ)-4!k(x)=0

第6章 插值法

于是??

1 (4) k(x)= f (ξ)?? 4!
余项表达式为??

1 f(4)(ξ)(x-x )(x-x )2(x-x ) 0 1 2 4! 其中ξ位于x0, x1, x2和x所界定的范围内。?
R(x)=f(x)-P(x)=

(6.43)

第6章 插值法

6.6 分段低次插值?
6.6.1 高次插值的病态性质?
前面我们根据区间[a, b]上给出的节点作插值多项式 Ln(x)*似f(x),一般总认为Ln(x)的次数越高,*黤(x)的程度越 好,但事实并非如此。这是因为对任意的插值节点,当n→∞ 时, Ln(x)不一定收敛到f(x)。 20世纪初龙格(Runge)就给出了 一个等距节点插值多项式Ln(x)不收敛到f(x)的例子。?

第6章 插值法

1 给定函数f(x)= 2 ,它在区间[-5,5]上的各阶导数 1? x i 都存在, 但在[-5, 5]上取n+1 个等距节点xi=5+10 (i=0, n 1, ?, n)所作的拉格朗日插值多项式??
1 ?n?1 ( x) Ln(x)= ? 2 ? ?1 ( xi ) i ? 0 1 ? xi ( x ? xi )?n
n

第6章 插值法

当n→∞时,只在|x|≤3.63内收敛,而在该区间外是发散的。
? 图6.5和图6.9(参见6.8节例6.13)分别给出了n=4和n=10时, y=L4(x)及y=L10(x)与f(x)=

1 的图形。 1 ? x2

比较这两个图形可以看到,n越大,偏离程度也越大,

1 而且在x=±5附*,y=L10 (x)与f(x)= 偏离很远,例如 2 1? x L10(4.8)=1.804 38,f(4.8)=0.041 60。??

第6章 插值法

图 6.5 龙格现象

第6章 插值法

这说明用高次插值多项式y=Ln(x)*似f(x)的效果并不好,
这种高次插值不准确的现象称为龙格现象。正因为这样,通

常不用高次插值,而用分段低次插值。从本例看到,如果我

1 在节点x=0, ± 1, ± 2, ±3, ± 4, ±5处用折线连 1 ? x2 起来显然比L10(x)*黤(x)好得多。这正是我们下面要讨论的
们把y= 分段低次插值的出发点。

第6章 插值法

6.6.2 分段线性插值?
所谓分段线性插值, 就是通过将插值节点用折线段连接

起来*黤(x)。设在区间[a,b]上,给定n+1个插值节点??
a=x0<x1<?<xn=b? 和相应的函数值y0, y1, ?, yn,求作一个插值函数φ(x), 使其 具有以下性质: ? (1) φ(xi)=yi(i=0, 1, ?, n); ?

(2) φ(x)在每个小区间[xi, xi+1]上是线性函数。?

第6章 插值法

插值函数φ(x)叫做区间[a, b]上对数据(xi, yi)(i=0, 1, ?,
n)的分段线性插值函数。?? 怎样构造具有这种性质的插值函数?就是把前面构造拉 格朗日插值多项式的方法加以推广,先在每个插值节点上构 造分段线性插值基函数,然后再作它们的线性组合。?

分段线性插值基函数的特点是在对应的插值节点上函数
值取1,而在其它插值节点上取0,而且在每个小区间上是线 性函数。 这些基函数在插值节点上的函数值如图6.6所示。?

第6章 插值法

图 6.6 分段线性插值基函数

第6章 插值法
由此可得分段线性插值基函数为??

? x ? x1 , ? l0 ( x) ? ? x0 ? x1 ?0, ?

x0 ? x ? x1 x1 ? x ? xn

? x ? xi ?1 , x ? x ? x i ?1 i ?x ? x ? i i ?1 ? x ? xi ?1 li ( x) ? ? , xi ? x ? xi ?1 ? xi ? xi ?1 ?0, [a, b] - [ xi-1 , xi ?1 ] ? ?

? x ? xi ?1 , xn?1 ? x ? xn ? ln ( x) ? ? xn ? xn?1 ?0, x0 ? x ? xn?1 ?

(i=1,2,…,n-1)

第6章 插值法

最后可直接写出分段线性插值函数的表达式??
φ(x)=
i ?0

?yili(x)
(6.45)??

n

分段线性插值函数的光滑性虽然较差,但从整体来看, 它*黤(x)是较好的。? 分段线性插值多项式的余项可以通过线性插值多项式的 余项加以估计。?

第6章 插值法

定理6.5

设给定节点??
a=x0<x1<?<xn=b

??和相应的函数值yi=f(xi)(i=0, 1, ?, n)。
f(x)∈C1[a, b],f″(x)在[a, b]上存在, φ(x)是由式(6.45)

确定的分段线性插值函数,则?? h2 |R(x)|=|f(x)-φ(x)|≤ M 8
(6.46) ??其中h= max |xi+1-xi|,M= max |f″(x)|。?
0?i ? n ?1 a ? x ?b

第6章 插值法

证明 根据式(6.14),在每个小区间[xi, xi+1](i=0, 1, ?,
n-1)上有??

( xi ?1 ? xi ) 2 |R(x)|≤ Ri(x) max |f″(x)| def xi ? x ? xi ?1 8 ??因此,在整个区间[a, b]上有??
|R(x)|≤ max |Ri(x)|≤
0?i ? n ?1

定理得证。

□?

2 hM ? 8

第6章 插值法

例6.8

已知函数y=f(x)在点x=-1, 0, 3, 7上的函数值分别

为2, 0, 4, 7,试用分段线性插值法计算f(2)的*似值。? 解 令节点x0=-1,x1=0,x2=3,x3=7, 则由式(6.44)得分段 线性插值基函数为 ??

?? x x ?[?1,0] l0 ( x) ? ? , ?0 x ? (0,7]
x ? [?1,0] x ? (0,3] , x ? (3,7]

? ?0 ?x ? l2 ( x ) ? ? ?3 ?x ? 7 ? ? ?4

? x ? 1 x ? [?1,0] ? ?x ? 3 l1 ( x) ? ? x ? (0,3] ? ?3 x ? (3,7] ? ?0
?0 ? l3 ( x) ? ? x ? 3 ? ? 4 x ? [ ?1,3] x ? (3,7]

第6章 插值法

所以分段线性插值函数??

φ(x)=

i ?0

?

3

? ?? 2 x ?4 x ? li ( x) yi ? ? ?3 ?3 x ? 7 ? ? 4

x ? [?1,0] x ? (0,3] x ? (3,7]

8 故f(2)≈φ(2)= 。? 3

第6章 插值法

6.6.3 分段三次Hermite插值*?
分段线性插值函数的导数是间断的,若在节点上除已知

函数值外还给出导数值,这样就可以构造一个导数连续的分
段插值函数,即一种光滑的分段插值。?

给定[a, b]上的一串分点??
a=x0<x1<?<xn=b

第6章 插值法

及f(x)在分点上的函数值f(xi)=yi(i=0, 1, ?, n)和导数值
f′(xi)=mi(i=0, 1, ?, n),作一个分段三次Hermite插值函数H(x),

使其满足: ?
(1) H(x)在每个小区间[xi, xi+1]上是3次多项式; ?

(2) H(xi)=yi, H′(xi)=mi,i=0, 1,?, n。?

第6章 插值法

根据前面的结果不难作出各分点上的插值基函数: ?
2 ?? x ? x0 ?? x ? x1 ? ? ? ? 1? 2 , x0 ? x ? x1 ?? ? ? ? ? h0(x)= ?? x1 ? x0 ?? x0 ? x1 ? ? x1 ? x ? xn ?0, 2 ?? x ? xi ?? x ? xi ?1 ? ? ? ? 1? 2 , xi ?1 ? x ? xi ?? ? ? ? ? hi ( x) ? ?? xi ?1 xi ?? xi ? xi ?1 ? ? x1 ? x ? xn ?0,

第6章 插值法

2 ?? x ? xi ?? x ? xi ?1 ? ?? ?1 ? 2 x ? x ? ?? ?x ?x ? ? , xi ?1 ? x ? xi i ?1 i ?? i i ?1 ? ?? 2 ? x ? xi ?? x ? xi ?1 ? ?? hi ( x) ? ?? ?1 ? 2 x ? x ? ?? ?x ?x ? ? , xi ? x ? xi ?1 i ?1 i ?? i i ?1 ? ?? ?0, [a, b] ? [ xi ?1 , xi ?1 ] ? ? ?

(i=1,2,…,n-1)

第6章 插值法

2 ?? x ? xn ?? x ? xn ?1 ? ? ? ? 1? 2 , xn ?1 ? x ? xn ?? ? ? ? ? hn ( x) ? ?? xn ?1 ? xn ?? xn ? xn ?1 ? ? x0 ? x ? xn ?1 ?0,

2 ? ? x ? x1 ? ? , x0 ? x ? x1 ?? x ? x0 ?? ? ? H 0 ( x) ? ? ? x0 ? x1 ? ? x1 ? x ? xn ?0,

第6章 插值法
2 ? ? x ? xi ?1 ? ?? x ? xi ?? ?x ?x ? ? , xi ?1 ? x ? xi ? i i ?1 ? ? 2 ? ? x ? xi ?1 ? ? H i ( x) ? ?? x ? xi ?? ?x ?x ? ? , xi ? x ? xi ?1 ? i i ?1 ? ? ?0, [a, b] - [ xi -1 , xi ?1 ] ? ? ?
2 ? ? x ? xn ?1 ? ? , xn ?1 ? x ? xn ?? x ? xn ?? ? ? H n ( x) ? ? ? xn ? xn ?1 ? ? x0 ? x ? xn ?1 ?0,

(i=1,2,…,n-1)

第6章 插值法

因此分段三次Hermite插值函数为??
H(x)=
i ?0

?

n

yihi(x)+miHi(x)]

(6.47)

定理6.6 设H(x)是a=x0<x1<…<xn=b上的分段三次Hermite插值 函数,f(x)∈C3[a, b],且f (4)(x)在[a, b]存在,则对任意 给定的x∈[a, b],总存在一点ξ∈(a, b),使
4 h ??|R(x)|=|f(x)-H(x)|≤ M4 384

第6章 插值法

其中h= max |xi+1-xi|,M4= max a ? x ?b
0?i ? n ?1

|f (4)(x)|。?

证明 根据式(6.39), 在每个小区间[xi, xi+1](i=0, 1, ?,

n-1)上有?
( 4) f (?i ) R(x)= 4!

(x-xi)2(x-xi+1)2
4 ? x ? x ? )2|= i ?1 i

xi<ξi<xi+1?

由于? ??

xi ? x ? xi ?1

max |(x-xi)2(x-xi+1

16

第6章 插值法

故?
?
xi ? x ? xi ?1

max |R(x)|≤

? xi ?1 ? xi ?4
384

xi ? x ? xi ?1

max |f (4)(x)|

??
因此在整个区间[a,b]上有

h4 |R(x)|≤ M4 . 384

□?

第6章 插值法

6.7 三次样条插值
6.7.1 三次样条插值函数的定义?
定义6.5 设在区间[a, b]上取n+1个节点??

a=x0<x1<?<xn=b
若函数S(x)满足条件: ? (1) 在整个区间[a, b]上具有二阶连续导数; ? (2) 在每个小区间[xi-1, xi](i=1, 2, ?, n)上是三次多项式; ?

(3) S(xi)=yi,i=0, 1, ?, n。 (插值条件)

(6.48)? ??

第6章 插值法

则称S(x)为f(x)的三次样条插值函数。?
要确定S(x),在每个小区间上需确定4个待定系数,一共

有n个小区间,故应确定4n个系数。根据S(x)在[a, b]上
具有二阶导数,在节点处应满足3n-3个连续性条件:??

S(xi-0)=S(xi+0)?
S′(xi-0)=S′(xi+0)? S″(xi-0)=S″(xi+0) (i=1, ?, n-1) (连接条件)

第6章 插值法

再加上S(x)满足的插值条件式(6.48), 共有4n-2个条件,
因此还需要两个条件才能确定S(x).? 通常可在区间[a, b]

的端点上补充两个边界条件。常用的边界条件有?
(1) 第一类边界条件: 给定两端点处的一阶导数值,记 为?? S′(x0)=m0, S′(xn)=mn (6.49)

第6章 插值法

(2)
记为??

第二类边界条件: 给定两端点处的二阶导数值,

S″(x0)=M0, S″(xn)=Mn
??特别地,称?? S″(x0)=S″(xn)=0

(6.50)

(6.51)

第6章 插值法

(3) 第三类边界条件(周期性边界条件): 当f(x)是以xn-x0
为周期的周期函数时,则要求S(x)也是周期函数,

此时边界条件应满足: ??
S(x0+0)=S(xn-0)?

S′(x0+0)=S′(xn-0)?
S″(x0+0)=S″(xn-0)

第6章 插值法

例6.9 求满足条件f(-1)=-1, f(0)=0, f(1)=1且f′(-1)=0, f′(1)=1的三次样条插值函数S(x)。?

解 区间[-1, 1]分成了两个子区间[-1, 0]和[0, 1],
即n=2。设??

?a0 ? a1 x ? a2 x 2 ? a3 x 3 S(x)= ? 2 3 b ? b x ? b x ? b x ? 0 1 2 3

x ?[?1,0] x ?[0,1]

第6章 插值法

则由插值条件S(xi)=yi(i=0,1,2)得??

?a0 ? a1 ? a2 ? a3 ? ?1 (A) ?a ? 0 ?b ? b ? b ? b ? 1 ? 0 1 2 3

第6章 插值法

而??
S′(x)=

?a1 ? 2a2 x ? 3a3 x 2 ? 2 b ? 2 b x ? 3 b x ?1 2 3
?2a2 ? 6a3 x ? ?2b2 ? 6b3 x

x ? [?1,0] x ? (0,1]

S″(x)=

x ? [?1,0] x ? (0,1]

第6章 插值法

所以由连接条件S(0-0)=S(0+0),S′(0-0)=S′(0+0)及S″(00)=S″(0+0)得 ?? ??

?a0 ? b0 (B) ? ?a1 ? b1 ?a ? b ? 2 2

再由边界条件S′(-1)=f′(-1)=0及S′(1)=f′(1)=-1得??

(C) ?a1 ? 2a2 ? 3a3 ? 0 ? ?b1 ? 2b2 ? 3b3 ? ?1

第6章 插值法

最后联立求解(A)、(B)、(C)得
? a0=0? a1=7/4? a2=1/2? a3=-1/4 和 b0=0? b1=7/4?

b2=1/2?
b3=-5/4

第6章 插值法

从而得三次样条插值函数??

?1 3 2 ( ? x ? 2 x ? 7 x) x ? [?1,0] ?4 S(x)=?? ? ? 1 (?5 x 3 ? 2 x 2 ? 7 x) x ? (0,1] ?4
这种解法即为待定系数法。一般情况下,采用待定系数 法需要解一个4n阶线性方程组,当n较大时,运算量相当大, 因而不适合于进行数值计算。

第6章 插值法

6.7.2 三次样条插值函数的构造?
构造三次样条插值函数,就是要写出它在子区间[xi-1, xi](i=1, 2, ?, n)上的表达式,记为Si(x)(i=1, 2, ?, n)。 下面 我们先用节点处的一阶导数作为参数来说明三次样条插值函

数的构造方法。?

第6章 插值法

记节点处的一阶导数值为S′(xi)=mi(i=1, 2, ?, n)。若已知
mi,则S(x)在[xi-1, xi](i=1, 2, ?, n)上就是满足条件??

?S ( xi ?1 ) ? yi ?1 ? ?S ?( xi ?1 ) ? mi ?1

S ( xi ) ? yi S ?( xi ) ? mi

(i=1,2,…,n)

(i=1, 2, ?, n)

第6章 插值法

的三次Hermite插值多项式。 构造以节点处一阶导数表示的
三次样条插值函数可分为以下三步: ?

第一步,根据S(x),S′(x)在内节点的连续性及插值条件,
运用[xi-1,xi]上的两点三次Hermite插值多项式,写出S(x)用 mi(i=0, 1, ?, n)表示的形式.? 第二步,利用S″(x)在内节点xi(i=1, 2, ?, n-1)的连续性及 边界条件,导出含mi(i=0, 1, ?, n)的n+1阶线性方程组.?

第6章 插值法

第三步,求解含mi(i=0, 1, ?, n)的n+1阶线性方程组,将
得到的mi代入[xi-1, xi]上的两点三次Hermite插值多项式,

就得到以节点处一阶导数表示的三次样条插值函数.? ?
具体做法如下.?

第6章 插值法

由式(6.38)可知??
Si(x)=

? ? x ? xi ?1 ?? x ? xi ? x ? xi ?? x ? xi ?1 ? ? ?1 ? 2 x ? x ? ?? ?x ?x ? ? yi ?1 ? ? ?1 ? 2 x ? x ? ?? ?x ?x ? ? yi ? ? i i ?1 ?? i ?1 i ? i ?1 i ?? i i ?1 ? ? x ? xi ? ? x ? xi ?1 ? ? ? x ? xi ?? ?x ?x ? ? mi ?1 ? ? x ? xi ?? ?x ?x ? ? mi ? i ?1 i ? ? i i ?1 ?
2 2

2

2

第6章 插值法

记hi=xi-xi-1,则上式可写为

Si ( x ) ?

? x ? xi ? ?hi ? 2? x ? xi ?1 ??
2

h ? h
2 i

3 i

yi ?1 ?

? x ? xi ?1 ? ?hi ? 2? xi ? x ??
2

h h
2 i

3 i

yi

? x ? xi ?2 ? x ? xi ?1 ?

mi ?1 ?

? x ? xi ?1 ?2 ? x ? xi ?

mi

(6.52)

第6章 插值法

其中x∈[xi-1, xi](i=1, 2, ?, n)。?
为了确定mi,需要用到S(x)的二阶导数在内节点连续的 条件,由式(6.52)可得S(x)在[xi-1, xi]上的二阶导数??

6 x ? 2 xi ?1 ? 4 xi 6 x ? 4 xi ?1 ? 2 xi Si??( x) ? mi ?1 ? mi 2 2 hi hi 6? xi ?1 ? xi ? 2 x ? ? ? yi ? yi ?1 ? 3 hi x ? [ xi ?1 , xi ]

(6.53)

第6章 插值法

同理可得S(x)在 [xi, xi+1]上的二阶导数??

Si?? ?1 ( x ) ?

6? xi ? xi ?1 ? 2 x ? ? ? yi ?1 ? yi ? 3 hi ?1

6 x ? 2 xi ? 4 xi ?1 6 x ? 4 xi ? 2 xi ?1 mi ? mi ?1 2 2 hi ?1 hi ?1 x ? [ xi , xi ?1 ]

(6.54)

第6章 插值法

从而有??

2 4 6 ? ?? S ? xi ? 0 ? ? mi ?1 ? mi ? 2 ? yi ? yi ?1 ? ? hi hi hi ? ? ?S ??? xi ? 0 ? ? ? 4 mi ? 2 mi ?1 ? 6 ? yi ?1 ? yi ? 2 ? h h h ? i ?1 i ?1 i ?1

(6.55)

第6章 插值法

由S″(x)在xi处连续的条件S″(xi-0)=S″(xi+0)可得??

?1 1 ? ? yi ?1 ? yi yi ? yi ?1 ? 1 1 ? ? mi ?1 ? 2? ? mi ? mi ?1 ? 3? ? 2 2 ? ? ? ? hi h h h h h ? i ? i ?1 ? i ?1 ? i ?1 i

第6章 插值法

1 1 ? 上式两端同除以 ,得? hi hi ?1

hi ?1 hi mi ?1 ? 2mi ? mi ?1 hi ? hi ?1 hi ? hi ?1 ? hi yi ?1 ? yi hi ?1 yi ? yi ?1 ? ? ? 3? ? · ?h ?h · h ? h ? h h ? i i ?1 ? i ?1 i i ?1 i

(6.56)

第6章 插值法

引入记号
??

? hi ?1 ??i ? hi ? hi ?1 ? ? hi ? ??i ? 1 ? i ? hi ? hi ?1 ? ? ? yi ?1 ? yi yi ? yi ?1 ? ? ?i ? ?i ? f i ? 3? ? ? ? h h ? ? i ?1 i ?

(i=1, 2, ?, n-1) (6.57)

第6章 插值法

则式(6.56)可以写成
??λimi-1+2mi+μimi+1=fi (i=1, 2, ?, n-1)

(6.58)
??这是含有n+1个未知数mi(i=0, 1, ?, n)的n-1阶线性方程组。 要唯一确定n+1个未知数的值,可用前面提到的几种边界条 件。?

第6章 插值法

(1) 对第一类边界条件??
S′(x0)=m0, S′(xn)=mn ??在方程组(6.58)中将已知边界条件代入, 则其可改写为 只含n-1个未知数的线性方程组

? 2 ?1 ? ? ?2 2 ? 2 ? ? ? ? ?n ?2 ? ? ?

? 2

?n ?1

? ?? m1 ? ? f1 ? ?1m0 ? ? ? ?? f2 ? ?? m2 ? ? ? ?? ? ? ? ? ? ? ? ? ?? f n?2 ? n ?2 ?? mn ?2 ? ? ? ?m ? ? f ? ? m ? 2 ? ?? n ?1 ? ? n ?1 n ?1 n ?
(6.59)

第6章 插值法

(2) 对第二类边界条件
??S″(x0)=M0, S″(xn)=Mn ??由式(6.54)得 ?

??( x) ? S1

6? x0 ? x1 ? 2 x ? ? ? y1 ? y0 ? 3 h1 ??由S″(x0)=M0得??

6 x ? 2 x 4 x1 6 x ? 4 x0 ? 2 x1 m0 ? m1 2 2 h1 h1
x∈[x0, x1]

3 h1 2m0 ? m1 ? ? y1 ? y0 ? ? M 0 h1 2

第6章 插值法

同理,由S″(xn)=Mn得?? 3 hn mn ?1 ? 2mn ? ? yn ? yn ?1 ? ? M n ?? hn 2 将上述边界点的方程与内节点的方程组(6.58)联立, 即
可得到关于m0,m1, ?, mn的n+1 阶线性方程组??

?2 1 ?? m0 ? ? ? ? ? ?? ? ?1 2 ?1 ?? m1 ? ? ? ?? m ? ? ?2 2 ? 2 ? ?? 2 ? ? ? ? ? ? ? ?? ? ? ? ? ?n?1 2 ?n ? 1?? mn?1 ? ? ? ? ? ? ? ? ? ? ? ? 1 1 m ? ?? n ? ?

f0 ? ? f1 ? f2 ? ? ? ? f n?1 ? ? fn ? ?
(6.60)

第6章 插值法

其中
??

y1 ? y0 h1 yn ? yn ?1 hn 2 f0 ? 3 ? M 0 , fn ? 3 ? Mn h1 2 hn 2

(6.61)

??(3) 对第三类边界条件

S(x0+0)=S(xn-0),S′(x0+0)=S′(xn-0),S″(x0+0)=S″(xn-0)

第6章 插值法

显然有m0=mn,另由式(6.55)得

?1 1? 1 1 3 3 2? ?h ? h ? ?m0 ? h m1 ? h mn?1 ? h 2 ? y1 ? y0 ? ? h 2 ? yn ? yn?1 ? ? 1 n? 1 n 1 n
将m0=mn代入并记α=

hn ,则有? h1 ? hn

?1 ? ? ? ? 2m0 ? ?m1 ? ?1 ? ? ?mn?1 ? 3? ? h ? yn ? yn?1 ? ? h ? y1 ? y0 ?? ? ? n ? 1

第6章 插值法
上式与式(6.58)联立可得关于m0,m1,?,mn-1的n阶线性方程组
??

?2 ? 0 ? ? ?1 2 ?1 ? ?2 2 ? 2 ? ? ? ? ? ?n?2 ? ? ?

? 2

?n?1

?? m0 ? ? f 0 ? ? ? ? ?? ?? m1 ? ? f1 ? ?? m ? ? f ? ?? 2 ? ? ? 2 ? ? ?? ? ??? ? n?2 ?? mn?2 ? ? f n?2 ? ? ? ? ? ? ? ? ? ? 2 ?? mn ?1 ? ? f n ?1 ? ?

(6.62)

第6章 插值法

?1 ? ? ? ? 其中f0=3 ? ? h ? yn ? yn?1 ? ? h ? y1 ? y0 ?? ? ,y0=yn。? ? n ? 1 方程组(6.59)和方程组(6.60)均是三对角方程组,其系数
矩阵为严格对角占优矩阵,可以证明这种三对角系数矩阵的 行列式不等于零(见4.2.2节),因此方程组有唯一确定的解。 其解法常用3.3.3节介绍的追赶法。?

第6章 插值法

例6.10 用本小节所阐述的思想求解例6.9。?
解1(分析推导) 设S′(0)=m, 则利用6.6.3节的方法构造区

间[-1,0]和[0,1]上的分段三次Hermite插值得?? S(x)= ? x ? x( x ? 1)[(m ? 2) x ? (m ? 1)] x ?[?1,0] ? ? x ? x( x ? 1)[(m ? 3) x ? (1 ? m)] x ?[0,1]
(6.63)

第6章 插值法

其二阶导数??

(m ? 2)(6 x ? 2) ? 2(m ? 1) x ?[?1,0] ? S″(x)=?? ? ?(m ? 3)(6 x ? 2) ? 2(1 ? m) x ? (0,1]
于是由S″(0-0)=S″(0+0)得??
2(m-2)+2(m-1)=-2(m-3)+2(1-m)

第6章 插值法

解之得m=7/4。 代入式(6.63)即得??

?1 ? 3 2 ? x ? 2 x ? 7 x ? x ? [?1,0 ?4 S ( x) ? ? ?1 ?? 5 x 3 ? 2 x 2 ? 7 x ? x ? (0,1] ?4
解2(利用公式) 令m0=f′(-1)=0,m2=f′(1)=-1。在式(6.57) 中取hi=1(i=1, 2),则λ1=μ1=1/2,且

??

? y2 ? y1 y1 ? y0 ? 3 f1 ? 3? ?1 ? ?1 ? ? ?1 ? 1? ? 3 h2 h1 ? 2 ?

第6章 插值法

?

代入式(6.58)即得?? λ1m0+2m1+μ1m2=f1 ?? 解得m1=7/4。最后代入式(6.52)即可得解。
这里就这一方法作一简单介绍。? 设S″(xi)=Mi(i=0, 1, …, n),由定义知,S(x)在子区间[xi-1, xi](i=1, 2, …, n)上是三次多项式,因此,S″(x)在[xi-1, xi] 上是线性函数。由线性插值方法有??

Si??( x) ?

x ? xi x ? xi ?1 M i ?1 ? M i x∈[xi-1, xi] xi ?1 ? xi xi ? xi ?1

第6章 插值法

对上式积分两次且由插值条件Si(xi-1)=yi-1, Si(xi)=yi确定
其中的积分常数,即可得出用Mi表示的三次样条插值函数?

?

Si ( x) ?

? xi ? x ?3
6hi

M i ?1 ?

? x ? xi ?1 ?3
6hi

? ? xi ? x hi2 Mi? ? yi ?1 6 M i ?1 ? ? h ? ? i

? ? x ? xi ?1 hi2 ?? ? yi ? 6 M i ? ? h ? ? i
(6.64)

第6章 插值法

其中x∈[xi-1, xi],hi=xi-xi-1(i=1, 2, ?, n)。
由此可得Si′(x)在[xi-1, xi]上的表达式,类似可得Si+1′(x)

在[xi,xi+1]上的表达式。再利用S′(x)在内节点xi(i=1, 2, ?,n1)处的连续性条件S′(xi-0)=S′(xi+0)可得线性方程组??

λiMi-1+2Mi+μiMi+1=fi (i=1, 2, ?, n-1)

(6.65)

第6章 插值法

式中
??

? hi ? ? ? i hi ? hi ?1 ? ? hi ? ??i ? 1 ? ?i ? hi ? hi ?1 ? ? 6 ? yi ?1 ? yi yi ? yi ?1 ? ? ? ? ? fi ? ? ? ? h ? h h h ? i i ?1 ? i ?1 i ?
(i=1, 2, ?, n-1) (6.66)

第6章 插值法

因式(6.65)是含有n+1个未知参数M0,M1,?,Mn的n-1
阶线性方程组,所以要唯一确定这些参数,还需两个边界条 件。? (1) 对第一类边界条件S′(x0)=m0, S′(xn)=mn, 由式(6.65) 可得??

? ? 6 ? y1 ? y0 ?2 M 0 ? M 1 ? h ? h ? m0 ?def f 0 ? ? 1? 1 ? yn ? yn ?1 ? ?M ? 2 M ? 6 ? ? ? mn ? def f n n ?1 n ? ? ? hn ? hn ? ?

第6章 插值法

将其与方程(6.65)联立即得关于M0,M1,?,Mn的n+1
阶线性方程组

?2 1 ?? M 0 ? ? ? ? ? ?? ? ?1 2 ?1 ?? M 1 ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ?? ?n?1 2 ? n?1 ?? M n ?1 ? ? ? ? ?? M ? ? 1 2 ? ?? n ? ?

f0 ? ? f1 ? ? ? ? f n ?1 ? fn ? ?

第6章 插值法

(2) 对第二类边界条件S″(x0)=M0, S″(xn)=Mn,由式(6.65)


??

2M1+μ1M2=f1-λ1M0?
λn-1Mn-2+2Mn-1=fn-1-μn-1Mn

第6章 插值法

这样便得到只含M1,M2,?,Mn-1的n-1阶线性方程组

? 2 ?1 ? ? ?2 2 ? 2 ? ? ? ? ?n?2 ? ? ?

? 2

?n?1

? ?? M 1 ? ? f1 ? ?1M 0 ? ? ? ?? f2 ? ?? M 2 ? ? ? ?? ? ? ? ? ? ? ? ? ?? ? n?2 ?? M n?2 ? ? f n?2 ? ?M ? ? f ? ? M ? 2 ? ?? n ?1 ? ? n ?1 n ?1 n?

(6.67)

第6章 插值法

最后将求得的M1,M2,?,Mn-1代入式(6.64)即可得到
三次样条函数。

例6.11 已知函数y=f(x)在节点x=0, 1, 2, 3处的值均为0,
求满足边界条件S″(0)=1,S″(3)=0的三次样条插值函数S(x)。 ? 解1(用节点处的一阶导数作为参数) 此时hi=1(i=1, 2, 3)。

由式(6.57)得?? λ1=λ2=1/2, μ1=μ2=1/2, f1=f2=0

第6章 插值法

另由式(6.61)得f0=-1/2, f3=0。代入方程组(6.60)得

?2 ?1 ? ?2 ? ? ? ?

1 2 1 2 1 2 2 1

? m ?? 1? ?? 0 ? ? ? ? ? ? m ? 2? ?? 1 ? ? ? 0 ? 1 ?? m2 ? ? ? 0 ? ? ?m ? ? ? 2? ? ? ? ? 3? 0 1? ? ?

第6章 插值法

7 1 13 1 解之得m0=, m1= ,m2=, m3= 。 90 90 45 45 最后代入式(6.52)得三次样条函数

? 1 x( x ? 1)( ?19 x ? 26) x ? [0,1] ?90 ? ?1 S ( x) ? ? ( x ? 1)( x ? 2)(5 x ? 12) x ? [1,2] ?90 ?1 ( x ? 2)( x ? 3)( ? x ? 4) x ? [2,3] ? ?90

(6.68)

第6章 插值法

解2(用节点处的二阶导数作为参数)

1 1 ?λ1=λ2= , μ1=μ2= , f1=f2=0 2 2 ??而M0=S″(0)=1, M3=S″(3)=0, 代入方程组(6.67)得
??

此时由式(6.66)仍得

?2 1? 1? ? ?? M 1 ? ? ?? ? 2 ? ? 2? ? ? ?? ? ? ? 1 2 ?? M 0 ? ? 0 ? ? ? ?2 ?

第6章 插值法

解得M1=- 4 ,M2= 1 。 15 15 将Mi(i=0, 1, 2, 3)代入式(6.64)即得式(6.68).?
显然,解法2比解法1简单,因为就所需求解的方程组来 说,解1为四阶,而解2则为二阶。? 三次样条插值函数的收敛性与误差估计比较复杂,下面 不加证明地给出一个主要结果.?

第6章 插值法

定理6.7

设f(x)∈C4[a, b],S(x)为满足第一类或第二

类边界条件的三次样条函数, 令h= 0max h ,hi=xi+1-xi(i=0, 1, ?, n-1),则有估计式? ?i ? n ?1 i

max |f (k)(x)-S(k)(x)|≤Ck ?
a ? x ?b

max |f (4)(x)|h4-k? (k=0, 1, 2)
a ? x ?b

第6章 插值法

5 1 3 其中C0= ,C1= ,C2= 。? 384 24 8 这个定理不但给出了三次样条插值函数S(x)的误差估计,
而且说明当插值节点逐渐加密即h→0时,S(x)及其一阶导数
S′(x)和二阶导数S″(x)均分别一致收敛于f(x),f′(x)?及f″(x)。

这种性质要比一般多项式插值优越得多。?

第6章 插值法

6.8 ?MATLAB解法及主要程序
6.8.1 ?MATLAB命令?
1. 一维插值命令interp1??
yi=interp1(x,y,xi) 由数据(x, y)给出插值节点xi上的分段线性插 值结果yi yi=interp1(x,y,xi,method) 用指定方法插值,其中method的取 值及插值方法是:

?linear表示线性插值(默认); nearest表示最*点插值;
cubic表示三次插值; spline表示三次样条插值

第6章 插值法

2. 三次样条插值命令spline?
yi=spline(x,y,xi) 返回用三次样条插值法利用数据(x,y)在 xi处进行插值的 结果, 等同于interp1(x,y,xi,′spline′) 例6.12 假设在一天内,在不同时刻对室外温度的测量

得到的结果如表6.4所示.?

第6章 插值法

表6.4 不同时刻的室外温度值?

第6章 插值法

如果用户想知道其他时刻的室外温度,那么就可以用插
值的方法来获得。首先画出已知数据点(见图6.7),程序如下. ? >> h=1:12;? >> t=[5 8 9 15 25 29 31 30 22 25 27 24];? >> plot(h,t,h,t,′b+′); %画出数据点之间的连线,并用‘+’

标注数据点?
>> xlabel(′hour′);? >> ylabel(′temprature′);?

第6章 插值法

图 6.7 不同时刻室外温度原始数据图

第6章 插值法

用不同插值方法得到h=10.5时刻的温度值: ?
>> interp1(h,t,10.5,′nearest′) ans =? 27? >> interp1(h,t,10.5) %线性插值? %最*点插值?

ans =?
26? >> interp1(h,t,10.5,′cubic′) %分段三次插值?

第6章 插值法

ans =?
26.3000? >> interp1(h,t,10.5,′spline′) ans =? 26.6702? %三次样条插值?

一般地,可以用不同的插值方法对这些已知数据进行插
值运算。?

第6章 插值法

>> h1=1:0.1:12;
>> subplot(2,2,1)?

%每隔0.1 h估计一次温度值?

>> t_nearest=interp1(h,t,h1,′nearest′);? >> plot(h,t,′+′,h1,t_nearest,′r′) %比较最*点插值法的结果?

>> axis([0,12,0,35])?
>> title(′Nearest Interp′)? >> subplot(2,2,2)? >> t_linear=interp1(h,t,h1);?

第6章 插值法

>> plot(h,t,′+′,h1,t_linear,′g′)
%比较线性插值法的结果? >> axis([0,12,0,35])? >> title(′Linear Interp′)? >> subplot(2,2,3)?

>> t_spline=interp1(h,t,h1,′spline′);?
>> plot(h,t,′+′,h1,t_spline,′g′) %比较样条插值法的结果?

第6章 插值法

>> axis([0,12,0,35])?
>> title(′Spline Interp′)? >> subplot(2,2,4)? >> t_cubic=interp1(h,t,h1,′cubic′);? >> plot(h,t,′+′,h1,t_cubic,′b′)

%比较立方插值法的结果?
>> axis([0,12,0,35])? >> title(′Cubic Interp′)? 不同插值方法的运算结果见图6.8。?

第6章 插值法

图 6.8 不同插值方法运算结果

第6章 插值法

根据比较结果可以看出,不同插值方法的区别主要在于
插值曲线的光滑性以及计算速度等。最*点插值方法的运算 速度最快,但插值结果相当粗糙; 线性插值的计算速度较最 *点插值慢,但其结果是连续的; 立方插值比前两种方法更 耗时间,但结果却更加光滑,不仅在已知数据点处连续,而

且在该点的一阶导数也连续; 样条插值所需时间最长,但结
果最光滑,不仅在已知数据点处连续,而且在数据点处的一 阶导数和二阶导数都连续。?

第6章 插值法

6.8.2 主要程序?
程序6.1 (Lagrange插值-lagrange.m)? 下面的程序基于公式(6.5), 且在xi点,

? xi ? x j ? ? yk Ln ( xi ) ? ? ? ? ? ? k ?0 ? 0? k ? j ? n xk ? x j ?
n

第6章 插值法

function yi=lagrange(x,y,xi)?
% Lagrange插值? % x,y分别为已知节点及其函数值向量? % xi为插值点(可以是多个),yi为插值? n=length(x);m=length(xi);?

for i=1:m?
z=xi(i);s=0;? for k=1:n? p=1.0;

第6章 插值法

?
for j=1:n? if j?~=k? p=p*(z-x(j))/(x(k)-x(j));? end?

end?
s=p*y(k)+s;? end? yi(i)=s;? end?

第6章 插值法

例6.13

在区间[-5,5]上取节点数n=11,等距间隔h=1

1 的节点为插值节点,对函数f(x)= 进行拉格朗日插值, 2 1? x 并绘图。?
在命令窗口输入: ? >> x=-5:5;? >> y=1./(1+x.^2);?

第6章 插值法

>> x0=-5:0.1:5;?
>> y0=lagrange(x,y,x0);?

>> y1=1./(1+x0.^2);?
>> plot(x0,y1,′-b′) >> hold on? >> plot(x0,y0,′:r′) %插值曲线? %原曲线?

产生的图形如图6.9所示, 其中虚线即为10次Lagrange插 值曲线。?

第6章 插值法

图 6.9 龙格现象

第6章 插值法

程序6.2 (均差表的计算-matdivdif.m)?
对于一般均差公式(6.18),或?? f[xk-j, xk-j+1, ?, xk]= ?? 若记f[xk-j, xk-j+1, …, xk]=D(k,j)(j≤ k),则有??

f [ xk ? j ?1 ,?, xk ] ? f [ xk ? j ,?, xk ?1 ] xk ? xk ? j

D(k,j)=
??

D(k , j ? 1) ? D?k ? 1, j ? 1? xk ? xk ? j

于是可用下面的程序计算各阶均差。

第6章 插值法

function D=matdivdif(x,y)?
% 计算数据的均差表? % x,y为已知数据,D返回各阶均差 ? n=length(x);D=zeros(n); D(:,1)=y′;? for j=2:n?

for k=j:n?
D(k,j)=(D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1));? end? end?

第6章 插值法

对于例6.4, 输入:?
>> x=2.0:0.1:2.2;? >> y=sqrt(x);? >> d=matdivdif(x,y)? d =?

1.4142
1.4491 1.4832

0
0.3492 0? 0.3410 -0.0411?

0?

第6章 插值法

程序6.3 (Hermite插值-hermite.m)?
因为满足条件(6.40)的Hermite插值公式(6.41)可写成?? H(x)=
n

n ? x ? xj ? 1 ? ? ; ai ? ? 。 ??其中hi= ? ? ? ? j ? 0 , j ?1 xi ? x j j ? 0 , j ? i ? xi ? x j ?

i ?0

?

n

hi[(xi-x)(2aiyi-mi)+yi]
2

第6章 插值法

所以可建立以下的迭代程序.?
function h=hermite(x0,y0,y1,x)? % Hermite插值? % x0,y0分别为已知节点及其函数值向量?

% y1为节点上的导数值?
% x为插值点(可以是多个), h为插值? n=length(x0);m=length(x);? for k=1:m?

第6章 插值法 s=0;?

for i=1:n? h=1.0;a=0.0;? for j=1:n? if j?~=i? h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2;? a=a+1/(x0(i)-x0(j));? end? end? s=s+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i));? end? h(k)=s;? end?

第6章 插值法

对于例6.6,输入?
>> format long? >> x=[1,2];y=[0,0.693147];? >> m=[1,0.5];? >> h=hermite(x,y,m,1.5)?

h =?
0.40907350000000?

第6章 插值法

程序6.4 (样条插值-matspline.m)?
下面的程序构造具有一阶导数边界条件的数据点(xi, yi)(i=0, 1, ?, n)上的三次样条插值函数S(x)。 输出矩阵S的第i行是区间[xi-1, xi]上的分段函数 Si(x)(i=1, 2, ?, n)按降幂排列的系数。 对其他边界条件,可作适当修改。?

第6章 插值法

functio n S=matspline(x,y,dx0,dxn)?

% x,y 分别为插值节点和对应的函数值(行向量)?
% dx0=S′(x0):左端点的一阶导数? % dxn=S′(xn):右端点的一阶导数? % S按降幂排列的三次多项式的系数? N=length(x)-1; H=diff(x); D=diff(y)./H; A=H(2:N-1);? B=2*(H(1:N-1)+H(2:N)); C=H(2:N); U=6*diff(D);?

第6章 插值法

B(1)=B(1)-H(1)/2;?
U(1)=U(1)-3*(D(1)-dx0);? B(N-1)=B(N-1)-H(N)/2;? U(N-1)=U(N-1)-3*(dxn-D(N));? for k=2:N-1?

temp=A(k-1)/B(k-1);?
B(k)=B(k)-temp*C(k-1);? U(k)=U(k)-temp*U(k-1);?

第6章 插值法

end?
M(N)=U(N-1)/B(N-1);? for k=N-2:-1:1? M(k+1)=(U(k)-C(k)*M(k+2))/B(k);? end?

M(1)=3*(D(1)-dx0)/H(1)-M(2)/2;?
M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;? for k=0:N-1?

第6章 插值法

S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1));?
S(k+1,2)=M(k+1)/2;?

S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6;?
S(k+1,4)=y(k+1);? end?

第6章 插值法

例6.14

求经过点(0, 0.0),(1, 0.5),(2, 2.0),(3, 1.5),

且边界条件为S′(0)=0.2,S′(3)=-1的三次样条插值。? 在命令窗口输入: >> x=[0 1 2 3];y=[0 0.5 2.0 1.5];dx0=0.2;dxn=-1;? >> S=matspline(x,y,dx0,dxn)?

S =?
0.4800 -1.0400 0.6800 -0.1800 1.2600 -1.8600 0.2000 0.5000? 2.0000? 0.6800 0? 1.2800

第6章 插值法

下面的命令显示了如何使用命令polyval画出三次样条插
值函数的图形: ?

>> x1=0:0.01:1;y1=polyval(S(1,:),x1-x(1));?
>> x2=1:0.01:2;y2=polyval(S(2,:),x2-x(2));?

>> x3=2:0.01:3;y3=polyval(S(3,:),x3-x(3));?
>> plot(x1,y1,x2,y2,x3,y3,x,y,′*′)? 产生的图形如图6.10所示。?

第6章 插值法

图 6.10 用polyval命令画出的三次样条插值函数图形

第6章 插值法

* 题 6
1.当x=1, -1, 2时,f(x)=0, -3, 4,求f(x)的二次插值多项式。

2. 已知函数的数值表?

试用线性插值及二次插值计算?ln0.54的*似值.?

第6章 插值法

3. 设xi(i=0, 1, 2, ?, n)为互异节点,证明:??
(1) (2)
i ?0 n

? xik li ( x)
i ?0

n

≡xk (k=0, 1, 2, ?, n);? (k=0, 1, 2, ?, n).??

k ? x ? x ? li ( x) ? 0 ? i

4.设f(x)∈C2[a, b]且f(a)=f(b)=0,求证: ??

1 2 max | f ( x) |? ?b ? a ? max | f ??( x) | a ? x ?b a ? x ?b 8

第6章 插值法

5.假设对f(x)在步长为h的等距节点上构造函数表,且
|f″(x)|≤M, 证明: 在表中任意相邻两点做线性插值时误差不 超过

1 2 Mh 。 8

若取f(x)=sin x,问h应取多大才能保证线性插值的误差不 大于 1 ×10-6?? 2

第6章 插值法

6.证明n阶均差有下列性质: ?
(1) 若F(x)=cf(x),则F[x0, x1, ?, xn]=cf[x0, x1, ?, xn]; ? (2) 若F(x)=f(x)+g(x),则?? F[x0, x1, ?, xn]=f[x0, x1, ?, xn]+g[x0, x1, ?, xn]

(3) 若F(x)=anxn+an-1xn-1+?+a1x+a0,则F[x0, x1, ?, xn]
=an.? 7. 设f(x)=x7+5x3+1,求均差f[20, 21, 22],f[20, 21, ?, 27],f[20, 21, ?, 28]。? 8. 已知连续函数f(x)满足: f(-1)=-2, f(0)=-1, f(1)=1, f(2)=2。

第6章 插值法

9.已知函数y=f(x)如下表: ?

试用四次牛顿插值多项式计算f(0.596)的*似值,并估计 误差。?

第6章 插值法

10.设f(x)=anxn+an-1xn-1+?+a1x+a0,且an≠0,证明: ?
Δnf(x)=n! anhn,其中h为等距节点步长。?

11. 过-1, 1两点构造一个三次Hermite插值多项式H(x),
使之满足??

H(-1)=-9,H′(-1)=15,H(1)=1,H′(1)=-1

第6章 插值法

12.确定一个次数不高于4的多项式φ(x),使得??
φ(0)=φ′(0)=0,

φ(1)=φ′(1)=1,φ(2)=1
?? 13.将区间[0.5, 1]n等分,求f(x)=x2的分段线性插值。

当n为多大时,插值结果有5位有效数字??

第6章 插值法

14. 设P(x)是任意一个首项系数为1的n+1次多项式,证明:

P( x) ? ? P( xk )lk ( x) ? ?n?1 ( x) ??(1) ?
k ?0
n P( x) P ( xk ) (2) ? ? 1? ? ? ?1 ( x) ?n ?1 ? x ? k ? 0 ? x ? xk ?? n

n

15.对于给定的插值条件?

第6章 插值法

试分别用节点处的一阶导数和二阶导数作为参数求出满
足下列边界条件的三次样条插值函数S(x): ?

(1) S′(0)=0.2,S′(3)=-1; ?
(2) S″(0)=0.2,S″(3)=-1。?

第6章 插值法

数值实验题
1. 应用MATLAB插值命令求解*题7中的练*2,8,10

2. 分别利用程序6.1, 6.3和6.4求解*题7中的练*2,8,
15(2)(需修改程序)。?

3. 编写牛顿前插公式(6.29)的计算程序,并求解*题7中
的*题10.?

1? x 4. 对函数f(x)= , 在区间[0,5]*聪铝 2 1 ? 2 x ? 3x 步骤确定四次拉格朗日插值多项式L4(x): ?

第6章 插值法

(1) 确定插值节点; ?
(2) 写出插值多项式L4(x); ?

(3) 写出误差表达式R(x)=f(x)-L4(x); ?
(4) 在同一坐标系上分别画出曲线y=f(x)与y=L4(x),并加

以比较。?

第6章 插值法

5. 据资料记载,某地某年夏季每隔30天的日出日落时间
如下表: ?

问这段时间内哪一天的白天最长??



热文推荐
猜你喜欢
友情链接: