# 机械求积法

梯形公式:

abf(x)dx12(ba)[f(a)+f(b)]\int_a^b f(x)dx\approx \frac12(b-a)[f(a)+f(b)]

中矩形公式:

abf(x)dx(ba)f(a+b2)\int_a^b f(x)dx\approx (b-a)f(\frac{a+b}{2})

辛普森公式:

abf(x)dx16(ba)[f(a)+4f(a+b2)+f(b)]\int_a^bf(x)dx\approx\frac{1}{6}(b-a)[f(a)+4f(\frac{a+b}{2})+f(b)]

# 代数精度

使求积公式准确成立的多项式的次数,可以作为一种衡量求积公式精确度程度的标准

abf(X)dxi=0nAif(xi)\int_a^b f(X)dx\approx \sum_{i=0}^nA_if(x_i) 对于一切次数小于等于 m 的多项式是准确的,而对于次数为 m+1m+1某一多项式并不准确,则称该求积公式具有 mm 次代数精度

推论:若 abf(X)dxi=0nAif(xi)\int_a^b f(X)dx\approx \sum_{i=0}^nA_if(x_i) 具有 mm 次代数精度,则这个公式对于一切次数小于等于 mm 的多项式是准确的

证明

abf(X)dxi=0nAif(xi)\int_a^b f(X)dx\approx \sum_{i=0}^nA_if(x_i) 对函数 f(x)f(x)g(x)g(x) 准确成立,则它对于函数 αf(x)+βg(x)\alpha f(x)+\beta g(x) 准确成立

ab[αf(x)+βg(x)]dx=abαf(x)dx+abβg(x)dx=αi=0nAif(xi)+βi=0nAig(xi)=i=0nAi[αf(xi)+βg(xi)]\begin{aligned} \int_a^b[\alpha f(x)+\beta g(x)]dx&=\int_a^b\alpha f(x)dx+\int_a^b \beta g(x)dx\\ &=\alpha \sum_{i=0}^nA_if(x_i)+\beta \sum_{i=0}^nA_ig(x_i)=\sum_{i=0}^n A_i[\alpha f(x_i)+\beta g(x_i)] \end{aligned}

  • 梯形公式具有一次代数精度
  • 辛普森具有三次代数精度

对于任意给定的 n+1n+1 个互异的节点 a=x0<x1<...<xn=ba=x_0<x_1<...<x_n=b 总存在系数 A0,A1,...,AnA_0,A_1,...,A_n,使得 abf(X)dxi=0nAif(xi)\int_a^b f(X)dx\approx \sum_{i=0}^nA_if(x_i) 的代数精度最低为 nn

证明

设以 x0,x1,...,xnx_0,x_1,...,x_n 为插值节点的 f(x)f(x)LagrangeLagrange 插值多项式为

pn(x)=i=0nf(xi)li(x)p_n(x)=\sum_{i=0}^nf(x_i)l_i(x)

f(x)=pn(x)+f(n+1)(ξ)(n+1)!w(x)f(x)=p_n(x)+\frac{f^{(n+1)}(\xi)}{(n+1)!}w(x)

所以

abf(x)dx=i=0nf(xi)abli(x)dx+1(n+1)!abf(n+1)(ξ)w(x)dx\int_a^bf(x)dx=\sum_{i=0}^nf(x_i)\int_a^bl_i(x)dx+\frac{1}{(n+1)!}\int_a^bf^{(n+1)}(\xi)w(x)dx

R(f)=1(n+1)!abf(n+1)(ξ)w(x)dxR(f)=\frac{1}{(n+1)!}\int_a^bf^{(n+1)}(\xi)w(x)dx

对于任何一个次数不高于 nn 次的多项式 f(x)f(x)R(f)=0R(f)=0

# 求积公式的构造方法

# 利用代数精度作为标准构造求积公式

因为如果代数精度为 mm,那么对于一切次数小于等于 mm 的多项式是准确的,所以可以带入 1,x,x2,...1,x,x^2,... 进行解方程求解

# 插值法构造求积公式

pn(x)p_n(x) 代替 f(x)f(x) 从而的获得求积公式

abf(x)dxabpn(x)dx\int_a^bf(x)dx\approx \int_a^bp_n(x)dx

abpn(x)dx=ab[i=0nf(xi)li(x)]dx=i=0nf(xi)abli(x)dx\int_a^bp_n(x)dx=\int_a^b [\sum_{i=0}^nf(x_i)l_i(x)]dx=\sum_{i=0}^nf(x_i)\int_a^bl_i(x)dx

显然,求积系数为

Ai=abli(x)dxA_i=\int_a^bl_i(x)dx

定义:求积公式的求积系数为 Ai=abli(x)dxA_i=\int_a^bl_i(x)dx ,则此求积公式是插值型的

定理:求积公式 abf(x)dxi=0nAif(xi)\int_a^bf(x)dx\approx \sum_{i=0}^n A_if(x_i) 至少具有 nn 次代数精度的充要条件是它是插值型的

证明

\Large\Rightarrow

因为 abf(x)dxi=0nAif(xi)\int_a^bf(x)dx\approx \sum\limits_{i=0}^n A_if(x_i) 至少具有 nn 次精度,所以它对所有次数小于等于 nn 次的多项式准确成立

则以 x0,x1,..,xnx_0,x_1,..,x_n 为插值节点的 LagrangeLagrange 插值基函数 li(x)l_i(x) 是个 nn 次多项式,准确成立

abf(x)dx=i=0nAili(x)\int_a^bf(x)dx= \sum\limits_{i=0}^n A_il_i(x)

因为

li(x)={1i=j0ijl_i(x)=\left\{\begin{matrix} 1 & i=j\\ 0 & i\neq j \end{matrix}\right.

abf(x)dx=Ai\int_a^bf(x)dx= A_i

\Large\Leftarrow

因为对于任意次数小于等于 nn 的多项式 f(x)f(x) ,其 nn 次插值多项式 p(x)p(x) 就是其自身(因为 f(n+1)(x)=0f^{(n+1)}(x)=0

所以插值型的求积公式对于一切次数小于等于 nn 的多项式准确成立

# Newton-Cotes 求积公式

如果将积分区间 [a,b][a,b] 分成 nn 等份,其求积节点 xix_ixi=a+ih,i=0,1,2,...,nx_i=a+ih,i=0,1,2,...,nh=banh=\frac{b-a}{n} 表示各等分小区间的宽度

abf(x)dx=abpn(x)dx=i=0n[f(xi)abli(x)dx]=(ba)i=0n[abli(x)dxbaf(xi)]\begin{aligned} \int_a^b f(x)\,dx &= \int_a^b p_n(x)\,dx = \sum_{i=0}^n \left[f(x_i) \int_a^b l_i(x)\,dx\right] \\ &= (b-a)\sum_{i=0}^n \left[\frac{\int_a^b l_i(x)\,dx}{b-a} \cdot f(x_i)\right] \end{aligned}

科特斯系数:

Ci=abli(x)dxbaC_i=\frac{\int_a^bl_i(x)dx}{b-a}

因为 x=a+thx=a+th

x=at=0x=bt=ndx=hdtba=nhx=a\rightarrow t=0\\ x=b\rightarrow t=n\\ dx=hdt\\ b-a=nh

所以 CiC_i 可以化简为

Ci=1nh0n[j=0,jinxxjxixj]dx=1nh0n[j=0,jin(a+th)(a+jh)(a+ih)(a+jh)]dx=1n0nj=0,jintjijdt=(1)nin×i!×(ni)!0n[j=0,jin(th)]dt\begin{aligned} C_i&=\frac{1}{nh}\int_0^n [\prod _{j=0,j\neq i}^n\frac{x-x_j}{x_i-x_j}]dx\\ &=\frac{1}{nh}\int_0^n [\prod _{j=0,j\neq i}^n\frac{(a+th)-(a+jh)}{(a+ih)-(a+jh)}]dx\\ &=\frac{1}{n} \int_0^n \prod _{j=0,j\neq i}^n\frac{t-j}{i-j}dt\\ &=\frac{(-1)^{n-i}}{n\times i!\times(n-i)!}\int_0^n[\prod _{j=0,j\neq i}^n(t-h)]dt \end{aligned}

# 牛顿 - 科特斯公式的稳定性

考虑计算 f(xi)f(x_i) 时产生的舍入误差 εi\varepsilon_i

abf(x)dx(ba)i=0nCi[f(xi)+εi]\int_a^b f(x)dx\approx (b-a)\sum_{i=0}^n C_i[f(x_i)+\varepsilon_i]

则由舍入误差引起的积分误差为:

ε=(ba)i=0nCi[f(xi)+εi](ba)i=0nCif(xi)=(ba)i=0nCiεi\begin{aligned} \varepsilon &= (b-a)\sum_{i=0}^n C_i[f(x_i)+\varepsilon_i] - (b-a)\sum_{i=0}^n C_if(x_i) \\ &= (b-a)\sum_{i=0}^n C_i\varepsilon_i \end{aligned}

εmax=maxεi\varepsilon_{max}=\max|\varepsilon_i|

ε=(ba)i=0nCiεi(ba)i=0nCiεi=(ba)i=0nCiεi(ba)εmaxi=0nCi\begin{aligned} |\varepsilon|=&|(b-a)\sum_{i=0}^nC_i\varepsilon_i|\leq (b-a)\sum_{i=0}^n|C_i\varepsilon_i|=(b-a)\sum_{i=0}^n|C_i||\varepsilon_i|\\ &\leq (b-a)\varepsilon_{max}\sum_{i=0}^n|C_i| \end{aligned}

n7n\leq 7 时, CiC_i 皆为正,故:i=0nCi=i=0nCi=0\sum_{i=0}^n|C_i|=\sum_{i=0}^n C_i=0

ε(ba)εmax|\varepsilon|\leq (b-a)\varepsilon_{max}

\rightarrow 由舍入误差引起的积分误差有上界

n8n\geq 8 时, CiC_i 出现负数, 故:i=0nCi\sum_{i=0}^n|C_i| 随着 nn 的增大而不断增大

\rightarrow 由舍入误差引起的积分误差无上界

** 总结:** 高阶的牛顿 - 科特斯求积公式不是数值稳定的,所以不宜采用

# 公式的分类

梯形公式

几何意义:用四边形梯形的面积近似替代 y=f(x)y=f(x) 围成的曲边梯形的面积

辛普森公式

几何意义:用抛物线 y=p2(x)y=p_2(x) 围成的曲边梯形面积近似替代 y=f(x)y=f(x) 围成的曲边梯形的面积

科特斯公式

由四次 Lagrange 插值式推导而得得求积公式

abf(x)dx(ba)×7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)90\int_a^b f(x)dx\approx (b-a)\times\frac{7f(x_0)+32f(x_1)+12f(x_2)+32f(x_3)+7f(x_4)}{90}

# 公式的余项

# 牛顿 - 科特斯公式的余项

R=abf(n+1)(ξ)(n+1)!w(x)dxR=\int_a^b\frac{f^{(n+1)}(\xi)}{(n+1)!}w(x)dx

x=a+thx=a+th

R=0nf(n+1)(ξ)(n+1)!(a+tha0h)(a+tha1h)...(a+thanh)hdt=hn+2(n+1)!0nf(n+1)(ξ)j=0n(tj)dt\begin{aligned} R&=\int_0^n\frac{f^{(n+1)}(\xi)}{(n+1)!}(a+th-a-0h)(a+th-a-1h)...(a+th-a-nh)hdt\\ &=\frac{h^{n+2}}{(n+1)!}\int_0^nf^{(n+1)}(\xi)\prod_{j=0}^n(t-j)dt \end{aligned}

定理:当 nn 为偶数时,nn 阶 Newton-Cotes 求积公式得代数精度至少是 n+1n+1

证明

n+1n+1 次多项式为

qn+1(x)=k=0n+1bkxkq_{n+1}(x)=\sum_{k=0}^{n+1}b_kx^k

n+1n+1 阶导数为

qn+1(x)(n+1)=bn+1(n+1)!q_{n+1}(x)^{(n+1)}=b_{n+1}(n+1)!

R=hn+2(n+1)!0nbn+1(n+1)!j=0n(tj)dt=bn+1hn+20n(t0)(t1)....(tn)dt\begin{aligned} R&=\frac{h^{n+2}}{(n+1)!}\int_0^nb_{n+1}(n+1)!\prod_{j=0}^n(t-j)dt\\ &=b_{n+1}h^{n+2}\int_0^n(t-0)(t-1)....(t-n)dt \end{aligned}

n=2k,u=tkn = 2k,u=t-k

R=bn+1hn+2kk(u+k)(u+k1)...u(uk+1)(uk)duR=b_{n+1}h^{n+2}\int_{-k}^k (u+k)(u+k-1)...u(u-k+1)(u-k)du

H(u)=(u+k)(u+k1)...(uk+1)(uk)H(u)=(u+k)(u+k1)...(uk+1)(uk)=(1)2k+1H(u)=H(u)\begin{aligned} H(u)&=(u+k)(u+k-1)...(u-k+1)(u-k)\\ H(-u)&=(-u+k)(-u+k-1)...(-u-k+1)(-u-k)\\ &=(-1)^{2k+1}H(u)=-H(u) \end{aligned}

所以 H(u)H(u) 是奇函数 kkH(u)=0\int_{-k}^kH(u)=0

R=0R=0

# 梯形公式的余项

f(x)f(x)[a,b][a,b] 上由二阶连续导数

RT=h1+2(1+1)!01f(1+1)(ξ)(t0)(t1)dt=h3201f(ξ)t(t1)dt=h312f(η)\begin{aligned} R_T&=\frac{h^{1+2}}{(1+1)!}\int_0^1f^{(1+1)}(\xi)(t-0)(t-1)dt \\&=\frac{h^3}{2}\int_0^1f''(\xi)t(t-1)dt\\ &=-\frac{h^3}{12}f''(\eta) \end{aligned}

其中 h=bah=b-a

# 辛普森公式的余项

f(x)f(x)[a,b][a,b] 上有四阶连续导数

因为辛普森公式具有三次代数精度,所以只需将 f(x)f(x) 表示成某个三次插值多项式与其余项的和,然后再求积分即可知道辛普森公式的余项

p3(x)p_3(x) 是三次多项式且满足

p3(a)=f(a),p3(a+b2)=f(a+b2),p3(b)=f(b)p3(a+b2)=f(a+b2)p_3(a)=f(a),p_3(\frac{a+b}2)=f(\frac{a+b}{2}),p_3(b)=f(b)\\ p_3'(\frac{a+b}{2})=f'(\frac{a+b}{2})

对于 Hermite 插值,如果插值多项式 Hn(x)H_n(x)n+1n+1 个节点(包括重复节点)上满足函数值和导数值条件,那么截断误差的一般形式为:

Rn(x)=f(x)Hn(x)=f(n+1)(ξ)(n+1)!i=0n(xxi)miR_n(x) = f(x) - H_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^n (x - x_i)^{m_i}

其中:

  • xix_i 是插值节点,mim_i 是节点 xix_i 的重数(函数值条件计为 1 次,导数值条件每增加一阶导数,重数加 1)。
  • ξ\xi 是依赖于 xx 的某个点,位于包含 xx 和所有插值节点的最小区间内。

三次 Hermite 插值多项式的截断误差为:

R3(x)=f(4)(ξ)4!(xa)(xa+b2)2(xb)R_3(x) = \frac{f^{(4)}(\xi)}{4!}(x-a)\left(x-\frac{a+b}{2}\right)^2(x-b)

所以

R=abf(x)dxabp3(x)dx=abf(x)dx16(ba)[f(a)+4f(a+b2)+f(b)]=abf(4)(ξ)4!(xa)(xa+b2)2(xb)dx\begin{aligned} R&=\int_a^bf(x)dx-\int_a^bp_3(x)dx\\ &=\int_a^bf(x)dx-\frac{1}{6}(b-a)[f(a)+4f(\frac{a+b}{2})+f(b)]\\ &=\int_a^b\frac{f^{(4)}(\xi)}{4!}(x-a)\left(x-\frac{a+b}{2}\right)^2(x-b)dx \end{aligned}

积分中值定理:

f(x)f(x) 在区间 [a,b][a, b] 上连续,g(x)g(x)[a,b][a, b] 上不变号,则存在一点 η[a,b]\eta \in [a, b],使得:

abf(x)g(x)dx=f(η)abg(x)dx.\int_a^b f(x) g(x) \, \mathrm{d}x = f(\eta) \int_a^b g(x) \, \mathrm{d}x.

说明

  1. 连续性f(x)f(x) 在闭区间 [a,b][a, b] 上连续,确保其能取到最大值、最小值及所有中间值。
  2. 不变号g(x)0g(x) \geq 0g(x)0g(x) \leq 0 恒成立,保证积分值的符号一致性。
  3. 几何意义:加权平均值 f(η)f(\eta) 是函数 f(x)f(x) 在权重 g(x)g(x) 下的 “代表值”。

因为 x[a,b]x\in[a,b],所以 (xa)(xb)0(x-a)(x-b)\leq 0,所以 (xa)(xa+b2)2(xb)(x-a)\left(x-\frac{a+b}{2}\right)^2(x-b) 不变号

由积分中值定理得

R=f(4)(η)4!ab(xa)(xa+b2)2(xb)dx=190(ba2)5f(4)(η)\begin{aligned} R &=\frac{f^{(4)}(\eta)}{4!}\int_a^b(x-a)\left(x-\frac{a+b}{2}\right)^2(x-b)dx \\&=-\frac{1}{90}(\frac{b-a}{2})^5f^{(4)}(\eta) \end{aligned}

# 复化求积

概念:将积分区间分成若干个小区间,在每个小区间上采用次数不高的插值多项式去替代被积函数,构造出相应得求积公式,然后再把它们起来作为整个积分区间上的求积公式,就是复化求积

# 复化梯形

abf(x)dx=h2[f(a)+2i=0n1f(xk)+f(b)]\int_a^bf(x)dx=\frac{h}{2}[f(a)+2\sum_{i=0}^{n-1}f(x_k)+f(b)]

# 复化辛普森公式

因为需要区间中点,所以将区间分成偶等分

abf(x)dx=h3[f(a)+4k=1mf(x2k1)+2k=1m1f(x2k)+f(b)]\int_a^bf(x)dx=\frac{h}{3}[f(a)+4\sum_{k=1}^mf(x_{2k-1})+2\sum_{k=1}^{m-1}f(x_{2k})+f(b)]

# 复化 Cotes 公式

# 复化求积的截断误差

# 复化梯形的截断误差

RT=112nh3f(η),η[a,b]R_{T}=-\frac{1}{12}nh^3f''(\eta),\eta\in[a,b]

# 复化辛普森公式的截断误差

RS=(n/2)h590f(4)(η),η[a,b]R_S=-\frac{(n/2)h^5}{90}f^{(4)}(\eta),\eta\in[a,b]

# 步长的自动选取

小区间 [xi,xi+1][x_i,x_{i+1}],记小区间中点: x_{i+\frac{1}{2}}=\frac{x_i+x_{i+1}}

区间二分前、后的积分值分别记为 T_{i1},T_

Ti1=h2[f(xi)+f(xi+1)]Ti2=h/22[f(xi)+f(xi+12)]+h/22[f(xi+12)+f(xi+1)]=12Ti1+h2f(xi+12)T2n=i=0n1Ti2=12i=0n1Ti1+h2i=0n1f(xi+12)=12Tn+h2i=0n1f(xi+12)\begin{aligned} T_{i1}&=\frac{h}{2}[f(x_i)+f(x_{i+1})]\\ T_{i2}&=\frac{h/2}{2}[f(x_i)+f(x_{i+\frac{1}{2}})]+\frac{h/2}{2}[f(x_{i+\frac{1}{2}})+f(x_{i+1})]\\ &=\frac{1}{2}T_{i1}+\frac{h}{2}f(x_{i+\frac{1}{2}}) \\T_{2n}&=\sum_{i=0}^{n-1}T_{i2}\\ &=\frac{1}{2}\sum_{i=0}^{n-1}T_{i1}+\frac{h}{2}\sum_{i=0}^{n-1}f(x_{i+\frac{1}{2}})\\ &=\frac{1}{2}T_n+\frac{h}{2}\sum_{i=0}^{n-1}f(x_{i+\frac{1}{2}}) \end{aligned}

# 龙贝格(Romberg)求积公式

复化梯形求积,积分区间分为 nn 等分时的截断误差为:

ITn=h212(ba)f(η)=h212abf(x)dx=h212[f(b)f(a)]I-T_n=-\frac{h^2}{12}(b-a)f''(\eta)=-\frac{h^2}{12}\int_a^bf''(x)dx=-\frac{h^2}{12}[f'(b)-f'(a)]

其中 h=\frac{b-a}

显然

ITnh2I-T_n\propto h^2

所以

IT2n=14(ITn)I-T_{2n}=\frac{1}{4}(I-T_n)

化简可得

IT2n13(T2nTn)I-T_{2n}\approx\frac{1}{3}(T_{2n}-T_n)

叠加上误差,可得到比 T2nT_{2n} 更精确的积分值

Tˉ=T2n+13(T2nTn)=43T2n13Tn\bar T=T_{2n}+\frac{1}{3}(T_{2n}-T_n)=\frac{4}{3}T_{2n}-\frac{1}{3}T_n

经化简得

43T2n13Tn=S2n\frac{4}{3} T_{2n} - \frac{1}{3} T_n = S_{2n}

化简过程

43T2n=43h/22[f(a)+2i=0n1f(xi+12)+2i=1n1f(xi)+f(b)]=h6[2f(a)+4i=0n1f(xi+12)+4i=1n1f(xi)+2f(b)]13Tn=13h2[f(a)+2i=1n1f(xi)+f(b)]=h6[f(a)+2i=1n1f(xi)+f(b)]Tˉ=43T2n13Tn=h6[f(a)+4i=0n1f(xi+12)+2i=1n1f(xi)+f(b)]=S2n\begin{aligned} \frac{4}{3} T_{2n} &= \frac{4}{3} \cdot \frac{h/2}{2} \left[ f(a) + 2 \sum_{i=0}^{n-1} f(x_{i+\frac{1}{2}}) + 2 \sum_{i=1}^{n-1} f(x_i) + f(b) \right] \\&= \frac{h}{6} \left[ 2f(a) + 4 \sum_{i=0}^{n-1} f(x_{i+\frac{1}{2}}) + 4 \sum_{i=1}^{n-1} f(x_i) + 2f(b) \right] \\\frac{1}{3} T_n &= \frac{1}{3} \cdot \frac{h}{2} \left[ f(a) + 2 \sum_{i=1}^{n-1} f(x_i) + f(b) \right]\\ &= \frac{h}{6} \left[ f(a) + 2 \sum_{i=1}^{n-1} f(x_i) + f(b) \right]\\ \bar{T} &= \frac{4}{3} T_{2n} - \frac{1}{3} T_n\\ &= \frac{h}{6} \left[ f(a) + 4 \sum_{i=0}^{n-1} f(x_{i+\frac{1}{2}}) + 2 \sum_{i=1}^{n-1} f(x_i) + f(b) \right]\\ &= S_{2n} \end{aligned}

根据上述公式,我们可以总结

T2n=Tn2+h2i=1n1f(xi+12)T_{2n}=\frac{T_n}{2}+\frac{h}{2}\sum_{i=1}^{n-1}f(x_{i+\frac{1}{2}})

其中 hh 表示二分前的步长,f(xi+12)f(x_{i+\frac{1}{2}}) 表示二分节点的值