- 计算数值积分时,通常将积分节点取为积分区间的等分点,此时的积分公式称为Newton-Cotes公式。
牛顿-柯特斯公式.
- 将积分区间 [ a , b ] [a,b] [a,b] 进行 n n n 等分,步长 h = b − a n h=\frac{b-a}{n} h=nb−a,选取等距节点 { x k = a + k h ∣ k = 0 , 1 , . . . , n } \{x_k=a+kh|k=0,1,...,n\} {xk=a+kh∣k=0,1,...,n},令 x = a + t h ∣ t ∈ [ 0 , n ] x=a+th|t\in[0,n] x=a+th∣t∈[0,n],那么对应的求积系数推导如下: A k = ∫ a b l k ( x ) d x = ∫ a b ( x − x 0 ) ⋅ ⋅ ⋅ ( x − x k − 1 ) ( x − x k + 1 ) ⋅ ⋅ ⋅ ( x − x n ) ( x k − x 0 ) ⋅ ⋅ ⋅ ( x k − x k − 1 ) ( x k − x k + 1 ) ⋅ ⋅ ⋅ ( x k − x n ) d x = ∫ 0 n ∏ j = 0 , j ≠ k n ( t − j ) h ( k − j ) h h ⋅ d t = h ∫ 0 n ( t − 0 ) ( t − 1 ) ⋅ ⋅ ⋅ [ t − ( k − 1 ) ] [ t − ( k + 1 ) ] ⋅ ⋅ ⋅ ( t − n ) ( k − 0 ) ( k − 1 ) ⋅ ⋅ ⋅ [ k − ( k − 1 ) ] [ k − ( k + 1 ) ] ⋅ ⋅ ⋅ ( k − n ) d t = h ⋅ ( − 1 ) n − k k ! ( n − k ) ! ∫ 0 n t ( t − 1 ) ⋅ ⋅ ⋅ [ t − ( k − 1 ) ] [ t − ( k + 1 ) ] ⋅ ⋅ ⋅ ( t − n ) d t = ( b − a ) ⋅ ( − 1 ) n − k n ⋅ k ! ( n − k ) ! ∫ 0 n [ ∏ j = 0 , j ≠ k n ( t − j ) ] d t \begin{aligned} A_k&=\int_{a}^bl_k(x)dx \\ &=\int_{a}^b\frac{(x-x_0)···(x-x_{k-1})(x-x_{k+1})···(x-x_n)}{(x_k-x_0)···(x_k-x_{k-1})(x_k-x_{k+1})···(x_k-x_n)}dx\\ &=\int_0^n\prod^n_{j=0,j≠k}\frac{(t-j)h}{(k-j)h}h·dt\\ &=h\int_0^n\frac{(t-0)(t-1)···[t-(k-1)][t-(k+1)]···(t-n)}{(k-0)(k-1)···[k-(k-1)][k-(k+1)]···(k-n)}dt\\ &=h·\frac{(-1)^{n-k}}{k!(n-k)!}\int_0^nt(t-1)···[t-(k-1)][t-(k+1)]···(t-n)dt\\ &=(b-a)·\frac{(-1)^{n-k}}{n·k!(n-k)!}\int_0^n\left[\prod_{j=0,j≠k}^n(t-j)\right]dt \end{aligned} Ak=∫ablk(x)dx=∫ab(xk−x0)⋅⋅⋅(xk−xk−1)(xk−xk+1)⋅⋅⋅(xk−xn)(x−x0)⋅⋅⋅(x−xk−1)(x−xk+1)⋅⋅⋅(x−xn)dx=∫0nj=0,j=k∏n(k−j)h(t−j)hh⋅dt=h∫0n(k−0)(k−1)⋅⋅⋅[k−(k−1)][k−(k+1)]⋅⋅⋅(k−n)(t−0)(t−1)⋅⋅⋅[t−(k−1)][t−(k+1)]⋅⋅⋅(t−n)dt=h⋅k!(n−k)!(−1)n−k∫0nt(t−1)⋅⋅⋅[t−(k−1)][t−(k+1)]⋅⋅⋅(t−n)dt=(b−a)⋅n⋅k!(n−k)!(−1)n−k∫0n⎣⎡j=0,j=k∏n(t−j)⎦⎤dt
- 若令 C k ( n ) = ( − 1 ) n − k n ⋅ k ! ( n − k ) ! ∫ 0 n [ ∏ j = 0 , j ≠ k n ( t − j ) ] d t C^{(n)}_k=\frac{(-1)^{n-k}}{n·k!(n-k)!}\int_0^n\left[\prod_{j=0,j≠k}^n(t-j)\right]dt Ck(n)=n⋅k!(n−k)!(−1)n−k∫0n⎣⎡j=0,j=k∏n(t−j)⎦⎤dt称为柯特斯系数,可以发现该项只与积分节点数有关,可以事先算出组织成表。
柯特斯系数表.
- 柯特斯系数每一行求和是等于1的,即 ∀ n ∈ N , ∑ k = 0 n C k ( n ) = 1. \forall n\in N,\sum^n_{k=0}C^{(n)}_k=1. ∀n∈N,∑k=0nCk(n)=1.
- 并且柯特斯系数是关于中心对称的,奇数个节点关于中间值对称,偶数个节点关于中间位置对称。
梯形公式.
- 当 n = 1 n=1 n=1 时,等距节点选择为 x 0 = a , x 1 = b x_0=a,x_1=b x0=a,x1=b,因此积分公式为 I 1 ( f ) = ( b − a ) ∑ k = 0 1 C k ( 1 ) f ( x k ) = ( b − a ) [ 1 2 f ( a ) + 1 2 f ( b ) ] = b − a 2 [ f ( a ) + f ( b ) ] I_1(f)=(b-a)\sum^1_{k=0}C^{(1)}_kf(x_k)=(b-a)[\frac12f(a)+\frac12f(b)]=\frac{b-a}2[f(a)+f(b)] I1(f)=(b−a)k=0∑1Ck(1)f(xk)=(b−a)[21f(a)+21f(b)]=2b−a[f(a)+f(b)]
Simpson公式.
- 当 n = 2 n=2 n=2 时,等距节点选择为 x 0 = a , x 1 = a + b 2 , x 2 = b x_0=a,x_1=\frac{a+b}2,x_2=b x0=a,x1=2a+b,x2=b,因此积分公式为 I 2 ( x ) = ( b − a ) ∑ k = 0 2 C k ( 2 ) f ( x k ) = b − a 6 [ f ( a ) + 4 f ( a + b 2 ) + f ( b ) ] = S ( f ) I_2(x)=(b-a)\sum^2_{k=0}C^{(2)}_kf(x_k)=\frac{b-a}6[f(a)+4f(\frac{a+b}2)+f(b)]=S(f) I2(x)=(b−a)k=0∑2Ck(2)f(xk)=6b−a[f(a)+4f(2a+b)+f(b)]=S(f)
- 可以看出辛普森公示的几何意义即经过了点 ( a , f ( a ) ) , ( a + b 2 , f ( a + b 2 ) ) , ( b , f ( b ) ) (a,f(a)),(\frac{a+b}2,f(\frac{a+b}2)),(b,f(b)) (a,f(a)),(2a+b,f(2a+b)),(b,f(b)) 的抛物线所围成的曲边梯形的面积。
代数精度.
- 我们知道,形如 ∑ k = 0 f n f ( x k ) ∫ a b l k ( x ) d x \sum^n_{k=0f}f(x_k)\int_a^bl_k(x)dx k=0f∑nf(xk)∫ablk(x)dx 积分公式有 n n n 次积分精度。
- 考察 n = 2 n=2 n=2 时的辛普森公式,尝试对 f ( x ) = x 3 f(x)=x^3 f(x)=x3 使用辛普森公式积分,我们有 S ( f ) = b − a 6 [ a 3 + 4 ( a + b ) 3 8 + b 3 ] = 1 4 ( b 4 − a 4 ) S(f)=\frac{b-a}6[a^3+4\frac{(a+b)^3}8+b^3]=\frac14(b^4-a^4) S(f)=6b−a[a3+48(a+b)3+b3]=41(b4−a4)直接进行积分有 ∫ a b x 3 d x = 1 4 x 4 ∣ a b = 1 4 ( b 4 − a 4 ) \int_a^bx^3dx=\frac14x^4\bigg|^b_a=\frac14(b^4-a^4) ∫abx3dx=41x4∣∣∣∣ab=41(b4−a4)因此,实际上辛普森公式可以对 3 3 3 次多项式准确积分。
- 容易验证,辛普森公式对于 f ( x ) = x 4 f(x)=x^4 f(x)=x4 积分是不准确的,因此辛普森公式具有 3 3 3 次代数精度。
- 【定理】当 n = 2 k , k ∈ N n=2k,k\in N n=2k,k∈N 时,牛顿柯特斯公式具有 n + 1 n+1 n+1 阶代数精度。
- 【证明】要证明牛顿柯特斯公式在偶数阶时具有 n + 1 n+1 n+1 阶代数精度,只需要证明它对 f ( x ) = x n + 1 f(x)=x^{n+1} f(x)=xn+1 的积分余项为0即可。进行拉格朗日插值得到的余项为 R n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ω n + 1 ( x ) R_n(x)=\frac{f^{(n+1)(\xi)}}{(n+1)!}\omega_{n+1}(x) Rn(x)=(n+1)!f(n+1)(ξ)ωn+1(x),此时 f ( n + 1 ) ( x ) = ( n + 1 ) ! f^{(n+1)}(x)=(n+1)! f(n+1)(x)=(n+1)!,因此积分余项为 ∫ a b ω n + 1 ( x ) d x = ∫ a b ∏ j = 0 n ( x − x j ) d x \int^b_a\omega_{n+1}(x)dx=\int_a^b\prod^n_{j=0}(x-x_j)dx ∫abωn+1(x)dx=∫abj=0∏n(x−xj)dx在最开始我们有如下表示: x = a + t h ∣ t ∈ [ 0 , n ] ; x j = a + j h ∣ j = 0 , 1 , . . . , n x=a+th|t\in[0,n];x_j=a+jh|j=0,1,...,n x=a+th∣t∈[0,n];xj=a+jh∣j=0,1,...,n,因此上述积分余项可以写为 ∫ 0 n ∏ j = 0 n ( t − j ) h ⋅ d ( a + t h ) = h ( n + 2 ) ∫ 0 n ∏ j = 0 n ( t − j ) d t \int_0^n\prod^n_{j=0}(t-j)h·d(a+th)=h^{(n+2)}\int_0^n\prod^n_{j=0}(t-j)dt ∫0nj=0∏n(t−j)h⋅d(a+th)=h(n+2)∫0nj=0∏n(t−j)dt进行代换 t = u + n 2 ∣ u ∈ [ − n 2 , n 2 ] t=u+\frac n2|u\in[-\frac n2,\frac n2] t=u+2n∣u∈[−2n,2n],因此上述积分可以写为 h ( n + 2 ) ∫ − n 2 n 2 ∏ j = 0 n ( u + n 2 − j ) d u h^{(n+2)}\int_{-\frac n2}^{\frac n2}\prod^n_{j=0}(u+\frac n2-j)du h(n+2)∫−2n2nj=0∏n(u+2n−j)du考察被积函数 H ( u ) = ∏ j = 0 n ( u + n 2 − j ) = ∏ j = − n 2 n 2 ( u − j ) H(u)=\prod^n_{j=0}(u+\frac n2-j)=\prod^{\frac n2}_{j=-\frac n2}(u-j) H(u)=j=0∏n(u+2n−j)=j=−2n∏2n(u−j)可以发现 H ( u ) = − H ( − u ) H(u)=-H(-u) H(u)=−H(−u),被积是奇函数。因为奇函数在对称区间积分为0,所以上述代表积分余项的积分值为0,所以偶数阶的 n n n 次牛顿柯特斯公式具有 n + 1 n+1 n+1 次代数精度。
- 如此一来, n n n 次牛顿柯特斯公式计算简单,还拥有和 n + 1 n+1 n+1 次公式相同的代数精度,因此实际使用时大多选择偶数阶的牛顿柯特斯公式。考虑到数值稳定性,通常 n < 8. n<8. n<8.
积分余项.
- 从低阶NC公式,梯形公式、辛普森公式开始,最后给出一般形式的NC公式积分余项。
梯形.
- 插值余项: R 1 ( x ) = f ( 1 + 1 ) ( ξ ) ( 1 + 1 ) ! ω 1 + 1 ( x ) = f ′ ′ ( ξ ) 2 ( x − a ) ( x − b ) R_1(x)=\frac{f^{(1+1)(\xi)}}{(1+1)!}\omega_{1+1}(x)=\frac{f''(\xi)}2(x-a)(x-b) R1(x)=(1+1)!f(1+1)(ξ)ω1+1(x)=2f′′(ξ)(x−a)(x−b)
- 积分余项: ∫ a b f ′ ′ ( ξ ) 2 ( x − a ) ( x − b ) d x = ∫ b a F ( ξ ) G ( x ) d x \int_a^b\frac{f''(\xi)}2(x-a)(x-b)dx=\int^a_bF(\xi)G(x)dx ∫ab2f′′(ξ)(x−a)(x−b)dx=∫baF(ξ)G(x)dx
- 由于 ∀ x ∈ [ a , b ] , G ( x ) = ( x − a ) ( x − b ) < 0 \forall x\in[a,b],G(x)=(x-a)(x-b)<0 ∀x∈[a,b],G(x)=(x−a)(x−b)<0,假设原函数 f ( x ) f(x) f(x) 有连续的二阶导数,即 F ( ξ ) , ξ ∈ ( a , b ) F(\xi),\xi\in (a,b) F(ξ),ξ∈(a,b) 是连续的,那么根据积分第一中值定理: ∃ η ∈ [ a , b ] , ∫ b a F ( ξ ) G ( x ) d x = F ( η ) ∫ b a G ( x ) d x = f ′ ′ ( η ) 2 ∫ b a ( x − a ) ( x − b ) d x = − f ′ ′ ( η ) 12 ( b − a ) 3 = − h 3 12 f ′ ′ ( η ) \exist ~\eta\in[a,b],\int^a_bF(\xi)G(x)dx=F(\eta)\int^a_bG(x)dx=\frac{f''(\eta)}2\int^a_b(x-a)(x-b)dx=-\frac{f''(\eta)}{12}(b-a)^3=-\frac{h^3}{12}f''(\eta) ∃ η∈[a,b],∫baF(ξ)G(x)dx=F(η)∫baG(x)dx=2f′′(η)∫ba(x−a)(x−b)dx=−12f′′(η)(b−a)3=−12h3f′′(η)其中 h = b − a h=b-a h=b−a,是梯形公式的步长
- 【积分第一中值定理】若函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] 连续, g ( x ) g(x) g(x) 在 [ a , b ] [a,b] [a,b] 不变号且可积,那么至少存在一个点 η ∈ [ a , b ] \eta\in[a,b] η∈[a,b],使得 ∫ a b f ( x ) g ( x ) d x = f ( η ) ∫ a b g ( x ) d x \int_a^bf(x)g(x)dx=f(\eta)\int_a^bg(x)dx ∫abf(x)g(x)dx=f(η)∫abg(x)dx
辛普森.
- 辛普森公式是二阶NC公式,但具有三次代数精度。
- 插值余项: R 3 ( x ) = f ( 3 + 1 ) ( ξ ) ( 3 + 1 ) ! ω 3 + 1 ( x ) = f ( 4 ) ( ξ ) 24 ( x − a ) ( x − b ) ( x − a + b 2 ) 2 R_3(x)=\frac{f^{(3+1)(\xi)}}{(3+1)!}\omega_{3+1}(x)=\frac{f^{(4)}(\xi)}{24}(x-a)(x-b)(x-\frac{a+b}2)^2 R3(x)=(3+1)!f(3+1)(ξ)ω3+1(x)=24f(4)(ξ)(x−a)(x−b)(x−2a+b)2
- 积分余项: ∫ a b f ( 4 ) ( ξ ) 24 ( x − a ) ( x − b ) ( x − a + b 2 ) 2 d x = − h 5 90 f ( 4 ) ( η ) \int_a^b\frac{f^{(4)}(\xi)}{24}(x-a)(x-b)(x-\frac{a+b}2)^2dx=-\frac{h^5}{90}f^{(4)}(\eta) ∫ab24f(4)(ξ)(x−a)(x−b)(x−2a+b)2dx=−90h5f(4)(η)其中 η ∈ [ a , b ] . \eta\in[a,b]. η∈[a,b].
牛顿柯特斯.
- 【偶数阶】 R n ( f ) = h n + 3 f ( n + 2 ) ( η ) ( n + 2 ) ! ∫ 0 n t 2 ( t − 1 ) ⋅ ⋅ ⋅ ( t − n ) d t R_n(f)=\frac{h^{n+3}f^{(n+2)(\eta)}}{(n+2)!}\int^n_0t^2(t-1)···(t-n)dt Rn(f)=(n+2)!hn+3f(n+2)(η)∫0nt2(t−1)⋅⋅⋅(t−n)dt
- 【奇数阶】 R n ( f ) = h n + 2 f ( n + 1 ) ( η ) ( n + 1 ) ! ∫ 0 n t ( t − 1 ) ⋅ ⋅ ⋅ ( t − n ) d t R_n(f)=\frac{h^{n+2}f^{(n+1)(\eta)}}{(n+1)!}\int^n_0t(t-1)···(t-n)dt Rn(f)=(n+1)!hn+2f(n+1)(η)∫0nt(t−1)⋅⋅⋅(t−n)dt
数值稳定性.
- 在《数值积分》中证明过对于积分公式 ∫ b a f ( x ) d x = ∑ k = 0 n A k f ( x k ) \int^a_bf(x)dx=\sum^n_{k=0}A_kf(x_k) ∫baf(x)dx=k=0∑nAkf(xk)若 A k > 0 A_k>0 Ak>0 那么该积分公式是数值稳定的,即只要原始数据测量足够准确,积分结果就足够准确。
- Newton-Cotes公式在 n ≥ 8 n≥8 n≥8 时柯特斯系数出现负数,因此我们一般使用 n < 8 n<8 n<8 的牛顿柯特斯公式。