You are on page 1of 40

数值分析

Copyright © 2018 By Hu Bao Qing


Wuhan University
All rights reserved
5.4 Hermite 插值

在实际问题中,对所构造的插值多项式,不仅要求
函数值重合,而且要求若干阶导数也重合。
即:要求插值函数 P (x) 满足 p (xi) = f (xi), P’ (xi) =

f ’ (xi), …, P (m) (xi) = f (m) (xi).


把此类插值多项式称为埃米尔特( Hermite )插值
多项式或称带导数的插值多项式,记为 H (x) 。
注: N 个条件可以确定 N-1 阶多项式。

 要求在 1 个节点 x0 处直到 m0 阶导数都


重合的插值多项式即为 Taylor 多项式
(m )
f 0
( x0 )
 ( x)  f ( x0 )  f ( x0 )( x  x0 )  ...  ( x  x0 )m0
m0 !
其余项为
f ( m0 1) ( )
R( x)  f ( x)   ( x)  ( x  x0 ) m0 1
( m0  1)!
例:设 x0  x1  x2, 已知 f(x0) 、 f(x1) 、 f(x2) 和 f
’(x1), 求多项式 P(x) 满足 P(xi) = f (xi) , i = 0, 1,
2 ,且 P’(x1) = f ’(x1), 并估计误差。
解 : 首先, P 的阶数 =3, 模仿 Lagrange 多项式的思想,
2
设 P (x)  3 
f ( x ) ( x )  f  ( x )  ( x )
i0
i i 1 1

其中  i ( x j )   i j ,  i ( x 1 )  0 ,  1 ( x j )  0 ,  1 ( x 1 )  1
0(x) 有根 x , x ,且 (x1) = 0  x1 是重
1 2 0
根。
α0(x)=C 0(x-x1) (x-x2)
2
2
(xx
1(
) xx
 )
又 : α0(x0) = 1  C0 
(
0x)
 2
2
(
x0 1(

x) x0x
2)
α2(x) 与 α0(x) 完全类似。
α1(x) 有根 x0, x2 α1(x)=(Ax+B)(x-x0)(x-x2)
由余下条件 α (x ) = 1 和 α ’(x ) = 0 可解。
1 1 1 1
例:设 x0  x1  x2, 已知 f(x0) 、 f(x1) 、 f(x2) 和
f ’(x1), 求多项式 P(x) 满足 P(xi) = f (xi) , i = 0,
1, 2 ,且 P’(x1)2 = f ’(x1), 并估计误差。
P3 ( x )  
i0
f ( x i ) i ( x )  f  ( x1 )  1 ( x )
其中  i ( x j )   i j ,  i ( x 1 )  0 ,  1 ( x j )  0 ,  1 ( x 1 )  1
β1(x) 有根 x0, x1, x2  ( x )  C ( x  x ) ( x  x ) ( x  x )
1 1 0 1 2

又 : 1 (x1) = 1  C1 可解。

R 3 ( x )  f ( x )  P 3 ( x )  K ( x )( x  x 0 )( x  x 1 ) 2 ( x  x 2 ),
(4)
f ( x ) 与 Lagrange
K (x) 
4! 分析完全类似
一般地,已知 x0 , …, xn 处有 y0 , …, yn 和 y0’ , …,
yn’ ,求 H2n+1(x), 满足 H2n+1(xi) = yi , H’2n+1(xi) =
n n
y解:设
i’ 。 H 2 n 1 ( x )  
i0
y i i ( x )   y i i ( x )
i0
其中  i ( x j )   i j ,  i ( x j )  0 ,  i ( x j )  0 ,  i ( x j )   ij
(xx
j)
αi(x) 有根 x0 , …, xi-1 , xi+1 …, xn 且都是li()
2x重根i(x
j ix
j)
 2
 i ( x )  ( A i x  B i )li ( x )
由余下条件 αi(xi) = 1 和 αi’(xi) = 0 可解 Ai 和 Bi
 ?
 2
 i ( x )  [1  2 l i ( x i ) ( x  x i ) ] l i ( x )

Aixi + Bi = 1 Bi = 1 - Aixi Ai + 2li(xi) = 0


一般地,已知 x0 , …, xn 处有 y0 , …, yn 和 y0’ , …,
yn’ ,求 H2n+1(x), 满足 H2n+1(xi) = yi , H’2n+1(xi) =
n n
yi’ 。 H 2 n 1 ( x )   这样的
y  ( x )   y  ( x )
i0
i i
Hermite 插值唯
i0
i i

其中  i ( x j )   i j ,  i ( x j )  0 ,  i ( 一
x j )  0 ,  i ( x j )   ij

 i (x) 有根 x0 , …, xn, 除了 xi 外都是 2 重根


  ( x )  C ( x  x )l 2 ( x )
i i i i
又 : i (xi) = 1  Ci = 1


(
xx
)
(x
)
l
i(
x) 2
ii

2n
设 a  x 0  x 1  ...  x n  b , f  C [a , b ] 则
(2n2) 2
f ( x )  n

Rn ( x )   
( 2 n  2 )!  i  0
( x  x i )


 i ( x )  [1  2 l i ( x i ) ( x  x i ) ] l i2 ( x )
(xx
)
( 
x)
l(
x) i
2
ii
两点三次 Hermit 插值算例
 
n n
H (
x)
y(x)
 y
已知对数函数在两点处的值及导数值
2
n
1 (x
)
i
0
ii
i
0
ii

x 1 2
y 0 0.693147
y¢ 1 0.5

用三次 Hermit 多项式求 ln1.5 的近似值


x  x1 x  x0
l0 ( x )    ( x  2) l1 ( x )   x 1
x 0  x1 x1  x 0
H ( x )  0 . 6 9 3 1 4 7 [1  2 ( x  2 ) ] ( x  1 ) 2  ( x  1 ) ( x  2 ) 2  0 . 5 ( x  2 ) ( x  1 ) 2
  1 .5 3 4 2 7  2 .1 8 2 2 4 x  0 .7 6 1 6 7 7 x 2  0 .1 1 3 7 0 6 x 3
ln 1 .5  0 .4 0 9 0 7 4
牛顿――埃米尔特多项式的构造方法 :
已知函数表
x x0 x1 x2  xm  xn
y y0 y1 y2  ym  yn
y ' y '0 y '1 y '2  y 'm
求一个插值多项式 H (x) ,使其满足如下条件:
H (xi)  yi i = 0, 1, 2,…, n
H ' ( x i )  y 'i i = 0, 1, 2,…, m
插值条件的个数: m+n+2
H (x) 的次数:不超过 m+n+1 次
按牛顿插值的构造思想,设
H ( x )  N n ( x )  P m ( x ) ( x  x 0 ) ( x  x 1 )  ( x  x n ) ( 1 )
其中 Nn (x) 是牛顿基本插值多项式; Pm(x) 为特定的
m 次多项式。
显然: H ( x i )  N n ( x i )  y i i = 0, 1, 2,…, n
为确定 Pm (x) ,对( 1 )求导
H ' ( x )  N n ( x )  P m ( x )  n  1 ( x )  P m ( x )  n  1 ( x ) ( 2 )

令 x = xi, i = 0, 1, 2,…, m ,将条件代入( 2 )得

H ' ( x i )  N m ( x i )  P m ( x i )  n  1 ( x i )  y i
所以
y i  N n ( x i )
Pm ( x i )  i = 0, 1, 2,…,
 n  1 ( x i )

于是,求 Pm (x) 的问题,变成已知 Pm (x) 的函数表


x x0 x1 x2 … xm

Pm(x) Pm(x0) Pm(x1) Pm(x2)


Pm(xm  
确定一个次数不超过 m 的插值多项式 Lm(x) ),使其满足
Lm ( x i )  Pm ( x i ) i = 0, 1, 2,…, m
Lm ( x )  Pm ( x )
因为 Pm(x) 为小于等于 m 次多项式。所以,
P m ( x )  P m ( x 0 )  P m [ x 0 , x 1 ]( x  x 0 )  
 P m [ x 0 , x m ]( x  x 0 )  ( x  x m 1 )
m
 P
i0
m [ x 0 , x 1 ,  , x i ]( x  x 0 )  ( x  x i  1 )

令 x – x-1 = 1 ,将上式代入( 1 ),便得到满足插值条件


H (xi)  yi i  0 , 1 , , n
H  ( x i )  y i i  0 , 1 , , m
的埃米尔特插值多项式
三点三次 Hermit 插值算例
已知函数 y = f(x) 数据如下:
x 0 1 2
y 0 2 6
y’ 1

求三次 Hermit 插值多项式

N2(x) = y0l0(x) + y1l1(x) + y2l2(x) = x2 + x


H3(x) = N2(x) + P0(x){(x - 0)(x - 1)(x - 2)}
由导数条件,得 P0(x) = 2
H3(x) = 2x3 - 5x2 + 5x
5.5 分段低次插值方法
5.5.1 高次插值的缺陷 1
例:在 [5, 5] 上考察 f ( x )  的
1 x2
Ln(x) 。取 1 0
x i   5  i ( i  0 , ... , n )
n
2.5
 f (x)
Ln(x) 
2

1.5

n 越大,
1 端点附近抖动
越大,称为
0.5
Runge 现象
0

-0.5
-5 -4 -3 -2 -1 0 1 2 3 4 5
Runge 现象 1901 年, Runge
1
例: f ( x )  2
x  [  1,1 ]
1  25 x
等距节点构造 10 次 Lagrange 插值多项式L 1 0 ( x )

x -0.90 -0.70 -0.50 -0.30

f ( x) 0.04706 0.07547 0.13793 0.30769


L10 ( x) 1.57872 -0.22620 0.25376 0.23535

等距高次插值,数值
稳定性差,本身是病
分段低次插值 态的。
5.5.2 分段线性插值
在每个区间 [ x i , x i  1 ] 上,用 1 阶多项式 ( 直
线 ) 逼近 f (x):
x  x xx
f(
x)
P
1(x ) i1
y

i
i
y
i
1 x  [ x i , x i1 ]
x 
i i x 
1 x
i
 
1ix

记h  m a x | x i 1  x i | P 1h ( x ) 
h  0 ,易 致
f (x)
证:当 y 时, y= f(x)

y=p(x)

o x
误差

f(2)()
f()
x px
n() (xx
i)
(xx
i
1)
2 !
2
M
2x 1x
i
  i
 x  [ x i , x i1 ]
2 2 

M 2 h2 M 2 2
 f ( x)  pn ( x)   h
2 4 8

可以看出 p n ( x )  f ( x ) , n   
分段二次插值
在每个区间 [ x i , x i  2 ] 上,用 2 阶多项式 ( 抛物
线 ) 逼近 f (x):(
x  x )
(
x
x )( xx)
(x
x )
f
(
x)
P
(
x
2)
 y

i y
i

1
i 
1 i

2 i i
2

(
x

ixi

1)
(x

ixi

2) (x
i

1x
)
(x
ii

1x
i

2)
(x
x) (
x x )
 i i
1
y
i
2
(
xi
 
x
2 i)(
xi
 x
2 i
1)
y y= f(x)
x  [ x i , xi 2 ]
y=p(x
)

o x
分段一次、二次插值

简单易行。

失去了原函数的光滑性。
5.5.3 分段三次 Hermite 插值
给定 x 0 , . . . , x n ; y 0 , . . . , y n ; y 0 , . . . , y n
在 [ x i , x i1 ] 上利用两点的 y 及 y’ 构造
3 次 Hermite 函数
n
y  y i 1
在 [a, b] 上 S 3 ( x )   [ y i i ( x )  y i i ( x )] i
i0 yi yi+1
在 [xi, xi+1] 上 xi xi+1
S 3 ( x )  y i i ( x )  y i  1 i1 ( x )  y i  i ( x )  y i  1  i  1 ( x )

 2
 i ( x )  [1  2 l i ( x i ) ( x  x i ) ] l i ( x ) x  x i 1
li ( x ) 
x i  x i 1

(
xx
)
(
ix
)
l(
x) 2
ii
分段 Hermite 插值

一阶光滑度 , 改善了精度。

算法复杂 , 导数一般不易得到。
5.6 样条插值
5.6.1 插值问题与插值条件
要求:插值曲线既要简单,又要在曲线的连接
处比较光滑。

这样的分段插值函数在分段上要求多
项式次数低,而在节点上不仅连续,还存在
连续的低阶导数,我们把满足这样条件的插
值函数,称为样条插值函数,它所对应的曲
线称为样条曲线,其节点称为样点,这种插
值方法称为——样条插值。
例 1. 如图 , 一均匀弹性弦两端固定于两点 A(a,0),
a  x 0  x1  x 2    x n  b
B(b,0) 在区间 [a, b] 内取点列
并在内结点集上分别 y
y  y x 
给集中载荷
q  x j   q j , j  1, 2 ,  , n  1,
则载荷分布 q  q  x  0 
x0  a xn
 x
b
可表为 n 1
q  x    q j   x  x j ,
j 1

其中   x  x j  x  xj
是集中于结点 的点
脉冲函数 .
事实上 , 在小变形和均匀分布外力假设下 , 上述
弦的平衡问题的微分方程模型乃是两点边值问题
y   q , x  a , b ;
y  a   y b   0.
现在是作用离散的集中力 , 此时弦达到平衡状态
y x 
时位移函数 应满足 n 1
n 1 q x    q  x  x 
j j
y   x    q   x  x ,
j 1
j j j 1

y  x0   y  x n   0.
因此有
y   x   0 , x   x j  1 , x j  , j  1, 2 ,  , n .
n 1
y   x   q j   x  x ,
j
j 1

y  x0  y  xn  0.
这意味着 :
 在每一加载点 xj 处 y (x) 脉冲间断 ;
 y’(x) 是阶梯函数 ;
 y(x) 是分段线性的连续函数 , 在每一内结点转
折灵活 .

后面我们将指出 , 如此的 y(x) 便是一次样条函数.


例 2. 考察梁弯曲方程
y(4) = q, a < x < b.
与例 1 类似地加载集中力 , 只是两端点除给零
位移约束外还要加一阶或二阶导数约束 . 于是集中
力作用下的梁弯曲方程成为
n 1
y 4   x    q  x  x 
j j
j 1 y x 

a b
定义:设对 y = f (x) 在区间 [a, b] 上给定一组节点
a = x0 < x1 < x2 <…< xn = b 和相应的函数值 y0, y1,…, yn ,
如果 S(x) 具有如下性质:
( 1 )在每个子区间 [xi-1, xi] (i = 1, 2,…, n) 上 S(x) 是

不高于三次的多项式;
( 2 ) S(x) , S’(x) , S (x) 在 [a, b] 上连续;

( 3 ) S(xi)=yi (i = 0, 1, 2,…, n) ,则称 S(x) 为 y = f (x)


的三次样条插值函数。
注:三次样条与分段 Hermite 插值的根本区

在于 S(x) 自身光滑,不需要知道 f 的
导数值
(除了在 2 个端点可能需要);而
f(x H(x)
Hermite S(x)
)
插值依赖于 f 在所有插值点的导数值。 S(x)
三次样条插值的存在唯一性和计算方法
三转角方程
a  x 0  x1  x 2    x n  b
令 S ( x i )  m i i = 0, 1, 2,…, n ?
n n
S (x)   [ y  ( x )  y  ( x )]
i0
i i i i S ( x )   [ y i i ( x )  m i  i ( x )]
i0
S(x) 在每一个小区间 [xi, xi+1] i = 0,1,…, n 上都是三次
多项式,
S ( x )  y i i ( x )  y i  1 i1 ( x )  m i  i ( x )  m i1  i1 ( x )
对 S(x) 求二阶导数得:

S  ( x )  y i  i( x )  y i  1  i 1 ( x )  m i  i( x )  m i  1  i 1 ( x )


S  ( x )  y i  i( x )  y i  1  i 1 ( x )  m i  i( x )  m i  1  i 1 ( x )
6 x  2 x i  4 x i 1 6 x  4 x i  2 x i 1 6 ( x i  x i 1  2 x )
 2
mi  2
m i 1  2
( y i 1  y i )
hi hi hi

其中 h i  x i  1  x i xi-1 xi xi+1
6 x  2 x i 1  4 x i 6 x  4 x i 1  2 x i 6 ( x i 1  x i  2 x )
S  ( x )  2
m i 1  2
mi  2
( y i  y i 1 )
hi 1 hi 1 hi  1

1  1 1 1  y i 1  y i y i  y i 1 
m i 1  2    m i  m i 1  3   
hi  1  hi  1 hi  hi  hi hi  1 
hi 1
整理

ai 
hi 1  hi i(xx
)  ( 
 x )
iil2
(
x)
(1  a i ) m i  1  2 m i  a i m i  1  b i (xx )2
(xx) i
1
i  1, 2 , , n  1 i
(xx) 2
i i
1
(1  a i ) m i  1  2 m i  a i m i  1  b i i  1, 2 , , n  1
S  ( x 0 )  m 0  y 0 , S  ( x n )  m n  y n

 2 a1   m1 
1  a 2 a2  m 
 2  2 
      
  
 1  an  2 2 an  2   mn  2 
 1  an 1 2   mn 1 
b1  (1  a1 ) y0 
 b 
 2 
  
 
 bn2 
 bn1  an 1 yn 
5.6.2 三弯矩方程
设 f (x) 是定义在 [a, b] 区间上的一个二次连续可微
函数, 为分划:
a  x 0  x1  x 2    x n  b
令 M i  S  ( x i ) i = 0, 1, 2,…, n
S(x) 在每一个小区间 [xi, xi+1] i = 0,…, n-1 上都是
三次多项式,
S (x) 在 [xi, xi+1] 上的表达式为:
x i 1  x x  xi
S  ( x )  M i  M i 1
hi hi
其中 h i  x i  1  x i
x i 1  x x  xi
将 S  ( x )  M i  M i 1 两次积分得:
hi hi
( x i 1  x ) 2 ( x  xi ) 2
S ( x )   M i  M i 1  Ai
2 hi 2 hi
( x i 1  x ) 3 ( x  xi )3
S (x)  M i  M i 1  Ai ( x  x i )  B i
6 hi 6 hi
Ai 和 Bi 为积分常数。
因为 S ( xi)  yi, S ( x i1 )  y i1
所以它满足方程:
Mi 2
 6 hi  Bi  yi

 M i 1 h 2  A h  B  y
 6 i i i i i 1
 yi 1  yi hi
 Ai  hi
 ( M i 1  M i )
6

B  y  M i h2
 i i
6
i

( x i 1  x ) 3 ( x  xi ) 3
S ( x)  M i  M i 1 (*)
6 hi 6 hi
 M i 2  xi 1  x  M i 1 2  x  xi
  yi  hi    y i 1  hi  ( i  1, 2,  , n  1)
 6  hi  6  hi

求 Mi ,确定 S (x) 的表达式。微分( * )式


( x i 1  x ) 2 ( x  x i ) 2 y i 1  y i M i 1  M i
S ( x )   M i  M i 1   hi
2 hi 2 hi hi 6
( x i 1  x ) 2 ( x  x i ) 2 y i 1  y i M i 1  M i
S ( x )   M i  M i 1   hi
2 hi 2 hi hi 6

xi-1 xi xi+1
( xi  x ) 2 ( x  x i 1 ) 2 y i  y i 1 M i  M i 1
S ( x )   M i 1 Mi   h i 1
2 hi 1 2 h i 1 hi 1 6

于是 hi 1 y i  y i 1 M i  M i 1 hi y i 1  y i M i 1  M i
 M i 1   hi 1   M i   hi
2 hi 1 6 2 hi 6
整理

(1  a i ) M i1  2 M i  aiM i1  bi

i  1, 2 , , n  1
(1  a i ) M i1  2 M i  aiM i1  bi i  1, 2 , , n  1
S  ( x 0 )  M 0  y 0 , S  ( x n )  M n  y n

 2 a1   M1 
1  a 2 a2  M 
 2  2 
      
  
 1  an  2 2 an  2   M n  2 
 1  an 1 2   M n 1 
b1  (1  a1 ) y0 
 b 
 2 
  
 
 bn2 
 bn1  an 1 yn 
算 法:
( 1 ) i = 1, 2, …, n-1
hi = xi+1 – xi

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

hi
ai 
h i  1  hi
6  y i 1  y i y i  y i 1 
bi    
hi  1  h i  hi hi  1 
( 3 )解 n – 1 阶三对角方程组,得
M1 , M2 ,…, Mn-1
代入端点条件计算 M0 , Mn
3 3
( x
( 4 ) S ( x )  M i i 1  x ) ( x  x )
 M i 1 i

6 hi 6 hi
 M i 2  x i 1  x  M i 1 2  x  x i
  yi  hi    y i 1  hi 
 6  hi  6  hi

若取 x  xi Si(x)
,计算
相同数据 3 次样条插值与 Lagrangr 插值效果比较
(Copied from R.L.Burden & J.D.Faires, Numerical
Analysis):

Cubic Spline Interpolation Lagrangr Interpolation

You might also like