跳到主要内容

数值积分

阐述​

计算

I=∫abf(x)dx≈IN=∑n=0Nf(xn)wnI=\int_a^b f(x)\mathrm dx\approx I_N=\sum_{n=0}^Nf(x_n)w_n

通过在有限个点上计算 f(x)f(x) 的值并求和来近似这个积分。方便起见,可以选取 [0,π][0,\pi] 这个区间。

梯形法则​

IN=∑n=0N−1πNf(nπ/N)+f((n+1)π/N)2I_N=\sum_{n=0}^{N-1}\frac\pi N\frac{f(n\pi/N)+f((n+1)\pi/N)}2

Clenshaw-Curtis 格点​

进行变量代换:

I=∫−11f(x)dx=∫0πf(cos⁡θ)sin⁡θdθ=a0+∑k=1+∞2a2k1−(2k)2=dTaI=\int_{-1}^1f(x)\mathrm dx=\int_0^\pi f(\cos\theta)\sin\theta\mathrm d\theta=a_0+\sum_{k=1}^{+\infty}\frac{2a_{2k}}{1-(2k)^2}=d^Ta

其中 f(cos⁡θ)f(\cos\theta) 这个部分在 [0,π][0,\pi] 内部是光滑的,而且所有奇数次导数在 0,π0,\pi 都为 0。所以

f(cos⁡θ)=a02+∑k=1+∞akcos⁡kθf(\cos\theta)=\frac{a_0}2+\sum_{k=1}^{+\infty}a_k\cos k\theta

的各项系数是指数衰减的。接下来计算系数:

ak=2π∫0πf(cos⁡θ)cos⁡kθdθa_k=\frac2\pi\int_0^\pi f(\cos\theta)\cos k\theta\mathrm d\theta

这些系数都可以用梯形法则来计算,最终得到 a=Dya=Dy,而且这个 DD 可以用离散余弦变换算出来。最终 I=dTDy=wTyI=d^TDy=w^Ty 就是所求的法则。

自适应格点积分​

  • p-适应:反复加倍 NN
  • h-适应:反复对区间二分,然后对每个区间使用固定的 NN 积分
  • h, p-适应:两者都有

如果某个比较小的 NN 格点包含在比较大的 NN 之内,则称这个积分是嵌套的。Chlenshaw-Curtis 积分是嵌套的,因为

xn=cos⁡(πnN)x_n=\cos\left(\frac{\pi n}N\right)

实例​

性质​

误差分析​

一般情况下,误差  1/N2~1/N^2,但有些情况下收敛速度是指数的。

在 [0,π][0,\pi] 上做 Fourier 展开:

f(x)=a02+∑k=1∞akcos⁡(kx)f(x)=\frac{a_0}2+\sum_{k=1}^\infty a_k\cos (kx)

得到

IN=I+π∑m=1∞a2mNI_N=I+\pi\sum_{m=1}^\infty a_{2mN}

所以收敛速度取决于 Fourier 系数的收敛速度。例如,

  • 如果 ak∼k−2a_k\sim k^{-2},则得到的结果是 1/N21/N^2 收敛
  • 如果 ak∼e−αka_k\sim e^{-\alpha k},则得到的结果是 e−2αNe^{-2\alpha N} 收敛

考虑积分

ak=2π∫0πf(x)cos⁡kxdxa_k=\frac2\pi\int_0^\pi f(x)\cos kx\mathrm dx

通过分部积分可以算出,如果 f(2m+1)(0)=f(2m+1)(π)f^{(2m+1)}(0)=f^{(2m+1)}(\pi),则收敛比任何多项式都要快。

相关内容​

参考文献​