Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 31

§3 牛顿插值 /* Newton’s Interpolation */

Lagrange 插值虽然易算,但若要增加一个节点时,
全部基函数 li(x) 都需重新算过。
c ? c ?( x  x )  c ?( x  x )( x  x )  
将 Ln(x) 改写成0 1 0 2 0 1

 cn?( x  x0 )...( x  xn1 ) 的形式,希望每加一个节点时,


只附加一项上去即可。
 差商 ( 亦称均差 ) /* divided difference */
f ( xi )  f ( x j ) 1 阶差商 /* the 1st div
f [ xi , x j ]  (i  j , xi  x j ) ided difference of f w.r.
xi  x j
t. xi and xj */

f [ xi , x j ]  f [ x j , xk ]
f [ xi , x j , xk ]  (i  k ) 2 阶差商
xi  xk
§3 Newton’s Interpolation

(k+1) 阶差商:

f [ x0 , x1 , ... , xk ]  f [ x1 , ... , xk , xk 1 ]
f [ x0 , ... , xk 1 ] 
x 0  x k 1
f [ x0 , ... , xk 1 , xk ]  f [ x0 , ... , xk 1 , xk 1 ]

x k  x k 1

注: k 阶差商必须由k  1个节点构成,k 个节点是构造不


出 k阶差商的。
 为统一起见 , 补充定义函数
f ( x0 ) 为零阶差商。

Warning: my head is exploding…


差商的值与
What is the point of 的顺序无关!
xi this formula?
§3 Newton’s Interpolation

 差商性质:
1). k 阶差商可表为函数值 f ( x0 ), f ( x1 ), , f ( x k )的线性组合,即

k f (xj ) k f (xj )
f [ x0 ,  , x k ]   
j  0 ( x j  x 0 )  ( x j  x j 1 )( x j  x j 1 )  ( x j  x k ) j 0  k
 1 ( x j )

2). 差商具有对称性,即
f [ x0 , x1 ,, x k ]  f [ x1 , x0 , x2 , xk ]    f [ x1 ,, xk , x0 ]
3). 若f (x ) 在 [a , b] 上有n 阶导数 , 且节点x i  [a , b](i  0,1,  n),
则 n阶差商与 n阶导数有如下关系式:
f ( )
(n)
f [ x 0 , x1  , x n ]    [a , b ]
n!
4). 若 f (x ) 是 n 次多项式,则其 k阶差商 f [ x0 , x1  , x k 1 , x ]
当 k  n 时是一个 n  k次多项式,而当 k  n 时恒为零 .
§3 Newton’s Interpolation

差商计算可列差商表如下

xi f ( xi ) 一阶差商 f二阶差商 (x ) f (x )
1

x x
0 三阶差商
x0
1 0

f ( xf () x0 f) ( x )
3 2
f (x ) f (x )
2 1 f [ x1 , x 2 ]  f [ x0 , x1 ]
x x x 2  x0
x1 x x
f ( x1 )
3 2
f [ x0 , x1 ]
2 1

f [ x 2 , x 3 ]  f [ x1 , x 2 ]
x2 f ( x2 ) f [ x1 , x2 ] f [ x0 , x1 , x2 ] x 3  x1

x3 f ( x3 ) f [ x2 , x3 ] f [ x1 , x2 , x3 ] f [ x0 , x1 , x2 , x3 ]
    
f ( x1 , x 2 , x 3 )  f ( x0 , x1 , x 2 )
x 3  x0
§3 Newton’s Interpolation

 牛顿插值 /* Newton’s Interpolation */

Newton 插值是通过选取特殊的基函数来实现的,这时,取

 0 ( x)  1 f ( x1 )  N n ( x1 )  c0  c1 ( x1  x0 )
 i  1 ( x )  ( x  x i ) i( fx( x),0 )i  x1 ,1x, 
c1 ( 0 0) ,n 1
0 )  N n (插值的以
x 0 )  c0 x , 得
f ( xNewton f (x ) f (x )
作为  , x n1为节点的基函数,而次数
0 x1c1
0
 f [ x0 , x1 ]
x1  x0
不超过 n的多项式 N n (x )可表示为
N n ( x )  c0  c1 ( x  x0 )  c2 ( x  x0 )( x  x1 )
   cn ( x  x0 )( x  x1 )( x  xn1 )

其中 c0 , c1 ,  , c n 是待定系数,由插值条件 (2.1)决定。
§3 Newton’s Interpolation

通过插值条件运用数学归纳法可以求得
c k  f [ x 0 , x1 ,  , x k ]
因此就得到下列的满足插值条件 (2.1) 的 n 次插值多项


N n ( x )  f ( x0 )  f [ x0 , x1 ]( x  x0 ) 
f [ x0 , x1 , x 2 ]( x  x0 )( x  x1 )   
f [ x0 , x1,  , x n ]( x  x0 )( x  x1 ) ( x  x n 1 )
§3 Newton’s Interpolation

N n ( x )  c0  c1 ( x  x0 )  c2 ( x  x0 )( x  x1 )    cn ( x  x0 )( x  x n1 )

f ( x )  f ( x0 )  ( x  x0 ) f [ x , x0 ] 1
f [ x , x0 ]  f [ x0 , x1 ]  ( x  x1 ) f [ x , x0 , x1 ] 2
…………
f [ x , x0 , ... , x n1 ]  f [ x0 , ... , x n ]  ( x  x n ) f [ x , x0 , ... , x n ] n1

1 + (x  x0)  2 + … … + (x  x0)…(x  xn1)  n1

f ( x )  f ( x0 )  f [ x0 , x1 ]( x  x0 )  f [ x0 , x1 , x 2 ]( x  x0 )( x  x1 )  ...
 f [ x0 , ... , x n ]( x  x0 )...( x  x n1 )
 f [ x , x0 , ... , x n ]( x  x0 )...( x  x n1 )( x  x n )

Nn(x) ci = f [ x0, …, xi ]
Rn(x)
§3 Newton’s Interpolation

注: 由唯一性可知 Nn(x)  Ln(x) , 只是算法不同,故


其余项也相同,即
f ( n 1) ( x )
f [ x , x0 , ... , x n ] n 1 ( x )   n 1 ( x )
( n  1) !
HW p.50
#6,#8,#9 f ( k ) ( )
f [ x , ... , x ] 
0 k ,  (x , x )
min max
k!

例 已知函数 f ( x )在各节点处的函数值如下 , 用 Newton 插值


法求 f (0.596) 的值 .

xk 0.40 0.55 0.65 0.80


f ( xk ) 0.41075 0.57815 0.69675 0.88811
§3 Newton’s Interpolation

解: xk f ( xk ) 一阶 二阶 三阶
0.40 0.41075
0.55 0.57815 1.11600
0.65 0.69675 1.18600 0.28000
0.80 0.88811 1.27573 0.35893 0.19733

N 3 ( x )  0.41075  1.11600( x  0.4)  0.28000( x  0.4)( x  0.55) 


0.19733( x  0.4)( x  0.55)( x  0.65)

f (0.596)  0.62836
§3 Newton’s Interpolation

 等距节点公式 /* Formulae with Equal Spacing *


/
当节点等距分布时 : x i  x0  i h ( i  0, ... , n)

向前差分  f i  f i 1  f i
/* forward diffe
rence */ k f i   ( k 1 f i )  k 1 f i 1  k 1 f i
向后差分 f i  f i  f i1
/* backward dif
ference */  k
fi   k 1
f i   k 1
f i 1

中心差分  k f i   k 1 f i    k 1 f i 
1 1
/* centered diff 2 2

其中 f  f ( x  )
h
erence */ i 2
1 i 2

More given on p.28.p.29


§3 Newton’s Interpolation
 差分的重要性质:

线性:例如 (a f ( x )  b g ( x ))  a f  b g

若 f (x) 是 m 次多项式,则 k f ( x ) (0  k  m ) mk
是  f ( x )  0次多项式,而
(k  m )
k


差分值可由函数值算出:
n
n n
n
 f k   (  1)
n j
f n k  j  fk   (1)
n n j
f k  j n
j0 j j 0 j
 n  n( n  1)...(n  j  1)
其中   
j! /* binomial coefficients */
 j
n

函数值可由差分值算出: f n  k   nj  f k
j

j 0

k f 0 由 Rn 表达
 f [ x0 , ... , x k ]  归
k! hk
k f n 纳 式 k
 f0
f [ xn , xn 1 , ... , xn  k ]  ( ) 

(k )
k f
k! h h
k
§3 Newton’s Interpolation

牛顿公式 N n ( x )  f ( x0 )  f [ x0 , x1 ]( x  x0 )  ...  f [ x0 , ... , xn ]( x  x0 )...( x  xn1 )

 牛顿前插公式 /* Newton’s forward-difference formula */


n t
设x  x0  t h (0  t  1), 则N n ( x )  N n ( x 0  t h)   k f ( x 0 )
k 0 k
f ( n 1 )
( )
Rn ( x )  t ( t  1)...( t  n)hn1 ,   ( x0 , x n )
( n  1)!
 牛顿后插公式 /* Newton’s backward-difference formula */
将节点顺序倒置:
N n ( x )  f ( xn )  f [ xn , xn1 ]( x  xn )  ...  f [ xn , ... , x0 ]( x  xn )...( x  x1 )
n t k
设 x  x n  t h ( 1  t  0) , 则 N n ( x )  N n ( xn  t h)   (1) k
 f ( xn )
k 0 k
f ( n1) ( )
Rn ( x )  t ( t  1)...( t  n)h n1 ,   ( x0 , x n )
( n  1)!

注:一般当 x 靠近 x0 时用前插,靠近 xn 时用后插,


故两种公式亦称为表初公式和表末公式。
§3 Newton’s Interpolation

使用 Newton 前插或后插公式,先构造差分表如下 :

xk f ( xk ) yk 2 yk 3 yk 4 yk
x0 y0
y0
x1 y1  y0
2

x2 y1  y0
3
y2  y1
2
y2
x3 y3
§3 Newton’s Interpolation

例 已知数值表如下,分别用向前、向后 Newton 插值公


式求 sin0.57891 的近似值。

x 0.4 0.5 0.6 0.7


sinx 0.38942 0.47943 0.56464 0.64422
解:作差分表
x sinx  2 3
0.4 0.38942 0.09001 -0.00480 -0.00083
0.5 0.47943 0.08521 -0.00563
0.6 0.56464 0.07958
0.7 0.64422
§3 Newton’s Interpolation

使用向前插公式,取 x0=0.5 , x1=0.6, x2=0.7, x=x0+th, h=0.1,


t=(x-x0)/h=0.7891, 于是
2 f 0
N 2 (0.57891)  f 0  tf 0  t ( t  1)
2
 0.00563
 0.47943  0.7891  0.08521  0.7891  (0.7894  1)
2
 0.54714
误差
0.13
R2 ( x )  0.7891(0.7891  1)(0.7891  2)(  cos  ) (0.5    0.7 )
3!

R2 ( x )  3.36  10 5 cos 0.5  2.95  10 5

若用向后插公式,则可取 x0=0.6 , x-1=0.5, x-2=0.4, x=x0+th, t


=-0.2109, 于是
§3 Newton’s Interpolation

t ( t  1) 2
N 2 (0.57891)  f 0  tf 0   f0
2!
(0.2109)( 0.2109  1)
 0.56464  ( 0.2109)  0.08521   ( 0.00480)
2
 0.54707

误差
0.13
R2 ( x )  ( 0.2109)( 0.2109  1)( 0.2109  2)(  cos ), (0.4    0.6)
3!

R2 ( x )  4.57  10 5
§4 埃尔米特插值 /* Hermite Interpolation */

不仅要求函数值重合,而且要求若干阶导数也重合。
即:要求插值函数  (x) 满足 (xi) = f (xi), ’ (xi) = f ’ (xi),
…, (mi) (xi) = f (mi) (xi).

注: N 个条件可以确定N  1 阶多项式。

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


的插值多项式即为 Taylor 多项式
f ( m0 ) ( x0 )
 ( x )  f ( x0 )  f ( x0 )( x  x0 )  ...  ( x  x0 ) m0
m0 !
f ( m 1) ( )
其余项为 R( x )  f ( x )   ( x ) 
0

( x  x 0 ) ( m 1 )
0

( m0  1)!
§4 Hermite Interpolation
 低次埃尔米特插值多项式
 1. 二点三次埃尔米特插值多项式
设给定区间 [ x0 , x1 ]两端点处的函数值与导数值如下:
x x0 x1
f (x ) y0 y1
f ' ( x) m0 m1
求插值多项式 H 3 ( x) , 使满足
 H 3 ( x 0 )  y0 , H 3 ( x1 )  y1

 H 3 ' ( x 0 )  m 0 , H 3 ' ( x1 )  m1
由于给出了四个条件,故可唯一确定出一个三次多项式,
不妨设
H 3 ( x )   0 ( x ) y0   1 ( x ) y1   0 ( x )m0   1 ( x )m1
§4 Hermite Interpolation

因此问题归结为构造
 0 ( x )与 0 ( x ),  1 ( x )与 1 ( x )
首先, 0 ( x )与 0 ( x ),  1 ( x )与 1 ( x ) 应该为三次式。
再者,由插值条件易知  i ( x j ),  i ( x j ) i , j  1,2 应该满足条件
 1 i j
 (
 i j x )   ij   i j
 'i ( x j )  0 ( i , j  0,1)
 0

 1 i  j
  i ( x j )  0  'i ( x j )   ij  
0 i  j

2
 x  xj 
l i(x )  
2  , ( i , j  0,1; i  j )
x x 
 i j 
§4 Hermite Interpolation


 i ( x )  ( a i x  bi )l i2 ( x )
 i ( x )  c i ( x  x i )l i2 ( x ) , i  0,1 ;
其中a i , bi , c i为待定系数,由  0( x0 )  1,  0( x0 )  0知 a0 ,b0
满足
a0 x0  b0  1

a0  2( a0 x0  b0 )l 0 ' ( x0 )  0
解之得
1
a 0  2l 0 ' ( x 0 )  2
x 0  x1
1
b0  1  2 x 0 l 0 ' ( x 0 )  1  2 x 0
x 0  x1
§4 Hermite Interpolation

故 x  x0 x  x1 2
 0 ( x )  (1  2 )( )
x0  x1 x0  x1

类似可以求得
x  x1 x  x0 2
 1 ( x )  (1  2 )( ),
x1  x0 x1  x0
x  x1 2 x  x0 2
 0 ( x )  ( x  x0 )( ) ,  1 ( x )  ( x  x1 )( )
x0  x1 x1  x0
于是
x  x0 2 x  x1 2
H 3 ( x )  y0 (1  2 ) l 0 ( x )  y1 (1  2 ) l1 ( x )
x0  x1 x1  x0
 m0 ( x  x0 )l 02 ( x )  m1 ( x  x1 )l12 ( x )

注: α
i
i (x)  1 (特别的, f(x)=1 )
§4 Hermite Interpolation
 2. 三点三次带一个导数值的插值多项式
假设给定的函数表如下:
x x0 x1 x2
f (x ) y0 y1 y2
f ' ( x) m1
要求三次多项式 H 3 ( x) , 使
 H 3 ( xi )  yi


(i  0,1,2)
 H 3 ( x1 )  m1
利用满足三个条件的 Newton 插值多项式,我们设
H 3 ( x )  y0  f [ x0 , x1 ]( x  x0 )  f [ x0 , x1 , x 2 ]( x  x0 )( x  x1 )
 k ( x  x0 )( x  x1 )( x  x 2 )
§4 Hermite Interpolation

其中 k为待定系数,显然 H 3 ( x) 满足前三个插值条件,
利用第四个条件确定常数 k ,于是

H 3 ' ( x1 )  f [ x0 , x1 ]  f [ x0 , x1 , x 2 ]( x1  x0 )
 k ( x1  x0 )( x 2  x1 )  m1
m1  f [ x0 , x1 ]  f [ x0 , x1 , x 2 ]( x1  x0 )
k
( x0  x1 )( x1  x 2 )

将其代入,即可得到 H 3 ( x)的表达式 :

H 3 ( x )  y0  f [ x0 , x1 ]( x  x0 )  f [ x0 , x1 , x 2 ]( x  x0 )( x  x1 )
m1  f [ x0 , x1 ]  f [ x0 , x1 , x 2 ]( x1  x0 )
 ( x  x0 )( x  x1 )( x  x 2 )
( x0  x1 )( x1  x 2 )
§4 Hermite Interpolation

一般地,已知 x0 , …, xn 处有 y0 , …, yn 和 y0’ , …, yn’ ,求 H2n


+1(x) 满足 H2n+1(xi) = yi , H’2n+1(xi) = yi’ 。
(x  xj )
li ( x )  
n n
解:设 H2n+1 ( x )   yαi i ( x )   yi’β i ( x ) ( xi  x j )
i 0 i 0 ji

其中 α i(xj) = ij , αi’(xj) = 0, βi (xj) = 0, β i’(xj) = ij



αi(x) 有零点 x0 , …, xi , …, xn 且都是 2 重零点 α i ( x )  ( Ai x  Bi )l i ( x )
2


由余下条件 α i(xi) = 1 和 αi’(xi) = 0 可解 Ai 和 Bi
  ( x )  [1  2l ( x )( x  x )] l 2 ( x )
i i i i i

βi (x) 有零点 x0 , …, xn, 除了 xi 外都是 2 重  βi ( x)  Ci ( x  xi ) li2(x)


这样的 Hermite 插值唯
零点
又 : βi ’(xi) =一
1  Ci = 1 βi ( x )  ( x  x i ) li2(x)
2
f ( 2 n 2 ) ( x )  n 
设 a  x0  x1  ...  xn  b, f  C [a , b] 则 Rn ( x ) 
( 2n  2)! 
2n
( x  x )
i 
i 0 
§4 Hermite Interpolation

Quiz: 给定 xi = i +1, i = 0, 1, 2, 3, 4, 5. 下面哪个是 β2(x) 的图像?

y y 
1-
斜率 =
1-

0.5 - 1

0.5-
0 1 2 3 4 5 6 x
-

0 1 2 3 4 5 6 x

HW: p.50
#10 , #11 ,
§5 分段低次插值 /* piecewise polynomial approximation *
/在区间[a , b] 上用插值多项式Pn ( x ) 近似函数f ( x ) ,是否Pn ( x ) 的
次数越高,逼近效果越好呢,回答是否定的。由于次数越高
计算工作量也越大,积累误差也越大;在整个区间上作个高
次多项式,当局部插值节点的值有微小误差时,就可能引起
整个区间上函数值的较大变化,使计算不稳定。
1
例:在 [5, 5] 上考察f ( x ) 
1  x2

xi  5  10 i ( i  0, ... , n)
n
Ln(x)2.5。取 Remember what I have said?
2
(x) 
 f (x)
Lnpolynomial
Increasing the degree of interpolating
will NOT guarantee a good result,
1.5 since high-degree polynomials are
oscillating.
1
n 越大,
0.5
端点附近抖动
0
越大,称为
Runge 现象
-0.5
-5 -4 -3 -2 -1 0 1 2 3 4 5
§5 piecewise polynomial approximation
分段低次插值
 分段线性插值 /* piecewise linear interpolation
*/ 所谓的分段线性插值就是通过插值点用折线段连接起来
a  x0  x1    xn  b 上函数值f 0 , f1 , , f n ,
逼近 f ( x ) . 设已知节点

hk  xk 1  xk , h  max hk
k
求一折线函数 I h ( x )满足
(1) I h ( x )  C [a , b],
( 2) I h ( xk )  f k ( k  0,1, , n)
( 3) I h ( x ) 在每个小区间[ xk , xk 1 ]上都是线性函数。
则称 I h ( x )为分段线性插值函数。

n
I h ( x )   f k lk ( x )
k 0
§5 piecewise polynomial approximation

由定义可知 I h (x) 在每个小区间上可表示为


x  x k 1 x  xk
Ih ( x)  fk  f k 1 , x  [ x k 1 , x k ]
x k  x k 1 x k 1  x k
x  x k 1 x  xk
Ih ( x)  fk  f k 1 , x  x)k具有局部非零性
l k [( x , x k 1 ] ,
x k  x k 1 x k 1  x k
故I h ( x )数值计算是
 x  x k 1 稳定的。
 x  x , x k-1  x  x k ( k  0)
 k k 1
1 lk ( x )
 x  x k 1
lk ( x )   , x k  x  x k 1 ( k  n)
 x k  x k 1
0, x  [a , b], 但x  [ x k 1 , x k 1 ].

 x k 1 xk x k 1
一致
记 h  max | x k 1  x k | h  0 ,易证:
Ih ( x)  f ( x)
当 失去了原函数的光滑性。 时,
§5 piecewise polynomial approximation

 分段三次 Hermite 插值 /* Hermite piecewise polynomial


s */
分段线性插值函数 I h (x ) 的导数是间断的,若在节点
xk ( k  0,1, , n) 上除已知函数值 f k 外还给出导数值 f 'k  m k
这样就可以构造一个导数连续的分段插值多项式函数 I h (x ),
它满足
(1) I h  C 1 [a , b],
( 2) I h ( xk )  f k , I 'h ( xk )  f 'k ( k  0,1, , n)
( 3) I h ( x ) 在每个小区间 [ xk , xk 1 ]是三次多项式
设 n
I h ( x)   [ f ( xk ) k ( x)  f ' ( xk )  k ( x)]
k 0
§5 piecewise polynomial approximation

根据两点三次插值多项式。可知,在区间 [ xk , xk 1上的
] I h (x )
表达式为

x  xk 1 2 x  xk
Ih ( x)  ( ) (1  2 ) fk
x k  xk 1 xk 1  xk
x  xk 2 x  xk 1
( ) (1  2 ) f k 1
x k 1  xk xk  xk 1
x  xk 1 2
( ) ( x  xk ) f 'k
x k  xk 1
x  xk 2
( ) ( x  xk 1 ) f ' k 1
x k 1  xk
§5 piecewise polynomial approximation

 x  x 
2
 x  xk 
于是:  k 1
  1  2  x  [ x k 1 , x k ]
 x k  x k  1   x k 1  x k 

 x  x 
2
 x  xk 
 k ( x )   k 1
  1  2  x  [ x k , x k 1 ]

 kx  x   x  x
k 1   k 1 k 


0 else
 x  x 
2

 k 1
  x  x k  x  [ x kHow
1 , x k ]
can we make a
 x k  x k  1  smooth interpolation

 2
 k ( x )   x  x k 1   x  x  x  [ x without, x ]
asking too
 x k  x k 1 
k k k 1
much from f ?

 Headache …
0 else
导数一般不易得到。

You might also like