2.3 数值微分(9)
• 比向前差商和向后差商具有较高的精度!
2.中点方法的加速
由中点差商的余项展开式
h 2 ( 3) h 4 (5) f 'm ( a, h) f ' ( a ) f (a) f (a ) 3! 5! (2 1)
或
f 'm (a, h) f ' (a ) a1h 2 a2 h 4 a3h 6
例题
• 已知数据:x0=101、x1=102、x2=103, y0=10.04988、y1=10.0995、y2=10.14889。用三点 公式求f ’(101)的值。
解:h=x1-x0=x2-x1=1
1 (3 y0 4 y1 y2 ) f (101) p 2 ' (101) 2h 1 (3 10.04988 4 10.0995 10.14889) 2 0.049735
则
2 x x0 x2 2 x x0 x1 2 x x1 x2 p2 ( x ) y0 y1 y2 2 2 2 h 2h 2h
'
(3 6)
三点公式
2 x x0 x2 2 x x0 x1 2 x x1 x2 y0 p2 ( x ) y1 y2 2 2 2 h 2h 2h
两边对x求导数
(3 2)
f [ ( x)] f [ ( x)] f ' ( x ) pn ' ( x ) (n 1)! ( x x j ) (n 1)! ( x x j ) j 0 j 0
3.插值型求导公式
思路:利用插值多项式pn(x)进行求导。
f ( x ) pn ( x ) f ' ( x ) pn ' ( x )
插值多项式pn(x)的余项表达式
(3 1)
f ( n 1) [ ( x)] n f ( x ) pn ( x ) (x x j ) (n 1)! j 0
对于两节点x0和x1,令h= x1 - x0 ,得
x x0 x x1 p1 ( x) y0 y1 x0 x1 x1 x0
即
'
( x) x0 x1 x1 x0 h h
y1 y0 y1 y0 p1 ( x) h x1 x0
(2 2)
式中系数a1,a2, …均与步长h无关,若将h减半,则有
h a1 2 ˆ2 h 4 a ˆ3 h 6 f 'm ( a, ) f ' ( a ) h a 2 4 (2 3)
式中âk (k=2,3,…)也与h无关。
为了提高精度,可采用加权平均的方法构造新公式 如下: h 1 4 f 'm1 (a, h) f 'm (a, ) f 'm (a, h) (2 4) 3 2 3 这样可消去(2-2)和(2-3)两式右边h2项,得到
向后差商余项:
h h Rb (a, h) f 'b (a, h) f ' (a ) f ' ' (a ) f ' ' ' (a) 2! 3! h f ' ' (a) 2!
2
中点差商余项
• 中心差商余项:
f ( a h) f ( a h) Rm (a, h) f ' ( a ) f 'm ( a, h) f ' ( a ) 2h h 2 ( 3) h 4 (5) f (a) f (a) 3! 5! h 2 ( 3) f (a) 3!
• 向后差商:
f ( a ) f ( a h) f 'b (a, h) h f ( a h) f ( a h) f 'm ( a, h) 2h
• 中心差商:
近似平行于 向后差商 向前差商 中点差商
差商公式示意图
向前差商余项
• 泰勒展开公式:
h2 h3 f (a h) f (a ) hf ' (a ) f ' ' (a) f ' ' ' (a) 2! 3! [ f (a h) f (a )] h h2 f ' (a ) f ' ' (a ) f ' ' ' (a) h 2! 3! • 向前差商余项:
h h R f ( a, h) f ' f ( a, h) f ' ( a ) f ' ' ( a ) f ' ' ' (a) 2! 3! h f ' ' (a) 2!
2
向后差商余项
泰勒展开公式:
h2 h3 f (a h) f (a ) hf ' (a ) f ' ' (a ) f ' ' ' (a) 2! 3! [ f (a ) f (a h)] h h2 f ' (a) f ' ' (a) f ' ' ' (a) h 2! 3!
( n 1) n ( n 1) n
'
'
f
( n 1)
[ ( x)] (n 1)!
'
f ( n 1) [ ( x)] n n (x x j ) (x x j ) (n 1)! i 0 j 0 j 0
n j i
如果只是求某个节点x=xk(k=0,1,…)上的导数值,则上 式右边第一项为零。求得插值型求导公式余项如下:
'
三点公式的余项
由公式(3-3),可列出三点公式的余项表达式
f ( 3) ( k ) 2 f ( xk ) p 2 ( xk ) ( xk x j ) 3! j 0
jk
(3 7)
分别取k=0 、1 和 2,代入上式,得
f ' ' ' ( 0 ) f ' ' ' ( 0 ) 2 ( x0 x1 )( x0 x2 ) R 2 ( x0 ) h 3! 3 f ' ' ' (1 ) f ' ' ' (1 ) 2 ( x1 x0 )( x1 x2 ) R 2 ( x1 ) h 3! 6 f ' ' ' ( 2 ) f ' ' ' ( 2 ) 2 ( x2 x0 )( x2 x1 ) R 2 ' ( x2 ) h 3! 3 (3 8) (3 9) (3 10)
f ( n 1) ( k ) n n f ' ( xk ) p n ' ( xk ) ( xk x j ) (n 1)! i 0 j 0
j i
f ( n 1) ( k ) n ( xk x j ) (n 1)! j 0
jk
(3 3)
两点插值求导公式
f 'm1 (a, h) f ' (a) 1h 4 2 h 6 (2 5)
(2 6)
若令
16 h 1 f 'm 2 ( a, h) f 'm1 (a, ) f 'm1 (a, h) 15 2 15
则又可进一步展开式中的h4项,而有
f ' m 2 ( a , h ) f ' ( a ) 1h 6 2 h 8
( 2 7)
重复同样步骤,可以再构造新的中点差商如下:
64 1 h f 'm 3 ( a, h) f 'm 2 ( a, ) f 'm 2 ( a, h) 63 2 63 (2 8)
这种加速过程还可以继续下去,不过加速的效果将 越来越不显著。 例题:利用加速公式(2-4)、(2-6)和(2-8)求ex在x=1 处的导数值,设取h=0.8起算。 解:起算采用中点差商公式如下
e1 h e1 h f 'm (1, h) 2h
( 2 9)
计算结果列于下表,加速还是很显著的。
h 0.8 0.4 0.2 0.1 f ’m(1,h) 3.01765 2.79135 2.73644 2.72281 f ’m1(1,h) 2.715917 2.718137 2.719267 f ’m2(1,h) 2.718285 2.718276 f ’m3(1,h) 2.71828
'
(3 5)
三点插值求导公式
有三节点x0 、x1和x2,令h = x1 - x0 = x2 – x1 ,得
( x x0 )( x x2 ) ( x x0 )( x x1 ) ( x x1 )( x x2 ) p2 ( x ) y0 y1 y2 ( x0 x1 )( x0 x2 ) ( x1 x0 )( x1 x2 ) ( x2 x0 )( x2 x1 ) ( x x0 )( x x2 ) ( x x0 )( x x1 ) ( x x1 )( x x2 ) y0 y1 y2 2 2 2 2h h 2h
'
高阶差商公式
• 利用插值多项式pn (x)作为f (x)的近似函数,可以 建立高阶数值微分公式
f ( x ) pn ( x ) f ( k ) ( x ) pn ( x )
(k )
(3 11)
• 例如对公式(3-6)在求导一次,便可得到下列二阶 三点差商公式
1 f ' ' ( x1 ) 2 ( y0 2 y1 y2 ) h