[学习笔记] - 数值积分

我们在微积分中,通过切割面积,使用无数个矩形去逼近曲线的面积,然后求极限得到曲线的面积,但是通过上面的图可以发现,这样太慢了,其他问题还有

  • f(x)f(x)形式复杂,求原函数非常困难

f(x)=ax2+bx+cf(x) = \sqrt{ax^2 + bx + c}

  • f(x)f(x)的原函数不能用初等函数形式表示

f(x)=1lnx,ex2,sinx2,sinxxf(x) = \frac{1}{\ln x}, \quad e^{-x^2}, \quad \sin x^2, \quad \frac{\sin x}{x}

  • f(x)f(x)虽有初等函数表示的原函数,但其原函数表示形式相当复杂

f(x)=11+x4f(x) = \frac{1}{1 + x^4}

  • f(x)f(x)本身没有解析表达式,其函数关系由表格或图像给出,如实验或测量数据。

牛顿-柯斯特公式

在数值分析上,梯形法则辛普森法则都是数值积分的方法,用于计算定积分
这两种方法都属于牛顿-柯斯特公式,使函数于等距n+1n + 1点的值,取得一个nn次的多项式来近似原来的函数,再行求积

积分中值定理

对于连续函数f(x)f(x),有

I=abf(x)dx=(ba)f(c),c[a,b]I = \int^b_a f(x)dx = (b - a)f(c), \quad c \in [a, b]

若能对f(c)f(c)提供一种近似,就能够得到对应的数值积分公式

I=abf(x)dx(ba)f(a)左矩形公式I=abf(x)dx(ba)f(b)右矩形公式I=abf(x)dx(ba)f(a+b2)中矩形公式\begin{aligned} I &= \int^b_a f(x)dx \approx (b -a)f(a) & \text{左矩形公式} \\ I &= \int^b_a f(x)dx \approx (b -a)f(b) & \text{右矩形公式} \\ I &= \int^b_a f(x)dx \approx (b -a)f(\frac{a+b}{2}) & \text{中矩形公式} \end{aligned}

左矩形公式 右矩形公式 中矩形公式

f(x)f(x)[a,b][a, b]n+1n + 1个节点xix_i处的高度为f(xi)f(x_i),可通过加权平均的方法近似地得到平均高度f(c)f(c),从而得到求积公式

I=abf(x)dxi=0nAif(xi)I = \int^b_a f(x)dx \approx \sum^n_{i=0}A_i f(x_i)

  • xix_i为求积节点
  • AiA_i为求积系数

Rn(f)=abf(x)dxi=0nAif(xi)R_n(f) = \int^b_a f(x) dx - \sum^n_{i=0}A_i f(x_i)

为求积公式的截断误差
以中矩形公式为例,设F(x)F(x)f(x)f(x)的原函数

axf(s)ds=F(x)\int^x_a f(s) ds = F(x)

由泰勒展开可知

aa+hf(s)ds=F(a+h)=F(a)+F(a)h+F(a)h22+F(a)h36+O(h4),h=ba\begin{aligned} \int^{a+h}_a f(s) ds &= F(a + h) \\ &= F(a) + F'(a)h + F''(a)\frac{h^2}{2} + F'''(a)\frac{h^3}{6} + O(h^4), \quad h = b - a \end{aligned}

F(x)F(x)的定义可知

F(a)=0F(a)=f(a)F(a)=f(a)F(a)=f(a)\begin{aligned} F(a) &= 0 \\ F'(a) &= f(a) \\ F''(a) &= f'(a) \\ F'''(a) &= f''(a) \end{aligned}

从而

aa+hf(s)ds=0+f(a)h+f(a)h22+f(a)h36+O(h4)\int^{a+h}_a f(s) ds = 0 + f(a)h + f'(a)\frac{h^2}{2} + f''(a)\frac{h^3}{6} + O(h^4)

hf(a+h2)=h[f(a)+f(a)h2+f(a)h28+O(h3)]h \cdot f(a+ \frac{h}{2}) = h \cdot \Big[f(a) + f'(a)\frac{h}{2} + f''(a)\frac{h^2}{8} + O(h^3)\Big]

于是

aa+hf(s)dshf(a+h2)=h324f(a)+O(h4)=O(h3)\Big| \int^{a+h}_a f(s) ds - h \cdot f(a+\frac{h}{2}) \Big| = \frac{h^3}{24} f''(a) + O(h^4) = O(h^3)

插值求积公式

值是建立逼近函数的手段,用以研究原函数的性质。因此,可以用插值函数的导数近似为原函数的导数

f(k)(x)Ln(k)xf^{(k)}(x) \approx L^{(k)}_n{x}

[a,b][a, b]上的节点为a=x0<x1<<xn<ba = x_0 < x_1 < \cdot < x_n < b,则f(x)f(x)的拉格朗日插值多项式为

Ln(x)=i=0nli(x)f(xi),li(x)=j=0,jinxxjxixjL_n(x) = \sum^n_{i=0}l_i(x)f(x_i), \quad l_i(x) = \prod^n_{j=0,j\neq i}\frac{x - x_j}{x_i - x_j}

Ln(x)L_n(x)作为f(x)f(x)的近似函数有

I=abf(x)dxabLn(x)dx=abi=0nli(x)f(xi)dx=i=0n(abli(x)dx)f(xi)\begin{aligned} I &= \int^b_a f(x) dx \approx \int^b_a L_n(x) dx \\ &= \int^b_a \sum^n_{i=0} l_i(x) f(x_i) dx \\ &= \sum^n_{i=0} (\int^b_a l_i(x)dx) f(x_i) \end{aligned}

Ai=abli(x)dxA_i = \int^b_a l_i(x)dx,则有插值性求积公式

I=abf(x)dxi=0nAif(xi)\color{red} I = \int^b_a f(x) dx \approx \sum^n_{i = 0} A_i f(x_i)

AiA_i只与插值节点xix_i有关,与被积函数f(x)f(x)无关

上述公式的截断误差为

Rn(f)=ab[f(x)Ln(x)]dx=1(n+1)!abf(n+1)(c)wn+1(x)dxwn+1=i=0n(xxi),c(a,b)\begin{aligned} R_n(f) &= \int^b_a \big[f(x) - L_n(x)\big]dx \\ &= \frac{1}{(n + 1)!}\int^b_a f^{(n+1)}(c) w_{n+1}(x)dx \\ \\ w_{n+1} &= \prod^n_{i=0}(x - x_i), \quad c \in (a, b) \end{aligned}

Cotes系数

在插值型求积公式中,取等距节点,即将[a,b][a,b]nn等分,记节点为xi=a+ih(i=1,2,,n),h=banx_i = a + ih(i = 1, 2, \cdots, n), h = \frac{b - a}{n}。记x=a+thx = a+ th,则

Ai=abj=0,jinxxjxixjdx=h0nj=0,jintjijdt=ban(1)nii!(ni)!0nj=0,jin(tj)dt\begin{aligned} A_i &= \int^b_a \prod^n_{j = 0, j \neq i}\frac{x - x_j}{x_i - x_j}dx \\ &= h\int^n_0 \prod^n_{j = 0, j \neq i}\frac{t - j}{i - j}dt \\ &= \frac{b - a}{n} \cdot \frac{(-1)^{n-i}}{i!(n - i)!} \int^n_0\prod^n_{j = 0, j \neq i}(t - j)dt \end{aligned}

Ci(n)=1n(1)nii!(ni)!0nj=0,jin(tj)dtAi=(ba)Ci(n)C^{(n)}_i = \frac{1}{n}\frac{(-1)^{n-i}}{i!(n - i)!} \int^n_0\prod^n_{j = 0, j \neq i}(t - j)dt \Rightarrow \color{red} A_i = (b -a)C^{(n)}_i

于是得到牛顿-柯斯特公式

I=abf(x)dx(ba)i=0nCi(n)f(xi)\color{red} I = \int^b_a f(x) dx \approx (b - a)\sum^n_{i=0} C^{(n)}_i f(x_i)

Ci(n)C^{(n)}_i成为Cotes系数

  • 对称性:Ci(n)=Cni(n)C^{(n)}_i = C^{(n)}_{n-i}
  • i=1nCi(n)=1\sum^n_{i=1}C^{(n)}_i = 1

梯形公式

C0(1)=C1(1)=01tdt=12I=abf(x)dxba2[f(a)+f(b)]\begin{aligned} C^{(1)}_0 &= C^{(1)}_1 = \int^1_0 t dt = \frac{1}{2} \\ \color{red}I &\color{red}= \int^b_a f(x) dx \approx \frac{b - a}{2}\Big [f(a) + f(b) \Big] \end{aligned}

f(x)f''(x)[a,b][a, b]上连续,则梯形公式的截断误差为

R1(f)=(ba)312f(c),c[a,b]R_1(f) = -\frac{(b - a)^3}{12}f''(c), \quad c \in [a,b]

辛普森公式

n=2,Simpsonrulen = 2, Simpson rule

C0(2)=C2(2)=1402t(t1)dt=16C1(2)=1402t(t2)dt=46I=abf(x)dxba6[f(a)+4f(a+b2)+f(b)]\begin{aligned} C^{(2)}_0 &= C^{(2)}_2 = \frac{1}{4}\int^2_0 t(t - 1)dt = \frac{1}{6} \\ C^{(2)}_1 &= \frac{1}{4} \int^2_0 t(t - 2)dt = \frac{4}{6} \\ \\ \color{red}I &\color{red}= \int^b_a f(x) dx \approx \frac{b - a}{6}\Big[f(a) + 4f(\frac{a+b}{2}) + f(b)\Big] \end{aligned}

f(4)(x)f^{(4)}(x)[a,b][a, b]上连续,则辛普森公式的截断误差为

R2(f)=(ba)52880f(4)(c)=190(ba2)5f(4)(c),c[a,b]\begin{aligned} R_2(f) &= -\frac{(b - a)^5}{2880}f^{(4)}(c) \\ &= -\frac{1}{90}(\frac{b - a}{2})^5 f^{(4)}(c), \quad c \in [a, b] \end{aligned}

辛普森3/8公式

I=abf(x)dxba8[f(x0)+3f(x1)+3f(x2)+f(x3)]\color{red}I = \int^b_a f(x) dx \approx \frac{b - a}{8}\Big[f(x_0) + 3f(x_1) + 3f(x_2) + f(x_3)\Big]

柯斯特公式

n=4,Cotesrulen = 4, Cotes rule

I=abf(x)dxba90[7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)]\color{red}I = \int^b_a f(x) dx \approx \frac{b - a}{90}\Big[7f(x_0) + 32f(x_1) + 12f(x_2) + 32f(x_3) + 7f(x_4)\Big]

f(6)(x)f^{(6)}(x)[a,b][a, b]上连续,则柯特斯公式的截断误差为

R4(f)=(ba)71013760f(4)(c)=8495(ba2)7f(6)(c),c[a,b]\begin{aligned} R_4(f) &= -\frac{(b - a)^7}{1013760}f^{(4)}(c) \\ &= -\frac{8}{495}(\frac{b - a}{2})^7 f^{(6)}(c), \quad c \in [a, b] \end{aligned}

总结

方法 公式
梯形公式 I=abf(x)dxba2[f(a)+f(b)]\color{red}I = \int^b_a f(x) dx \approx \frac{b - a}{2}\Big [f(a) + f(b) \Big]
辛普森公式 I=abf(x)dxba6[f(a)+4f(a+b2)+f(b)]\color{red}I = \int^b_a f(x) dx \approx \frac{b - a}{6}\Big[f(a) + 4f(\frac{a+b}{2}) + f(b)\Big]
辛普森3/8公式 I=abf(x)dxba8[f(x0)+3f(x1)+3f(x2)+f(x3)]\color{red}I = \int^b_a f(x) dx \approx \frac{b - a}{8}\Big[f(x_0) + 3f(x_1) + 3f(x_2) + f(x_3)\Big]
柯斯特公式 I=abf(x)dxba90[7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)]\color{red}I = \int^b_a f(x) dx \approx \frac{b - a}{90}\Big[7f(x_0) + 32f(x_1) + 12f(x_2) + 32f(x_3) + 7f(x_4)\Big]

参考