第 5 章数值积分与数值微分 在科研与工程实践中,经常需要求解函数的积分或导数,但在很多情况 下,已知的函数关系只是一个数据表或者复杂的解析式,难以得到用于求解 积分值的原函数,或者难以直接求解导数,因而不能实际计算积分值或导数 值。于是,数学家回归微积分本源,用求和来近似积分,用有限差分来近似微 分,创造出数值求解法。 构造数值积分公式的常用方法是用积分区间上的 n 次插值多项式代替 被积函数,导出插值型求积公式,当结点等距分布时称为牛顿-科茨公式。梯 形公式与抛物线公式是最基本的近似公式,其精度较差;龙贝格算法是在区 间逐次分半过程中,对梯形公式近似值加权平均求得精确度较高的积分值的 方法,可在等距分布时获得简练易用且稳定性好的求积公式;当用不等距结 点计算时,常用高斯型求积公式,其准确度高、稳定性好且可计算无穷积分。 数值微分是用函数值及其他已知信息来估算函数导数的方法。可以根 据函数在某些离散点上的值来推算某点的导数或高阶导数的近似值,通常用 差商代替微商,或用一个简单的可微函数(多项式、样条函数等)的导数近似 代替待解的函数导数。 5.机械求积法 1 计算连续函数f(x)在[b] 只要找到f(的原函数F( a,内的定积分时, x) x) (F'(x)=f(x)), 即可由牛顿-莱布尼茨(Newton-Leibniz)公式 ∫bf(x)xF(-F( d=b)a) a 求得定积分 I(f)= bf(x)dx 但是,当被积函数f(x)未知或其原函∫数(a) F(x)过于复杂时,可以使用机械求 积法。这种方法的特点是,直接通过一些离散结点上的函数值f(xi)的线性 组合来计算定积分的近似值。这种方法将定积分计算归结为函数值计算,避 开了寻找原函数的麻烦,也为编程序求解积分近似值提供了可行性。 0  数值计算方法——人工智能、大数据分析的数学基础 5.1.1 数值求积基本思想 计算定积分时,被积函数f(x)的表现形式多种多样,原函数F(x)也五花八门,往往需 要甚至不得不利用某种数值计算方法来求解定积分的近似值。 1. 难解问题 实际的待解问题中,有如下3种常见的难解问题。 (1)被积函数f(x)是用函数表或图形给出的,没有解析表达式,因而不能使用牛顿-莱 布尼茨公式求解。 (2)f(x)的原函数F(x)不能用初等函数的有限形式表示,如 ∫1sinxx,∫10-x de2dx 等,因而无法套用牛顿-莱布尼茨公式(0) 求解。(x) (3)虽然原函数能用初等函数表示,但其表达式非常复杂。例如, f(x)=x22x2+3 积分后的原函数为 1 162 计算定积分的值非常困难,因而不便使用牛顿-莱布尼茨公式求解。 F(x) = 4x22x2+3+ 3 x 2x2+3-9ln(2x+x22x2+3) 16 2. 定积分的几何意义 依据积分第一中值定理,如果f(x)在[a,上连续,则至少存在一点ξ∈[a, b] b], 使得 d=ξ)(a) ∫baf(x)xf(b 其几何意义如图5-1所示。 上面的f(x)是一个非负函数,y=f(x)在[a,b] 上的曲边梯形面积等于以f(ξ)为高、[b] a,为底的矩 b 形的面积。而1∫f(x)dx 可理解为f(x)在区间 b-aa [b]上所有函数值的平均值。这是广义的有限个数 a, 的算术平均数。可见,找到一种f(的近似手段即 可 图5- 1 积分第一中值定理的几何意义估计函数积分的结果。 ξ) ξ) 注:f(为f(在区间[b] 只 ξ) x) a,上的平均高度, 要找到一种求解f(的算法,就获得了一种数值求积方法了。 3. 机械求积 积分区域两端点函数值的算数平均数近似f( 如果用f(x) f(a) 2 +f(b) ξ) ξ)≈f( 则积分结果近似为 badb-)f()+f( ∫f(x) x ≈(b2 a) a 第5 章 数值积分与数值微分 1 21 这就是梯形公式。如果用区间中点的函数值近似f(ξ) f(ξ)≈f a +b 2 . è . . . ÷ 则积分结果近似为 ∫b af(x)dx ≈ (b-a)f a +b 2 . è . . . ÷ 这就是中矩形公式。梯形公式和中矩形公式的区别如图5-2所示。 图5-2 梯形公式与中矩形公式的区别 更复杂一点,可同时使用区间两端点、中点的函数值作为平均高度f(ξ)的近似值 f(ξ)≈16 f(a)+46 f a +b 2 . è . . . ÷ +16 f(b) 则积分结果近似为 ∫b af(x)dx ≈b-a 6 f(a)+4f a +b 2 . è . . . ÷ +f(b) é . êê ù . úú 这就是辛普森公式。 更一般地,在区间[a,b]上适当选取n+1个结点(xi,f(xi)),i=0,1,2,…,n,加权平 均得到f(ξ)的估计值,即可构造出求积公式 ∫b af(x)dx ≈ Σn i=0 Aif(xi) 其中,xi 为求积结点;Ai 为求积系数。由于Ai 的值仅与结点xi 的选取有关,而不依赖于 被积函数f(x),因此求积公式具有通用性。 例5-1 设积分区间[a,b]为[0,2],取f(x)=1、x、x2、x3、ex ,分别用梯形、中矩形与辛 普森公式求解定积分。 解:计算定积分的梯形、中矩形与辛普森公式分别为 ∫2 0 f(x)dx ≈f(0)+f(2) ∫2 0 f(x)dx ≈2f(1) ∫2 0 f(x)dx ≈13 [f(0)+4f(1)+f(2)] 代入不同的被积函数,求得定积分的近似值如表5-1所示。 2  数值计算方法——人工智能、大数据分析的数学基础 表5- 1 定积分求值结果 f(x) 1 x x2 x3 ex 精确值2 2 2.67 4 6.389 梯形公式求值2 2 4 8 8.389 中距形公式求值2 2 2 2 5.436 辛普森公式求值2 2 2.67 4 6.421 可以看出,当f(x)=x2、x3、ex 时,辛普森公式比梯形公式与中矩形公式更精确。 5.1.2 代数精度 为了保证计算精度,自然希望求积公式对于“尽可能多”的函数都是准确的,可以通过代 数精度来评判求积公式。 1. 代数精度的概念 如果某个求积公式对于次数不大于 m 的多项式均能准确成立,但用于 m +1 次多项式 却不一定准确,则称该求积公式具有 m 次代数精度。 由于次数不大于 m 的多项式可以表示为 xm f(x)=a0+a1x+a2x2+ …+am 故当验证求积公式的代数精度时,只需验证该求积公式对 xm , xm+1 是否成立即可。 f(x)=1,x,x2,…, 例5- 2 验证梯形求积公式的代数精度。 解:梯形求积公式 x) x ≈b-a[f(b)] a (1)当f(x)=1时∫bf(d2 a)+f( 1dx=b-a, b-a[1+1]=b-a ∫ba2 因为左式=右式,所以公式准确成立。 (2)当f(x)= x 时 b 1 ∫xdx 2(-a2) =b2 a b-a(1(-a2) 因为左式=右式,所以公式准确成立。 (3)当f(x)=x2 时 21 ab+ 3b) = 2b2 ∫bx2dx= (-a3) a 3b- 2 a(a2b2)21(a2+b2)(a+b) - = 第5 章 数值积分与数值微分 1 23 因为左式≠右式,所以公式不成立。 综上所述,梯形求积公式具有一次代数精度。 可以验证,中矩形公式具有一次代数精度,辛普森公式具有三次代数精度。一般地,机 械求积公式 ∫b af(x)dx ≈ Σn k=0 Akf(xk) 中包含2n+2个参数xk 、Ak ,k=0,1,2,…,n。适当选择这些参数,可使求积公式具有不同 的代数精度。 2.求积系数Ai 一般地,要使求积公式具有m 次代数精度,只要令其对于f(x)=1,x,x2,…,xm 均能 准确成立,也就是说,对给定n+1个互异结点xi(i=0,1,2,…,n),相应的求积系数Ai 满 足条件 A0 +A1 + … +An =b-a A0x0 +A1x1 + … +Anxn =b2 -a2 2 . A0xm 0 +A1xm 1 + … +Anxm n =bm+1 -am+1 m +1 ì . í .... .... 如果事先选定结点xk ,取m =n,则有 A0 +A1 + … +An =b-a A0x0 +A1x1 + … +Anxn =b2 -a2 2 . A0xn0 +A1xn1 + … +Anxnn =bn+1 -an+1 n +1 ì . í .... .... 这是关于Ak 的线性方程组,其系数行列式为范德蒙德行列式。当xi(i=0,1,2,…,n)互异 时,其值非零。可通过克拉默法则唯一求得Ai(i=0,1,2,…,n),进而构造出数值求积公 式。但是,这种方法的计算量非常大,如果采用插值多项式来构造数值求积公式,则会减少 计算量。 例5-3 确定求积系数,使得 ∫1 -1 f(x)dx ≈Af(-1)+Bf(0)+Cf(1) 具有最高的代数精度。 解:分别取f(x)=1,x,x2,x3,则有方程组 A +B +C =2 -A +C =0 A +C =23 ì . í .. . .. 解之,并构造求积公式为∫ 1 -1 f(x)dx ≈13 f(-1)+43 f(0)+13 f(1) 1 24  数值计算方法——人工智能、大数据分析的数学基础 该公式对于f(x)=1,x,x2 都准确成立,对于f (x)=x4 就不准确了,故具有三次代数 精度。 5.1.3 插值型求积公式 由于区间[a,b]上的函数f(x)可以用该区间上n+1个点(xi,f(xi)),i=0,1,2,…,n 的n 次插值多项式Pn(x)来近似替代,故f(x)在区间[a,b]上的积分就可以用该区间上的 插值多项式Pn(x)来近似替代。 1.构造求积公式 给定f(x)的一组互异结点xi(i=0,1,2,…,n),相应的函数值分别为f(xi),i=0,1, 2,…,n,则可构造拉格朗日插值多项式 Ln(x)=Σn i=0 li(x)f(xi)=Σn i=0 Πn j=0 j≠i x -xj xi -xj . è . . .÷f(xi) 由于代数插值多项式Ln(x)的原函数容易求出,因此可取 ∫b af(x)dx ≈∫b a Ln(x)dx =∫b aΣn i=0 li(x)f(xi)dx =Σn i=0∫b aΣn i=0 ( li(x)dx )f(xi) 故有插值型求积公式 ∫b af(x)dx ≈ Σn i=0 Aif(xi) 该式中 Ai =∫b a li(x)dx =∫b aΠn j=0 j≠i x -xj xi -xjdx 2.求积公式的代数精度 插值型求积公式的余项为 R[f]=∫b a fn+1(ξ) (n +1)! Πn j=0(x -xj)dx 当被积函数f(x)取次数不超过n 次的多项式时 因为fn+1(x)=0 所以余项R[f]=0 这说明插值型求积公式对一切次数不超过n 次的多项式都精确成立。可见,含有n+1个 互异结点xi(i=0,1,2,…,n)的插值型求积公式至少具有n 次代数精度。 反之,如果插值型求积公式至少具有n 次代数精度,则它对于n 次插值基函数li(x),i =0,1,2,…,n 也是准确成立的,即 ∫b a li(x)dx =Σn j=0 Ajli(xj)dx =Ai 可见,至少具有n 次代数精度的求积公式必为插值型的。 综上所述,数值型求积公式为插值型求积公式的充分必要条件是,该公式至少具有n 次代数精度。 例5-4 已知3个求积结点的函数值分别为x0=14 、x1=12 、x2=34 ,据此构造区间[0, 1]内的插值型求积公式;分析其代数精度,并用于计算∫1 0 x3dx。 第5 章 数值积分与数值微分 1 25 解:(1)求得过3个已知点的拉格朗日插值多项式 p2(x)= (x -x1)(x -x2) (x0 -x1)(x0 -x2)f(x0)+ (x -x0)(x -x2) (x1 -x0)(x1 -x2)f(x1)+ (x -x0)(x -x1) (x2 -x0)(x2 -x1)f(x2) 故有求积公式 ∫1 0 f(x)dx ≈∫1 0 p2(x)dx =A0f(x0)+A1f(x1)+A2f(x2) 该式中 A0 =∫1 0 (x -x1)(x -x2) (x0 -x1)(x0 -x2)dx =∫1 0 (x -1/2)(x -3/4) (1/4-1/2)(1/4-3/4)dx =23 A1 =∫1 0 (x -x0)(x -x2) (x1 -x0)(x1 -x2)dx =∫1 0 (x -1/4)(x -3/4) (1/2-1/4)(1/2-3/4)dx =13 A2 =∫1 0 (x -x0)(x -x1) (x2 -x0)(x2 -x1)dx =∫1 0 (x -1/4)(x -1/2) (3/4-1/4)(3/4-1/2)dx =23 求得插值型求积公式为 ∫1 0 f(x)dx ≈23 f 14 . è . . . ÷ +13 f 12 . è . . . ÷ +23 f 34 . è . . . ÷ (2)由于这个积分公式是求解二次插值函数积分的结果,故至少具有二次代数精度。 代入f(x)=x3、f(x)=x4。 因为∫1 0 x3dx =14 =23 f 14 . è . . . ÷ 3 +13 f 12 . è . . . ÷ 3 +23 f 34 . è . . . ÷ 3 又因为∫1 0 x4dx =15 ≠23 f 14 . è . . . ÷ 4 +13f 12 . è . . . ÷ 4 +23 f 34 . è . . . ÷ 4 所以该求积公式具有三次代数精度。 (3)∫1 0 x3dx ≈23 f 14 . è . . . ÷ 3 +13 f 12 . è . . . ÷ 3 +23 f 34 . è . . . ÷ 3 =14 因为求积公式具有三次代数精度。 所以14 实际上是∫1 0 x3dx 的精确值。 5.2 牛顿-科茨求积法 如果将积分区间[a,b]划分为n 等份,记步长h=b-a n ,选取等距结点xi=a+ih(i= 0,1,2,…,n),则当对应函数值f(xi)已知时,以这些等距结点所导出的插值型求积公式 I(f)=∫b af(x)dx ≈ (b-a)Σn i=0 C(n) i f(xi) 称为n 阶牛顿-科茨(Newton-Cotes)求积公式。其中,C(n) i 称为科茨系数。 6  数值计算方法——人工智能、大数据分析的数学基础 5.2.1 科茨系数及求积公式 与插值型求积公式比较,可知 Ci(n) a)Ai= ( 1 a) baΠ(n) x-xj dx=1(b- j≠ i 为简化计算,做变换xi=a+th,则有 b-∫j=0xi-xj =t,t-h,(j) dxhdx -xj =(j)xi-xj=i- h 从而有 Ci(n) = 1 b (x-x0)(-x1)…(-xi-1)(-xi+1)…(-xn )dxb-a∫ a (x0)(x1)…((x) 1)(x(x) i-xi+1)…((x) ) xi-xi-(x) xi-xi-xi-xn t-1)…(i+1)(i-1)…(n) nt(t-t-t-hn dt n ∫i(…2×1× (-2)…(ni)) =hb-a0 i-1)-1) × (-(-h n- i n ni!(i)!∫0 t-1)…(i+1)(i-1)…(n) t n = (-1)t(t-t-t-d 即科茨系数 C(n)(-1)(j)dt i =i!( ni- i )!∫ n Π(n) t nn-0j=0 j≠ i 可以看出,科茨系数只依赖于被积区间[b] 与积分区间[b] x) a,的等分数n, a,及被积函数f( 都无关。只要给出等分数n,就能求得Ci(n),从而写出相应的牛顿-科茨求积公式。 表5-2列出了科茨系数表起始部分 n 从1到7的科茨系数。可以看出,科茨系数对 i n 具有对称性,即C() () 并且其代数和为1,即Σ () 1。 ni=Cnn-i; Cni= i=0 表5- 2 n=1~7的科茨系数 n 1 1 2 1 2 2 1 6 2 3 1 6 3 1 8 3 8 3 8 1 8 4 7 90 16 45 2 15 16 45 7 90 5 19 288 25 96 25 144 25 144 25 96 19 288 6 41 840 9 35 9 280 34 105 9 280 9 35 41 840 7 751 17280 3577 17280 1323 17280 2989 17280 2989 17280 1323 17280 3577 17280 751 17280 当n=8时,科茨系数会出现负数,对应求积公式的稳定性得不到保证。而且,对于高 次插值多项式来说,收敛性一般不成立。故实际计算中一般不会使用高阶牛顿-科茨求积 公式,实用的仅仅是 n 不大于4的低阶公式。 第5 章 数值积分与数值微分 1 27 当n=1时,C(1) 0 =C(0) 1 =12 ,牛顿-科茨求积公式为 ∫b af(x)dx ≈ (b-a)12 f(a)+12 f(b) é . êê ù . úú =b-a 2 [f(a)+f(b)] 这就是梯形求积公式。 当n=2时,C(2) 0 =C(2) 2 =16 ,C(2) 1 =46 ,牛顿-科茨求积公式为 ∫b af(x)dx ≈ (b-a)16 f(a)+46 f a +b 2 . è . . . ÷ +16 f(b) é . êê ù . úú =b-a 6 f(a)+4f a +b 2 . è . . . ÷ +f(b) é . êê ù . úú 这就是辛普森求积公式。 当n=4时, C0(4)=C4(4)= 7 90, C1(4)=C3(4)=16 45, C2(4)= 2 15 牛顿-科茨求积公式为 ∫b af(x)dx ≈b-a 90 [7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)] 这个公式称为科茨求积公式。该式中xi =a+ih(i=0,1,2,3,4),h=b-a 4 。这是在等距 结点条件下的插值型求积公式,至少具有n 次代数精度;当n 为偶数时,则可以达到n+1 次代数精度。 5.2.2 低阶求积公式的误差估计 牛顿-科茨求积公式的余项就是插值型求积公式的余项 R[f]=∫b a fn+1(ξ) (n +1)! Πn j=0(x -xj)dx 当n=1时,有 R1[f]=I[f]-T1 =1 2∫b afn(ξ)(x -a)(x -b)dx 由于(x-a)(x-b)≤0,在[a,b]上不变号,故依积分加权平均值定理,存在η∈(a,b),使 R1[f]=f″(η) 2∫b a(x -a)(x -b)dx =- (b-a)3 12 f″(η), η ∈ (a,b) 这就是梯形求积公式的截断误差。 当n=2时,有 R2[f]=∫b a f.(ξ) 3! (x -a)x -a +b 2 . è . . . ÷ (x -b)dx 由于(x-a)x-a+b 2 . è .. . ÷ (x-b)在[a,b]上不保号,即符号可正可负,无法直接应用积分加 权平均值定理。但因辛普森求积公式具有三次代数精度,对于满足插值条件 H (a)=f(a), H (b)=f(b) {H (c)=f(c), H'(c)=f'(c),c=a +b 2 1 28  数值计算方法——人工智能、大数据分析的数学基础 的三次插值多项式H (x)能准确成立,故有 ∫b a H (x)dx =b-a 6 [H (a)+4H (c)+H (b)] 由插值条件式可知,这个积分值实际上等于辛普森求积公式求得的积分值,从而有 R2[f]=I[f]-S1 =∫b a[f(x)-H (x)]dx 通过埃尔米特插值的余项公式,求得 R2[f]=∫b a f4(ξ) 4 (x -a)(x -c)2(x -b)dx 由于(x-a)(x-c)2(x-b)在[a,b]上保号(非正),故依积分中值定理得 R2[f]=f(4)(η) 4! ∫b a(x -a)(x -c)2(x -b)dx =- (b-a) 180 b-a 2 . è . . . ÷ 4 f(4)(η), η ∈ (a,b) 这就是辛普森求积公式的截断误差。 类似地,可以求出科茨求积公式的截断误差为 R4[f]=I[f]-C1 =2(b-a) 945 b-a 4 . è . . . ÷ 6 f(6)(η), η ∈ (a,b) 例5-5 如果f″(x)≥0,证明用梯形求积公式求解定积分 I =∫b af(x)dx 得到的值大于准确值,并说明其几何意义。 证明:由梯形公式余项 R[f]=- (b-a)3 12 f″(η), η ∈ (a,b) 可知,如果f(x)>0,则R[f]<0,于是 I =∫b af(x)dx =T +R[f]0,因而f(x) 为下凸函数,梯形面积大于曲边梯形面积。证毕。 例5-6 分别用梯形求积公式、辛普森求积公式与牛顿-科茨求积公式求解定积分 I =∫1 0.5 xdx 的近似值,并与准确值比较。 解:(1)用梯形公式计算 ∫1 0.5 xdx ≈1-0.5 6 [f(0.5)+f(1)]=0.25× [0.70711+1]≈0.4267767 (2)用辛普森公式计算 ∫1 0.5 xdx ≈1-0.5 6 [0.5+4× 0.5+1 2 + 1]=0.43093403