MINIBLOG

Blog Note Tags Links About
Home Search
Jun 4, 2026
miniyuan

数值微分与数值积分(数值微分,Newton-Cotes 积分)


数值微分

核心思想

设 f(x)f(x)f(x) 在区间内有定义,给定步长 h>0h>0h>0,通过节点 x,x±hx, x\pm hx,x±h 上的函数值构造差商近似导数:

f′(x)=lim⁡h→0f(x+h)−f(x)hf'(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h}f′(x)=h→0lim​hf(x+h)−f(x)​

数学基础

Taylor 公式(Lagrange 余项):

f(x+h)=f(x)+h1!f′(x)+h22!f′′(x)+⋯+hn−1(n−1)!f(n−1)(x)+hnn!f(n)(x+θh)f(x+h) =f(x)+\frac{h}{1!}f'(x)+\frac{h^2}{2!}f''(x) +\cdots+ \frac{h^{n-1}}{(n-1)!}f^{(n-1)}(x) + \frac{h^n}{n!}f^{(n)}(x+\theta h)f(x+h)=f(x)+1!h​f′(x)+2!h2​f′′(x)+⋯+(n−1)!hn−1​f(n−1)(x)+n!hn​f(n)(x+θh)

其中 0<θ<10 \lt \theta \lt 10<θ<1。

向前差商

f′(x)≈f(x+h)−f(x)hf'(x) \approx \frac{f(x+h)-f(x)}{h}f′(x)≈hf(x+h)−f(x)​

误差推导:将 f(x+h)f(x+h)f(x+h) 在 xxx 处 Taylor 展开至二阶:

f(x+h)=f(x)+hf′(x)+h22f′′(x+θ1h)f(x+h) = f(x) + hf'(x) + \frac{h^2}{2}f''(x+\theta_1 h)f(x+h)=f(x)+hf′(x)+2h2​f′′(x+θ1​h)

整理得:

f′(x)−f(x+h)−f(x)h=−h2f′′(x+θ1h)=O(h)f'(x) - \frac{f(x+h)-f(x)}{h} = -\frac{h}{2}f''(x+\theta_1 h) = O(h)f′(x)−hf(x+h)−f(x)​=−2h​f′′(x+θ1​h)=O(h)

向后差商

f′(x)≈f(x)−f(x−h)hf'(x) \approx \frac{f(x)-f(x-h)}{h}f′(x)≈hf(x)−f(x−h)​

误差推导:将 f(x−h)f(x-h)f(x−h) 在 xxx 处 Taylor 展开至二阶:

f(x−h)=f(x)−hf′(x)+h22f′′(x−θ2h)f(x-h) = f(x) - hf'(x) + \frac{h^2}{2}f''(x-\theta_2 h)f(x−h)=f(x)−hf′(x)+2h2​f′′(x−θ2​h)

整理得:

f′(x)−f(x)−f(x−h)h=−h2f′′(x−θ2h)=O(h)f'(x) - \frac{f(x)-f(x-h)}{h} = -\frac{h}{2}f''(x-\theta_2 h) = O(h)f′(x)−hf(x)−f(x−h)​=−2h​f′′(x−θ2​h)=O(h)

中心差商

f′(x)≈f(x+h)−f(x−h)2hf'(x) \approx \frac{f(x+h)-f(x-h)}{2h}f′(x)≈2hf(x+h)−f(x−h)​

误差推导:分别展开 f(x+h)f(x+h)f(x+h) 与 f(x−h)f(x-h)f(x−h) 至三阶:

f(x+h)=f(x)+hf′(x)+h22f′′(x)+h36f′′′(x+θ1h)f(x−h)=f(x)−hf′(x)+h22f′′(x)−h36f′′′(x−θ2h)\begin{aligned} f(x+h) &= f(x) + hf'(x) + \frac{h^2}{2}f''(x) + \frac{h^3}{6}f'''(x+\theta_1 h) \\ f(x-h) &= f(x) - hf'(x) + \frac{h^2}{2}f''(x) - \frac{h^3}{6}f'''(x-\theta_2 h) \end{aligned}f(x+h)f(x−h)​=f(x)+hf′(x)+2h2​f′′(x)+6h3​f′′′(x+θ1​h)=f(x)−hf′(x)+2h2​f′′(x)−6h3​f′′′(x−θ2​h)​

两式相减得:

f(x+h)−f(x−h)=2hf′(x)+h36[f′′′(x+θ1h)+f′′′(x−θ2h)]f(x+h)-f(x-h) = 2hf'(x) + \frac{h^3}{6}\left[f'''(x+\theta_1 h) + f'''(x-\theta_2 h)\right]f(x+h)−f(x−h)=2hf′(x)+6h3​[f′′′(x+θ1​h)+f′′′(x−θ2​h)]

整理得:

f′(x)−f(x+h)−f(x−h)2h=−h212[f′′′(x+θ1h)+f′′′(x−θ2h)]=O(h2)f'(x) - \frac{f(x+h)-f(x-h)}{2h} = -\frac{h^2}{12}\left[f'''(x+\theta_1 h) + f'''(x-\theta_2 h)\right] = O(h^2)f′(x)−2hf(x+h)−f(x−h)​=−12h2​[f′′′(x+θ1​h)+f′′′(x−θ2​h)]=O(h2)

几何直观:向前/向后差商分别用右/左割线斜率逼近切线斜率,而中心差商用对称割线,利用函数凹凸性的对称抵消,使精度提升一阶。

插值型数值微分

当函数形式未知,仅知离散节点 {xi}i=0n\{x_i\}_{i=0}^n{xi​}i=0n​ 上的函数值 yi=f(xi)y_i=f(x_i)yi​=f(xi​) 时, 可以构造 nnn 次 Lagrange 插值多项式 φn(x)\varphi_n(x)φn​(x),以 φn(k)(x)\varphi_n^{(k)}(x)φn(k)​(x) 近似 f(k)(x)f^{(k)}(x)f(k)(x)。

误差推导:

已知插值余项为

Rn(x)=f(x)−φn(x)=f(n+1)(ξ)(n+1)!ωn+1(x)R_n(x) = f(x) - \varphi_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}(x)Rn​(x)=f(x)−φn​(x)=(n+1)!f(n+1)(ξ)​ωn+1​(x)

其中 ωn+1(x)=∏j=0n(x−xj)\omega_{n+1}(x)=\prod_{j=0}^n(x-x_j)ωn+1​(x)=∏j=0n​(x−xj​)。

对余项求导得近似误差:

Rn′(x)=ddx[f(n+1)(ξ)(n+1)!]ωn+1(x)+f(n+1)(ξ)(n+1)!ωn+1′(x)R_n'(x) = \frac{\mathrm{d}}{\mathrm{d}x}\left[\frac{f^{(n+1)}(\xi)}{(n+1)!}\right]\omega_{n+1}(x) + \frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}'(x)Rn′​(x)=dxd​[(n+1)!f(n+1)(ξ)​]ωn+1​(x)+(n+1)!f(n+1)(ξ)​ωn+1′​(x)

节点处的误差:当 x=xix=x_ix=xi​ 时 ωn+1(xi)=0\omega_{n+1}(x_i)=0ωn+1​(xi​)=0,故

Rn′(xi)=f(n+1)(ξ)(n+1)!ωn+1′(xi)R_n'(x_i) = \frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}'(x_i)Rn′​(xi​)=(n+1)!f(n+1)(ξ)​ωn+1′​(xi​)

特殊地,取两节点 x0,x1x_0, x_1x0​,x1​,步长 h=x1−x0>0h=x_1-x_0>0h=x1​−x0​>0,则线性插值多项式:

φ1(x)=f(x0)x−x1x0−x1+f(x1)x−x0x1−x0=f(x1)(x−x0)−f(x0)(x−x1)h\varphi_1(x) = f(x_0)\frac{x-x_1}{x_0-x_1} + f(x_1)\frac{x-x_0}{x_1-x_0} = \frac{f(x_1)(x-x_0)-f(x_0)(x-x_1)}{h}φ1​(x)=f(x0​)x0​−x1​x−x1​​+f(x1​)x1​−x0​x−x0​​=hf(x1​)(x−x0​)−f(x0​)(x−x1​)​

求导得:

φ1′(x)=f(x1)−f(x0)h\varphi_1'(x) = \frac{f(x_1)-f(x_0)}{h}φ1′​(x)=hf(x1​)−f(x0​)​

此即向前差商(若 x=x0x=x_0x=x0​)或向后差商(若 x=x1x=x_1x=x1​)。


数值积分

问题描述

定积分 I=∫abf(x) dxI=\int_a^b f(x)\,\mathrm{d}xI=∫ab​f(x)dx 的数值逼近一般形式:

I≈In≡∑k=0nAkf(xk)I \approx I_n \equiv \sum_{k=0}^{n} A_k f(x_k)I≈In​≡k=0∑n​Ak​f(xk​)

其中 xkx_kxk​ 为求积节点,AkA_kAk​ 为求积系数。

定义(代数精度):

若求积公式对次数不超过 mmm 的多项式均精确成立,但对 m+1m+1m+1 次多项式不精确成立,则称该公式具有 mmm 次代数精度。

数学基础

将 [a,b][a,b][a,b] 作 nnn 等分,节点 xi=a+ihx_i=a+ihxi​=a+ih(i=0,1,…,ni=0,1,\dots,ni=0,1,…,n),h=b−anh=\dfrac{b-a}{n}h=nb−a​。 以 Pn(x)P_n(x)Pn​(x) 为 f(x)f(x)f(x) 的 nnn 次 Lagrange 插值多项式:

Pn(x)=∑i=0nf(xi)li(x),li(x)=∏j≠ix−xjxi−xjP_n(x) = \sum_{i=0}^{n} f(x_i) l_i(x),\quad l_i(x)=\prod_{j\neq i}\frac{x-x_j}{x_i-x_j}Pn​(x)=i=0∑n​f(xi​)li​(x),li​(x)=j=i∏​xi​−xj​x−xj​​

积分近似:

∫abf(x) dx≈∫abPn(x) dx=∑i=0n[∫abli(x) dx]⏟Aif(xi)\int_a^b f(x)\,\mathrm{d}x \approx \int_a^b P_n(x)\,\mathrm{d}x = \sum_{i=0}^{n}\underbrace{\left[\int_a^b l_i(x)\,\mathrm{d}x\right]}_{A_i} f(x_i)∫ab​f(x)dx≈∫ab​Pn​(x)dx=i=0∑n​Ai​[∫ab​li​(x)dx]​​f(xi​)

积分余项:

R(f)=∫abf(n+1)(ξ(x))(n+1)!ωn+1(x) dx,ωn+1(x)=∏j=0n(x−xj)R(f) = \int_a^b \frac{f^{(n+1)}(\xi(x))}{(n+1)!}\omega_{n+1}(x)\,\mathrm{d}x,\quad \omega_{n+1}(x)=\prod_{j=0}^n(x-x_j)R(f)=∫ab​(n+1)!f(n+1)(ξ(x))​ωn+1​(x)dx,ωn+1​(x)=j=0∏n​(x−xj​)

Newton-Cotes 积分

作变量替换 x=a+thx = a + thx=a+th(t∈[0,n]t\in[0,n]t∈[0,n]),则:

ωn+1(x)=hn+1t(t−1)⋯(t−n)\omega_{n+1}(x) = h^{n+1}t(t-1)\cdots(t-n)ωn+1​(x)=hn+1t(t−1)⋯(t−n) ωn+1′(xi)=hn(−1)n−ii! (n−i)!\omega_{n+1}'(x_i) = h^n (-1)^{n-i} i!\,(n-i)!ωn+1′​(xi​)=hn(−1)n−ii!(n−i)!

代入系数公式 Ai=∫abli(x) dxA_i = \int_a^b l_i(x)\,\mathrm{d}xAi​=∫ab​li​(x)dx:

Ai=∫abωn+1(x)(x−xi)ωn+1′(xi) dx=∫0nhn+1t(t−1)⋯(t−n)(−1)n−ihni! (n−i)!⋅h(t−i) h dt=(b−a)⋅(−1)n−in⋅i! (n−i)!∫0nt(t−1)⋯(t−i+1)(t−i−1)⋯(t−n) dt\begin{aligned} A_i &= \int_a^b \frac{\omega_{n+1}(x)}{(x-x_i)\omega_{n+1}'(x_i)}\,\mathrm{d}x \\ &= \int_0^n \frac{h^{n+1}t(t-1)\cdots(t-n)}{(-1)^{n-i}h^n i!\,(n-i)!\cdot h(t-i)}\,h\,\mathrm{d}t \\ &= (b-a)\cdot\frac{(-1)^{n-i}}{n\cdot i!\,(n-i)!}\int_0^n t(t-1)\cdots(t-i+1)(t-i-1)\cdots(t-n)\,\mathrm{d}t \end{aligned}Ai​​=∫ab​(x−xi​)ωn+1′​(xi​)ωn+1​(x)​dx=∫0n​(−1)n−ihni!(n−i)!⋅h(t−i)hn+1t(t−1)⋯(t−n)​hdt=(b−a)⋅n⋅i!(n−i)!(−1)n−i​∫0n​t(t−1)⋯(t−i+1)(t−i−1)⋯(t−n)dt​

定义 Newton-Cotes 系数 Ci(n)=Aib−aC_i^{(n)} = \dfrac{A_i}{b-a}Ci(n)​=b−aAi​​,则求积公式统一写为:

∫abf(x) dx≈(b−a)∑i=0nCi(n)f(xi)\int_a^b f(x)\,\mathrm{d}x \approx (b-a)\sum_{i=0}^{n} C_i^{(n)} f(x_i)∫ab​f(x)dx≈(b−a)i=0∑n​Ci(n)​f(xi​)

注:Ci(n)C_i^{(n)}Ci(n)​ 仅与 nnn 有关,与积分区间及被积函数无关,具有通用性。

常用 Newton-Cotes 系数表

nnnC0(n)C_0^{(n)}C0(n)​C1(n)C_1^{(n)}C1(n)​C2(n)C_2^{(n)}C2(n)​C3(n)C_3^{(n)}C3(n)​C4(n)C_4^{(n)}C4(n)​C5(n)C_5^{(n)}C5(n)​C6(n)C_6^{(n)}C6(n)​公式名称
112\frac{1}{2}21​12\frac{1}{2}21​梯形公式
216\frac{1}{6}61​46\frac{4}{6}64​16\frac{1}{6}61​Simpson 公式
318\frac{1}{8}81​38\frac{3}{8}83​38\frac{3}{8}83​18\frac{1}{8}81​3/8 公式
4790\frac{7}{90}907​3290\frac{32}{90}9032​1290\frac{12}{90}9012​3290\frac{32}{90}9032​790\frac{7}{90}907​Cotes 公式
519288\frac{19}{288}28819​2596\frac{25}{96}9625​25144\frac{25}{144}14425​25144\frac{25}{144}14425​2596\frac{25}{96}9625​19288\frac{19}{288}28819​
641840\frac{41}{840}84041​9280\frac{9}{280}2809​9280\frac{9}{280}2809​34105\frac{34}{105}10534​9280\frac{9}{280}2809​9280\frac{9}{280}2809​41840\frac{41}{840}84041​

具体积分公式

  1. 梯形公式(n=1n=1n=1)

    线性插值 P1(x)P_1(x)P1​(x) 过 (a,f(a))(a,f(a))(a,f(a)) 与 (b,f(b))(b,f(b))(b,f(b)):

    ∫abf(x) dx≈b−a2[f(a)+f(b)]\int_a^b f(x)\,\mathrm{d}x \approx \frac{b-a}{2}\bigl[f(a)+f(b)\bigr]∫ab​f(x)dx≈2b−a​[f(a)+f(b)]

    几何意义:以梯形面积近似曲边梯形面积。

  2. Simpson 公式(n=2n=2n=2)

    二次插值过 a,a+b2,ba, \dfrac{a+b}{2}, ba,2a+b​,b 三点:

    ∫abf(x) dx≈b−a6[f(a)+4f(a+b2)+f(b)]\int_a^b f(x)\,\mathrm{d}x \approx \frac{b-a}{6}\left[f(a)+4f\left(\frac{a+b}{2}\right)+f(b)\right]∫ab​f(x)dx≈6b−a​[f(a)+4f(2a+b​)+f(b)]

    几何意义:以抛物线围成面积近似原函数积分。

  3. Newton-Cotes 公式(n=3n=3n=3)

    ∫abf(x) dx≈b−a8[f(x0)+3f(x1)+3f(x2)+f(x3)]\int_a^b f(x)\,\mathrm{d}x \approx \frac{b-a}{8}\left[f(x_0)+3f(x_1)+3f(x_2)+f(x_3)\right]∫ab​f(x)dx≈8b−a​[f(x0​)+3f(x1​)+3f(x2​)+f(x3​)]

    其中 x1=2a+b3,  x2=a+2b3x_1=\dfrac{2a+b}{3},\; x_2=\dfrac{a+2b}{3}x1​=32a+b​,x2​=3a+2b​。

算法实现

通用 Newton-Cotes 求积:

# 预定义常用系数
TRAPEZOIDAL = [0.5, 0.5]
SIMPSON = [1/6, 4/6, 1/6]
NC3 = [1/8, 3/8, 3/8, 1/8]
NC4 = [7/90, 32/90, 12/90, 32/90, 7/90]

def newton_cotes(f, a, b, n, coeffs):
    """
    通用 Newton-Cotes 积分
    coeffs: 长度为 n+1 的系数列表 C_i^(n)
    """
    h = (b - a) / n
    nodes = [a + i * h for i in range(n + 1)]
    return (b - a) * sum(c * f(x) for c, x in zip(coeffs, nodes))

复化求积:

由于单区间高次 Newton-Cotes 可能出现 Runge 现象,故更常用复化低阶公式,也即将 [a,b][a,b][a,b] 分为 mmm 个子区间,在每个子区间上应用低阶公式。

def composite_simpson(f, a, b, m):
    """复化 Simpson 公式:m 为子区间数(偶数)"""
    if m % 2 == 1:
        m += 1
    h = (b - a) / m
    s = f(a) + f(b)
    for i in range(1, m):
        x = a + i * h
        s += 4 * f(x) if i % 2 == 1 else 2 * f(x)
    return s * h / 3

误差分析

代数精度定理

  • n+1n+1n+1 个节点的 Newton-Cotes 求积公式至少具有 nnn 次代数精度。
  • 当 nnn 为偶数时,n+1n+1n+1 个节点的 Newton-Cotes 求积公式至少具有 n+1n+1n+1 次代数精度。

证明:

由于 n+1n+1n+1 个节点的 Newton-Cotes 求积公式进行了 nnn 次 Lagrange 插值,故至少有 nnn 次代数精度。

只需验证当 nnn 为偶数时对 f(x)=xn+1f(x)=x^{n+1}f(x)=xn+1 也精确。此时插值余项为:

xn+1−Pn(x)=ωn+1(x),ωn+1(x)=∏j=0n(x−xj)x^{n+1}-P_n(x)=\omega_{n+1}(x),\qquad \omega_{n+1}(x)=\prod_{j=0}^n(x-x_j)xn+1−Pn​(x)=ωn+1​(x),ωn+1​(x)=j=0∏n​(x−xj​)

误差为:

Rn(xn+1)=∫abωn+1(x) dxR_n(x^{n+1})=\int_a^b \omega_{n+1}(x)\,\mathrm{d}xRn​(xn+1)=∫ab​ωn+1​(x)dx

令 x=a+thx=a+thx=a+th,等距节点 xj=a+jhx_j=a+jhxj​=a+jh 对应 tj=jt_j=jtj​=j,则:

ωn+1(x)=hn+1⋅t(t−1)(t−2)⋯(t−n)\omega_{n+1}(x)=h^{n+1}\cdot t(t-1)(t-2)\cdots(t-n)ωn+1​(x)=hn+1⋅t(t−1)(t−2)⋯(t−n)

于是:

Rn(xn+1)=hn+2∫0nt(t−1)⋯(t−n) dtR_n(x^{n+1})=h^{n+2}\int_0^n t(t-1)\cdots(t-n)\,\mathrm{d}tRn​(xn+1)=hn+2∫0n​t(t−1)⋯(t−n)dt

记 I=∫0nt(t−1)⋯(t−n) dtI=\int_0^n t(t-1)\cdots(t-n)\,\mathrm{d}tI=∫0n​t(t−1)⋯(t−n)dt。作代换 t=n−ut=n-ut=n−u:

I=∫n0(n−u)(n−1−u)⋯(−u) (−du)=(−1)n+1∫0nu(u−1)⋯(u−n) du=−I\begin{aligned} I&=\int_n^0 (n-u)(n-1-u)\cdots(-u)\,(-\mathrm{d}u)\\ &=(-1)^{n+1}\int_0^n u(u-1)\cdots(u-n)\,\mathrm{d}u\\ &=-I \end{aligned}I​=∫n0​(n−u)(n−1−u)⋯(−u)(−du)=(−1)n+1∫0n​u(u−1)⋯(u−n)du=−I​

故 I=−II=-II=−I,即:

I=0I=0I=0

因此 Rn(xn+1)=0R_n(x^{n+1})=0Rn​(xn+1)=0,Newton-Cotes 公式对 xn+1x^{n+1}xn+1 也精确成立。

梯形公式误差估计

若 f(x)∈C2[a,b]f(x)\in C^2[a,b]f(x)∈C2[a,b],则梯形公式误差:

R1(f)=∫abf(x) dx−b−a2[f(a)+f(b)]=−(b−a)312f′′(η),a≤η≤bR_1(f) = \int_a^b f(x)\,\mathrm{d}x - \frac{b-a}{2}[f(a)+f(b)] = -\frac{(b-a)^3}{12}f''(\eta),\quad a\leq\eta\leq bR1​(f)=∫ab​f(x)dx−2b−a​[f(a)+f(b)]=−12(b−a)3​f′′(η),a≤η≤b

证明:

由线性插值余项 f(x)−P1(x)=f′′(ξ)2(x−a)(x−b)f(x)-P_1(x)=\frac{f''(\xi)}{2}(x-a)(x-b)f(x)−P1​(x)=2f′′(ξ)​(x−a)(x−b),积分得:

R1(f)=∫abf′′(ξ(x))2(x−a)(x−b) dxR_1(f) = \int_a^b \frac{f''(\xi(x))}{2}(x-a)(x-b)\,\mathrm{d}xR1​(f)=∫ab​2f′′(ξ(x))​(x−a)(x−b)dx

因 (x−a)(x−b)≤0(x-a)(x-b)\leq 0(x−a)(x−b)≤0 在 [a,b][a,b][a,b] 上不变号,应用积分中值定理:

R1(f)=f′′(η)2∫ab(x−a)(x−b) dx=−(b−a)312f′′(η)R_1(f) = \frac{f''(\eta)}{2}\int_a^b (x-a)(x-b)\,\mathrm{d}x = -\frac{(b-a)^3}{12}f''(\eta)R1​(f)=2f′′(η)​∫ab​(x−a)(x−b)dx=−12(b−a)3​f′′(η)

注:梯形公式具有一次代数精度。

Simpson 公式误差估计

若 f(x)∈C4[a,b]f(x)\in C^4[a,b]f(x)∈C4[a,b],则 Simpson 公式误差:

R2(f)=∫abf(x) dx−b−a6[f(a)+4f(a+b2)+f(b)]=−(b−a)52880f(4)(η)R_2(f) = \int_a^b f(x)\,\mathrm{d}x - \frac{b-a}{6}\left[f(a)+4f\left(\frac{a+b}{2}\right)+f(b)\right] = -\frac{(b-a)^5}{2880}f^{(4)}(\eta)R2​(f)=∫ab​f(x)dx−6b−a​[f(a)+4f(2a+b​)+f(b)]=−2880(b−a)5​f(4)(η)

证明:

设 c=a+b2c=\dfrac{a+b}{2}c=2a+b​,h=b−a2h=\dfrac{b-a}{2}h=2b−a​。构造三次 Hermite 插值多项式 H(x)H(x)H(x),使其满足:

H(a)=f(a),H(c)=f(c),H′(c)=f′(c),H(b)=f(b)H(a)=f(a),\quad H(c)=f(c),\quad H'(c)=f'(c),\quad H(b)=f(b)H(a)=f(a),H(c)=f(c),H′(c)=f′(c),H(b)=f(b)

这 4 个条件唯一确定一个次数不超过 3 的多项式。

由于 Simpson 公式具有 3 次代数精度,因此:

∫abH(x) dx=b−a6[H(a)+4H(c)+H(b)]=b−a6[f(a)+4f(c)+f(b)]\int_a^b H(x)\,\mathrm{d}x =\frac{b-a}{6}\Bigl[H(a)+4H(c)+H(b)\Bigr] =\frac{b-a}{6}\Bigl[f(a)+4f(c)+f(b)\Bigr]∫ab​H(x)dx=6b−a​[H(a)+4H(c)+H(b)]=6b−a​[f(a)+4f(c)+f(b)]

于是误差可写成:

R2(f)=∫ab[f(x)−H(x)] dxR_2(f)=\int_a^b\bigl[f(x)-H(x)\bigr]\,\mathrm{d}xR2​(f)=∫ab​[f(x)−H(x)]dx

对 H(x)H(x)H(x) 应用重节点差商余项公式,存在 ξx∈(a,b)\xi_x\in(a,b)ξx​∈(a,b) 使得:

f(x)−H(x)=f(4)(ξx)4! (x−a)(x−c)2(x−b)f(x)-H(x)=\frac{f^{(4)}(\xi_x)}{4!}\,(x-a)(x-c)^2(x-b)f(x)−H(x)=4!f(4)(ξx​)​(x−a)(x−c)2(x−b)

从而:

R2(f)=124∫abf(4)(ξx) (x−a)(x−c)2(x−b) dxR_2(f)=\frac{1}{24}\int_a^b f^{(4)}(\xi_x)\,(x-a)(x-c)^2(x-b)\,\mathrm{d}xR2​(f)=241​∫ab​f(4)(ξx​)(x−a)(x−c)2(x−b)dx

由于 f(4)f^{(4)}f(4) 连续,且 (x−a)(x−c)2(x−b)(x-a)(x-c)^2(x-b)(x−a)(x−c)2(x−b) 在 [a,b][a,b][a,b] 上不变号,由积分第一中值定理,存在 η∈[a,b]\eta\in[a,b]η∈[a,b] 使得:

R2(f)=f(4)(η)24∫ab(x−a)(x−c)2(x−b) dxR_2(f)=\frac{f^{(4)}(\eta)}{24}\int_a^b(x-a)(x-c)^2(x-b)\,\mathrm{d}xR2​(f)=24f(4)(η)​∫ab​(x−a)(x−c)2(x−b)dx

作换元 x=c+thx=c+thx=c+th,则 x−a=h(t+1)x-a=h(t+1)x−a=h(t+1),x−b=h(t−1)x-b=h(t-1)x−b=h(t−1),dx=h dt\mathrm{d}x=h\,\mathrm{d}tdx=hdt,积分区间 t∈[−1,1]t\in[-1,1]t∈[−1,1]:

∫ab(x−a)(x−c)2(x−b) dx=h5∫−11(t+1)t2(t−1) dt=−4h515\int_a^b(x-a)(x-c)^2(x-b)\,\mathrm{d}x =h^5\int_{-1}^1(t+1)t^2(t-1)\,\mathrm{d}t =-\frac{4h^5}{15}∫ab​(x−a)(x−c)2(x−b)dx=h5∫−11​(t+1)t2(t−1)dt=−154h5​

代回可得:

R2(f)=f(4)(η)24⋅(−4h515)=−(b−a)52880 f(4)(η)R_2(f) =\frac{f^{(4)}(\eta)}{24}\cdot\left(-\frac{4h^5}{15}\right) =-\frac{(b-a)^5}{2880}\,f^{(4)}(\eta)R2​(f)=24f(4)(η)​⋅(−154h5​)=−2880(b−a)5​f(4)(η)

注:Simpson 公式具有三次代数精度。

一般 Newton-Cotes 误差估计

对 n+1n+1n+1 个节点的 Newton-Cotes 公式,

  • 当 nnn 为偶数且 f∈Cn+2[a,b]f\in C^{n+2}[a,b]f∈Cn+2[a,b] 时:

    Rn(f)=hn+3(n+2)!f(n+2)(η)∫0nt2(t−1)⋯(t−n) dtR_n(f) = \frac{h^{n+3}}{(n+2)!}f^{(n+2)}(\eta)\int_0^n t^2(t-1)\cdots(t-n)\,\mathrm{d}tRn​(f)=(n+2)!hn+3​f(n+2)(η)∫0n​t2(t−1)⋯(t−n)dt
  • 当 nnn 为奇数且 f∈Cn+1[a,b]f\in C^{n+1}[a,b]f∈Cn+1[a,b] 时:

    Rn(f)=hn+2(n+1)!f(n+1)(η)∫0nt(t−1)⋯(t−n) dtR_n(f) = \frac{h^{n+2}}{(n+1)!}f^{(n+1)}(\eta)\int_0^n t(t-1)\cdots(t-n)\,\mathrm{d}tRn​(f)=(n+1)!hn+2​f(n+1)(η)∫0n​t(t−1)⋯(t−n)dt

其中 h=b−anh=\dfrac{b-a}{n}h=nb−a​,a≤η≤ba\leq\eta\leq ba≤η≤b。

证明:

奇数时显然,下证偶数时。采用 Newton 型插值余项的积分:

Rn(f)=∫ab[f(x)−Pn(x)] dx=∫abf[x0,x1,…,xn,x] ω(x) dxR_n(f)=\int_a^b \bigl[f(x)-P_n(x)\bigr]\,\mathrm{d}x=\int_a^b f[x_0,x_1,\dots,x_n,x]\,\omega(x)\,\mathrm{d}xRn​(f)=∫ab​[f(x)−Pn​(x)]dx=∫ab​f[x0​,x1​,…,xn​,x]ω(x)dx

其中 ω(x)=(x−x0)(x−x1)⋯(x−xn)\omega(x)=(x-x_0)(x-x_1)\cdots(x-x_n)ω(x)=(x−x0​)(x−x1​)⋯(x−xn​),f[⋯ ]f[\cdots]f[⋯] 是 n+1n+1n+1 阶差商。

定义:

Ω(x)=∫axω(t) dt\Omega(x)=\int_a^x \omega(t)\,\mathrm{d}tΩ(x)=∫ax​ω(t)dt

由于节点等距且 x0=a, xn=bx_0=a,\,x_n=bx0​=a,xn​=b,显然 ω(a)=ω(b)=0\omega(a)=\omega(b)=0ω(a)=ω(b)=0。
又因 nnn 为偶数,由对称性可证 ∫abω(t) dt=0\int_a^b\omega(t)\,\mathrm{d}t=0∫ab​ω(t)dt=0,故:

Ω(a)=0,Ω(b)=0\Omega(a)=0,\qquad \Omega(b)=0Ω(a)=0,Ω(b)=0

且 Ω(x)\Omega(x)Ω(x) 在 [a,b][a,b][a,b] 上不变号。

对 Rn(f)R_n(f)Rn​(f) 分部积分(注意 Ω(a)=Ω(b)=0\Omega(a)=\Omega(b)=0Ω(a)=Ω(b)=0,边界项消失):

Rn(f)=∫abf[x0,…,xn,x] ω(x) dx=[f[x0,…,xn,x] Ω(x)]ab−∫abddxf[x0,…,xn,x] Ω(x) dx=−∫abf[x0,…,xn,x,x] Ω(x) dx\begin{aligned} R_n(f)&=\int_a^b f[x_0,\dots,x_n,x]\,\omega(x)\,\mathrm{d}x\\ &=\Bigl[f[x_0,\dots,x_n,x]\,\Omega(x)\Bigr]_a^b-\int_a^b \frac{\mathrm{d}}{\mathrm{d}x}f[x_0,\dots,x_n,x]\,\Omega(x)\,\mathrm{d}x\\ &=-\int_a^b f[x_0,\dots,x_n,x,x]\,\Omega(x)\,\mathrm{d}x \end{aligned}Rn​(f)​=∫ab​f[x0​,…,xn​,x]ω(x)dx=[f[x0​,…,xn​,x]Ω(x)]ab​−∫ab​dxd​f[x0​,…,xn​,x]Ω(x)dx=−∫ab​f[x0​,…,xn​,x,x]Ω(x)dx​

其中用到了差商对活跃节点的求导公式:

ddxf[x0,…,xn,x]=f[x0,…,xn,x,x]\frac{\mathrm{d}}{\mathrm{d}x}f[x_0,\dots,x_n,x]=f[x_0,\dots,x_n,x,x]dxd​f[x0​,…,xn​,x]=f[x0​,…,xn​,x,x]

而 n+2n+2n+2 阶差商等于导数:

f[x0,…,xn,x,x]=f(n+2)(ξ(x))(n+2)!f[x_0,\dots,x_n,x,x]=\frac{f^{(n+2)}(\xi(x))}{(n+2)!}f[x0​,…,xn​,x,x]=(n+2)!f(n+2)(ξ(x))​

又因为 Ω(x)\Omega(x)Ω(x) 在 [a,b][a,b][a,b] 上不变号,且 f(n+2)(ξ(x))f^{(n+2)}(\xi(x))f(n+2)(ξ(x)) 连续(f∈Cn+2f\in C^{n+2}f∈Cn+2),可用积分中值定理提出:

Rn(f)=−f(n+2)(η)(n+2)!∫abΩ(x) dx,a≤η≤bR_n(f)=-\frac{f^{(n+2)}(\eta)}{(n+2)!}\int_a^b \Omega(x)\,\mathrm{d}x,\qquad a\leq\eta\leq bRn​(f)=−(n+2)!f(n+2)(η)​∫ab​Ω(x)dx,a≤η≤b

对 ∫abΩ(x) dx\int_a^b\Omega(x)\,\mathrm{d}x∫ab​Ω(x)dx 再做一次分部积分:

∫abΩ(x) dx=[xΩ(x)]ab−∫abx ω(x) dx=−∫abx ω(x) dx\int_a^b\Omega(x)\,\mathrm{d}x=\Bigl[x\Omega(x)\Bigr]_a^b-\int_a^b x\,\omega(x)\,\mathrm{d}x=-\int_a^b x\,\omega(x)\,\mathrm{d}x∫ab​Ω(x)dx=[xΩ(x)]ab​−∫ab​xω(x)dx=−∫ab​xω(x)dx

令 x=a+thx=a+thx=a+th,则 xω(x) dx=(a+th)⋅hn+1t(t−1)⋯(t−n)⋅h dtx\omega(x)\,\mathrm{d}x=(a+th)\cdot h^{n+1}t(t-1)\cdots(t-n)\cdot h\,\mathrm{d}txω(x)dx=(a+th)⋅hn+1t(t−1)⋯(t−n)⋅hdt。

由于 ∫abω(x) dx=0\int_a^b\omega(x)\,\mathrm{d}x=0∫ab​ω(x)dx=0,即 ∫0nt(t−1)⋯(t−n) dt=0\int_0^n t(t-1)\cdots(t-n)\,\mathrm{d}t=0∫0n​t(t−1)⋯(t−n)dt=0,故:

∫abx ω(x) dx=hn+3∫0nt2(t−1)⋯(t−n) dt\int_a^b x\,\omega(x)\,\mathrm{d}x=h^{n+3}\int_0^n t^2(t-1)\cdots(t-n)\,\mathrm{d}t∫ab​xω(x)dx=hn+3∫0n​t2(t−1)⋯(t−n)dt Rn(f)=hn+3(n+2)! f(n+2)(η)∫0nt2(t−1)⋯(t−n) dtR_n(f)=\frac{h^{n+3}}{(n+2)!}\,f^{(n+2)}(\eta)\int_0^n t^2(t-1)\cdots(t-n)\,\mathrm{d}tRn​(f)=(n+2)!hn+3​f(n+2)(η)∫0n​t2(t−1)⋯(t−n)dt

这正是偶数情形的 Newton-Cotes 误差公式。

注:误差阶数反映 nnn 为偶数时具有精度优势,这与代数精度的结论一致。

单区间误差的奇次幂结构

对 n+1n+1n+1 个节点的 Newton-Cotes 公式,设区间长度 H=b−aH=b-aH=b−a,步长 h=H/nh=H/nh=H/n,节点 xj=a+jhx_j=a+jhxj​=a+jh(j=0,1,…,nj=0,1,\dots,nj=0,1,…,n)。其误差

En(H)=∫abf(x) dx−∑j=0nwjf(xj)E_n(H)=\int_a^b f(x)\,\mathrm{d}x-\sum_{j=0}^n w_j f(x_j)En​(H)=∫ab​f(x)dx−j=0∑n​wj​f(xj​)

作为 HHH 的函数,其 Taylor 展开仅含 HHH 的奇次幂:

En(H)={cn+2Hn+2+cn+4Hn+4+⋯ ,2∤ncn+3Hn+3+cn+5Hn+5+⋯ ,2∣nE_n(H)= \begin{cases} c_{n+2}H^{n+2}+c_{n+4}H^{n+4}+\cdots,& 2 \nmid n \\[6pt] c_{n+3}H^{n+3}+c_{n+5}H^{n+5}+\cdots,& 2 \mid n \end{cases}En​(H)=⎩⎨⎧​cn+2​Hn+2+cn+4​Hn+4+⋯,cn+3​Hn+3+cn+5​Hn+5+⋯,​2∤n2∣n​

证明:

将区间平移至关于原点对称。令 x=m+tx=m+tx=m+t,其中 m=a+b2m=\dfrac{a+b}{2}m=2a+b​,t∈[−H/2,H/2]t\in[-H/2,H/2]t∈[−H/2,H/2],节点变为 tj=−H2+jht_j=-\dfrac{H}{2}+jhtj​=−2H​+jh(j=0,1,…,nj=0,1,\dots,nj=0,1,…,n)。

由于节点等距且 n+1n+1n+1 个节点的 Newton-Cotes 权重满足 wj=wn−jw_j=w_{n-j}wj​=wn−j​,从而该求积公式对任意关于 ttt 的奇函数精确成立:

∫−H/2H/2g(t) dt=0,∑j=0nwjg(tj)=0\int_{-H/2}^{H/2}g(t)\,\mathrm{d}t=0,\qquad \sum_{j=0}^n w_j g(t_j)=0∫−H/2H/2​g(t)dt=0,j=0∑n​wj​g(tj​)=0

将 fff 在 t=0t=0t=0(即区间中点)处 Taylor 展开:

f(m+t)=∑k=0∞f(k)(m)k!tkf(m+t)=\sum_{k=0}^{\infty}\frac{f^{(k)}(m)}{k!}t^kf(m+t)=k=0∑∞​k!f(k)(m)​tk

误差具有线性性,故

En(H)=∑k=0∞f(k)(m)k![∫−H/2H/2tk dt−∑j=0nwjtjk]⏟ek(H)E_n(H)=\sum_{k=0}^{\infty}\frac{f^{(k)}(m)}{k!}\underbrace{\left[\int_{-H/2}^{H/2}t^k\,\mathrm{d}t-\sum_{j=0}^n w_j t_j^k\right]}_{e_k(H)}En​(H)=k=0∑∞​k!f(k)(m)​ek​(H)[∫−H/2H/2​tkdt−j=0∑n​wj​tjk​]​​
  • 当 kkk 为奇数时,tkt^ktk 是奇函数,由 Newton-Cotes 的对称性,积分与求积值均为 000,故 ek(H)=0e_k(H)=0ek​(H)=0。
  • 当 kkk 为偶数时,ek(H)e_k(H)ek​(H) 一般非零。作变量替换 t=Hst=Hst=Hs,则 ek(H)=Hk+1[∫−1/21/2sk ds−∑j=0nwjsjk]=Ck⋅Hk+1,e_k(H)=H^{k+1}\left[\int_{-1/2}^{1/2}s^k\,\mathrm{d}s-\sum_{j=0}^n w_j s_j^k\right]=C_k\cdot H^{k+1},ek​(H)=Hk+1[∫−1/21/2​skds−j=0∑n​wj​sjk​]=Ck​⋅Hk+1, 其中 CkC_kCk​ 与 HHH 无关。

因此求和只遍历偶数 kkk:

En(H)=∑2∣kf(k)(m)k! Ck Hk+1E_n(H)=\sum_{2 \mid k}\frac{f^{(k)}(m)}{k!}\,C_k\,H^{k+1}En​(H)=2∣k∑​k!f(k)(m)​Ck​Hk+1

注:这与代数精度的结论一致:

  • nnn 为奇数时,k=0,1,…,nk=0,1,\dots,nk=0,1,…,n 均精确,首项取 k=n+1k=n+1k=n+1(偶数),对应 Hn+2H^{n+2}Hn+2;
  • nnn 为偶数时,k=0,1,…,n+1k=0,1,\dots,n+1k=0,1,…,n+1 均精确,首项取 k=n+2k=n+2k=n+2(偶数),对应 Hn+3H^{n+3}Hn+3。

复杂度与稳定性分析

指标梯形公式Simpson 公式Newton-Cotes (nnn 阶)
函数求值次数23n+1n+1n+1
代数精度13nnn(nnn 奇)/ n+1n+1n+1(nnn 偶)
误差阶O(h3)O(h^3)O(h3)O(h5)O(h^5)O(h5)O(hn+2)O(h^{n+2})O(hn+2)(奇)/ O(hn+3)O(h^{n+3})O(hn+3)(偶)
稳定性高(系数同号)高(系数同号)n≥8n\geq 8n≥8 时系数变号,不稳定

注:

  1. 实际计算中,步长 hhh 的选择需在截断误差(希望 hhh 小)与舍入误差(希望 hhh 不太小)之间权衡;
  2. 数值微分的中心差商在 h≈ϵmach3h\approx\sqrt[3]{\epsilon_{\mathrm{mach}}}h≈3ϵmach​​ 时达到最优,数值积分的复化公式在 hhh 足够小时呈现单调收敛。
目录
  • 数值微分
    • 核心思想
    • 数学基础
    • 向前差商
    • 向后差商
    • 中心差商
    • 插值型数值微分
  • 数值积分
    • 问题描述
    • 数学基础
  • Newton-Cotes 积分
    • 常用 Newton-Cotes 系数表
    • 具体积分公式
    • 算法实现
    • 误差分析
      • 代数精度定理
      • 梯形公式误差估计
      • Simpson 公式误差估计
      • 一般 Newton-Cotes 误差估计
      • 单区间误差的奇次幂结构
  • 复杂度与稳定性分析
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo