当前位置: 代码迷 >> 综合 >> Newton-Cotes求积公式(一) | 一般形式 +公式稳定性 +截断误差与代数精度
  详细解决方案

Newton-Cotes求积公式(一) | 一般形式 +公式稳定性 +截断误差与代数精度

热度:20   发布时间:2023-12-21 14:01:44.0

1. Newton-Cotes公式的一般形式

对于 I = ∫ a b f ( x ) d x I=\int_a^bf(x)dx I=ab?f(x)dx,将区间 [ a , b ] [a,b] [a,b]分成n等份,步长为:
h = ( b ? a ) n h=\frac{(b-a)}{n} h=n(b?a)?
故求积节点 x k = a + k h ( k = 0 , 1 , 2 , ? , n ) x_k=a+kh(k=0,1,2,\cdots,n) xk?=a+kh(k=0,1,2,?,n),通过这 n + 1 n+1 n+1个节点构造一个n次代数多项式 p n ( x ) ? f ( x ) p_n(x) \cong f(x) pn?(x)?f(x)。令
x = a + t h ( t = 0 , 1 , 2 , ? , k , ? , n ) x=a+th \quad (t=0,1,2,\cdots,k,\cdots,n) x=a+th(t=0,1,2,?,k,?,n)
作积分变换
d x = h d t dx=hdt dx=hdt

x = a , t = 0 ; x = b , t = n x=a,t=0; \quad x=b,t=n x=a,t=0;x=b,t=n

A k = ∫ a b l k ( x ) d x A_k=\int_a^bl_k(x)dx Ak?=ab?lk?(x)dx计算求积系数 A k ( k = 0 , 1 , 2 , ? , n ) A_k(k=0,1,2,\cdots,n) Ak?(k=0,1,2,?,n),即:
A k = ∫ a b l k ( x ) d x = ∫ a b ∏ j = 0 , j ≠ k n x ? x j x k ? x j d x = ∫ 0 n ∏ j = 0 , j ≠ k n ( a + t h ) ? ( a + j h ) ( a + k h ) ? ( a + j h ) h d t = ∫ 0 n ∏ j = 0 , j ≠ k n t ? j k ? j h d t = h ∫ 0 n ∏ j = 0 , j ≠ k n t ? j k ? j d t A_k=\int_a^bl_k(x)dx=\int_a^b\prod^n_{j=0,j\neq k}\frac{x-x_j}{x_k-x_j}dx=\int_0^n\prod^n_{j=0,j\neq k}\frac{(a+th)-(a+jh)}{(a+kh)-(a+jh)}hdt \\ =\int_0^n \prod^n_{j=0,j\neq k}\frac{t-j}{k-j}hdt=h\int_0^n\prod_{j=0,j\neq k}^n\frac{t-j}{k-j}dt Ak?=ab?lk?(x)dx=ab?j=0,j??=kn?xk??xj?x?xj??dx=0n?j=0,j??=kn?(a+kh)?(a+jh)(a+th)?(a+jh)?hdt=0n?j=0,j??=kn?k?jt?j?hdt=h0n?j=0,j??=kn?k?jt?j?dt
因为
∏ j = 0 , j ≠ k n ( k ? j ) = k ( k ? 1 ) ? ( k ? ( k ? 1 ) ) ? ( k ? ( k + 1 ) ) ? ( k ? n ) = k ( k ? 1 ) ? 1 ? ( ? 1 ) ( ? 2 ) ? ( ? ( n ? k ) ) = k ! ( ? 1 ) n ? k ( n ? k ) ! \prod^n_{j=0, j\neq k}(k-j)=k(k-1)\cdots(k-(k-1))·(k-(k+1))\cdots (k-n)\\ =k(k-1)\cdots 1·(-1)(-2)\cdots (-(n-k))=k!(-1)^{n-k}(n-k)! j=0,j??=kn?(k?j)=k(k?1)?(k?(k?1))?(k?(k+1))?(k?n)=k(k?1)?1?(?1)(?2)?(?(n?k))=k!(?1)n?k(n?k)!
所以
A k = h ( ? 1 ) n ? k k ! ( n ? k ) ! ∫ 0 n ∏ j = 0 , j ≠ k n ( t ? j ) d t A_k=\frac{h(-1)^{n-k}}{k!(n-k)!}\int_0^n\prod_{j=0,j\neq k}^n(t-j)dt Ak?=k!(n?k)!h(?1)n?k?0n?j=0,j??=kn?(t?j)dt

C k = A k b ? a = A k n h = ( ? 1 ) n ? k n k ! ( n ? k ) ! ∫ 0 n ∏ j = 0 , j ≠ k n ( t ? j ) d t (1) C_k=\frac{A_k}{b-a}=\frac{A_k}{nh}=\frac{(-1)^{n-k}}{nk!(n-k)!}\int_0^n\prod_{j=0,j\neq k}^n(t-j)dt \tag{1} Ck?=b?aAk??=nhAk??=nk!(n?k)!(?1)n?k?0n?j=0,j??=kn?(t?j)dt(1)
C k C_k Ck?为Cotes(柯特斯)系数。故
∫ a b f ( x ) d x ? ( b ? a ) ∑ k = 0 n C k f ( x k ) (2) \int_a^bf(x)dx\cong (b-a)\sum_{k=0}^nC_kf(x_k) \tag{2} ab?f(x)dx?(b?a)k=0n?Ck?f(xk?)(2)
(1)式即为n阶的Newton-Cotes公式的一般形式。

如果给定n,则 C k C_k Ck?可由(1)式计算出来。下标给出了 n = 1 ? 10 n=1\sim 10 n=1?10的Cotes系数。应该注意

1)表中的系数 c k c_k ck?要乘倍率K,才是公式(1)和(2)中的 C k C_k Ck?。例如,当n=3时, C 0 = 1 8 , C 1 = 3 8 , C 2 = 3 8 , C 3 = 1 8 C_0=\frac{1}{8},C_1=\frac{3}{8},C_2=\frac{3}{8},C_3=\frac{1}{8} C0?=81?,C1?=83?,C2?=83?,C3?=81?

2)当n大于等于6时,表中未列出的系数可根据对称性得到。例如,当n=6时, C 6 = 41 840 C_6=\frac{41}{840} C6?=84041?

根据上述规则,可以写出 n = 4 n=4 n=4的Newton-Cotes公式如下:
∫ a b f ( x ) d x ? 1 90 ( b ? a ) [ 7 f ( x 0 ) + 32 f ( x 1 ) + 12 f ( x 2 ) + 32 f ( x 3 ) + 7 f ( x 4 ) ] \int_a^bf(x)dx \cong \frac{1}{90}(b-a)[7f(x_0)+32f(x_1)+12f(x_2)+32f(x_3)+7f(x_4)] ab?f(x)dx?901?(b?a)[7f(x0?)+32f(x1?)+12f(x2?)+32f(x3?)+7f(x4?)]
其中, x 0 = a , x 4 = b x_0=a,x_4=b x0?=a,x4?=b.

2. Newton-Cotes公式的稳定性

在Newton-Cotes公式(2)中,设计算函数值 f ( x k ) ( k = 1 , 2 , ? , n ) f(x_k)(k=1,2,\cdots,n) f(xk?)(k=1,2,?,n)所产生的舍入误差为 ? k ( k = 1 , 2 , ? , n ) \epsilon_k(k=1,2,\cdots,n) ?k?(k=1,2,?,n),则用Newton-Cotes公式计算积分的误差为:
η = ( b ? a ) ∑ k = 0 n C k f ( x k ) ? ( b ? a ) ∑ k = 0 n C k [ f ( x k ) + ? k ] = ( b ? a ) ∑ j = 0 n C k ? k \eta=(b-a)\sum_{k=0}^nC_kf(x_k)-(b-a)\sum_{k=0}^nC_k[f(x_k)+\epsilon_k]=(b-a)\sum_{j=0}^nC_k\epsilon_k η=(b?a)k=0n?Ck?f(xk?)?(b?a)k=0n?Ck?[f(xk?)+?k?]=(b?a)j=0n?Ck??k?
? = m a x 0 ≤ k ≤ n ∣ ? k ∣ \epsilon=max_{0\leq k\leq n}|\epsilon_k| ?=max0kn??k?,当Cotes系数全为正时 ( n ≤ 7 , n = 9 ) (n\leq 7,n=9) (n7,n=9),则
∣ η ∣ ≤ ( b ? a ) ∑ k = 0 n ∣ C k ? k ∣ ≤ ( b ? a ) ? ∑ k = 0 n ∣ C k ∣ = ( b ? a ) ? |\eta|\leq (b-a)\sum_{k=0}^n|C_k\epsilon_k|\leq (b-a)\epsilon \sum_{k=0}^n|C_k|=(b-a)\epsilon η(b?a)k=0n?Ck??k?(b?a)?k=0n?Ck?=(b?a)?
所以,Newton-Cotes公式是数值稳定的。如果Cotes系数有正有负,则 ∑ k = 0 n ∣ C k ∣ > 1 \sum_{k=0}^n|C_k|>1 k=0n?Ck?>1

随着n的增大,该值变得越来越大,并且对 ∣ η ∣ |\eta| η的影响越来越大,容易出现数值不稳定现象。因此,高阶 ( n ≥ 8 ) (n\geq 8) (n8)的Newton-Cotes公式在实际中很少应用。

3. 截断误差与代数精度

  1. 截断误差

Newton-Cotes公式是插值型求积公式,故其余项R是Lagrange插值多项式余项的积分:
R = ∫ a b f ( x ) d x ? ∑ i = 0 n A i f ( x i ) = ∫ a b f ( n + 1 ) ( ξ ) ( n + 1 ) ! ∏ i = 0 n ( x ? x i ) d x , ξ ∈ [ a , b ] R=\int_a^bf(x)dx-\sum_{i=0}^nA_if(x_i)=\int_a^b\frac{f^{(n+1)}(\xi)}{(n+1)!}\prod_{i=0}^n(x-x_i)dx, \quad \xi\in[a,b] R=ab?f(x)dx?i=0n?Ai?f(xi?)=ab?(n+1)!f(n+1)(ξ)?i=0n?(x?xi?)dx,ξ[a,b]

R = ∫ a b f ( n + 1 ) ( ξ ) ( n + 1 ) ! ∏ i = 0 n ( x ? x i ) d x , ξ ∈ [ a , b ] R=\int_a^b\frac{f^{(n+1)}(\xi)}{(n+1)!}\prod_{i=0}^n(x-x_i)dx, \quad \xi \in [a,b] R=ab?(n+1)!f(n+1)(ξ)?i=0n?(x?xi?)dx,ξ[a,b]
做积分变换 x = a + t h , d x = h d t , x = a , t = 0 ; x = b , t = n x=a+th,dx=hdt,x=a,t=0;x=b,t=n x=a+th,dx=hdt,x=a,t=0;x=b,t=n,有:
R = ∫ 0 a f ( n + 1 ) ( ξ ) ( n + 1 ) ! ( a + t h ? a ? 0 h ) ( a + t h ? a ? 1 h ) ? ( a + t h ? a ? n h ) h d t R=\int_0^a\frac{f^{(n+1)}(\xi)}{(n+1)!}(a+th-a-0h)(a+th-a-1h)\cdots(a+th-a-nh)hdt R=0a?(n+1)!f(n+1)(ξ)?(a+th?a?0h)(a+th?a?1h)?(a+th?a?nh)hdt

R = h n + 2 ( n + 1 ) ! ∫ 0 n f ( n + 1 ) ( ξ ) ∏ k = 0 n ( t ? k ) d t , ξ ∈ [ a , b ] R=\frac{h^{n+2}}{(n+1)!}\int_0^nf^{(n+1)}(\xi)\prod_{k=0}^n(t-k)dt, \quad \xi\in [a,b] R=(n+1)!hn+2?0n?f(n+1)(ξ)k=0n?(t?k)dt,ξ[a,b]
在推导几个低阶Newton-Cotes公式的截断误差时,会用到广义积分中值定理。即:

定理1:设函数 g ( x ) g(x) g(x) f ( x ) g ( x ) f(x)g(x) f(x)g(x)在[a,b]上可积,函数 f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b]上连续,且 m ≤ f ( x ) ≤ M m\leq f(x)\leq M mf(x)M(m,M为常数),函数 g ( x ) g(x) g(x) [ a , b ] [a,b] [a,b]上不变号,即始终有 g ( x ) ≤ 0 g(x)\leq 0 g(x)0 g ( x ) ≥ 0 g(x) \geq 0 g(x)0,则
∫ a b f ( x ) g ( x ) d x = f ( ξ ) ∫ a b g ( x ) d x , ξ ∈ [ a , b ] \int_a^bf(x)g(x)dx=f(\xi)\int_a^bg(x)dx, \quad \xi \in[a,b] ab?f(x)g(x)dx=f(ξ)ab?g(x)dx,ξ[a,b]

  1. 代数精度

定理2:具有n+1个求积节点的Newton-Cotes公式在n为偶数时,其代数精度为n+1次。