数值分析:数值积分

数值积分定义

大多数定积分问题都不能通过解析法,即计算牛顿一莱布尼茨公式abf(x)dx=F(b)F(a)\int_{a}^{b}{f(x)}\,{\rm d}x = F(b) - F(a)来求解,数值积分方法就是将f(x)f(x)用简单函数近似替代(比如泰勒展开),利用离散数据求函数的数值积分,从而避免了寻求原函数的困难,并为计算机求积分提供了可行性。

近似定积分

左矩形

abf(x)dx=f(a)(ba)+(ba)22f(η)   η(a,b)\int_{a}^{b}{f(x)}\,{\rm d}x = f(a)(b-a) + \dfrac{(b-a)^2}{2} f'(η) { \ \ \ } η∈(a,b)

右矩形

abf(x)dx=f(b)(ba)(ba)22f(η)   η(a,b)\int_{a}^{b}{f(x)}\,{\rm d}x = f(b)(b-a) - \dfrac{(b-a)^2}{2} f'(η) { \ \ \ } η∈(a,b)

中矩形

abf(x)dx=f(a+b2)(ba)(ba)324f(η),   η(a,b)\int_{a}^{b}{f(x)}\,{\rm d}x = f(\dfrac{a+b}{2})(b-a) -\dfrac{(b-a)^3}{24} f''(η), { \ \ \ } η∈(a,b)

数值求积公式

x0,x1,,xn[a,b]x_0,x_1,\cdots,x_n∈[a,b],函数f(x)f(x)在区间[a,b][a,b]上可积,对给定权函数ρ(x)>0ρ(x)>0,有

abf(x)ρ(x)dx=i=0nAif(xi)+R(f)\int_{a}^{b} f(x)ρ(x) \,{\rm d}x = \sum\limits_{i=0}^{n} A_if(x_i) + R(f)

一般形式

abf(x)dxi=0nAif(xi)\int_{a}^{b}{f(x)}\,{\rm d}x ≈ \sum\limits_{i=0}^{n} A_if(x_i)

代数精度

若对于f(x)=xk,   k=0,1,2,,mf(x)=x^k, { \ \ \ } k=0,1,2,\dots,m,即对于次数不超过mm的多项式,求积公式abf(x)dx=i=0nAif(xi)\int_{a}^{b}{f(x)}\,{\rm d}x = \sum\limits_{i=0}^{n} A_if(x_i)都精确成立,但对f(x)=xm+1f(x)=x^{m+1}不精确成立,亦可表示为

{abxkdx=i=0nAif(xik)abxm+1dxi=0nAif(xim+1)\begin{cases} \int_{a}^{b}{x^k}\,{\rm d}x = \sum\limits_{i=0}^{n} A_if(x_i^k) \\ \\ \int_{a}^{b}{x^{m+1}}\,{\rm d}x ≠ \sum\limits_{i=0}^{n} A_if(x_i^{m+1}) \end{cases}

则称该求积公式具有mm次代数精度。

例1

确定下式的代数精度

ff I(f)I(f) I1(f)I_1(f) I2(f)I_2(f)
11 111dx=2\int^{1}_{-1}1{\rm d}x=2 1+2+12=2\frac{1+2+1}{2}=2 1+1=21+1=2
xx 11xdx=0\int^{1}_{-1}x{\rm d}x=0 1+0+12=0\frac{-1+0+1}{2}=0 1+13=0\frac{-1+1}{\sqrt{3}}=0
x2x^2 11x2dx=23\int^{1}_{-1}x^2{\rm d}x=\frac{2}{3} 1+0+12=1\frac{1+0+1}{2}=1 1+13=23\frac{1+1}{3}=\frac{2}{3}
x3x^3 11x3dx=0\int^{1}_{-1}x^3{\rm d}x=0 INVALID 1+133=0\frac{1+1}{3\sqrt{3}}=0
x4x^4 11x4dx=25\int^{1}_{-1}x^4{\rm d}x=\frac{2}{5} INVALID 1+19=29\frac{1+1}{9}=\frac{2}{9}

综上可知,I1(f)I_1(f)为1次代数精度,I2(f)I_2(f)为3次代数精度。

例2

试确定0hf(x)dxA0f(0)+A1f(h)+A2f(0)\int_{0}^{h} f(x){\rm d}x ≈ A_0f(0) + A_1f(h) + A_2f'(0)的系数A0,A1,A2A_0,A_1,A_2,使该多项式具有尽可能高的代数精度。

ff 0hf(x)dx\int_{0}^{h} f(x){\rm d}x A0f(0)+A1f(h)+A2f(0)A_0f(0) + A_1f(h) + A_2f'(0)
11 hh A0+A1A_0+A_1
xx h22\frac{h^2}{2} 0+A1h+A20+A_1h+A_2
x2x^2 h33\frac{h^3}{3} 0+A1h2+00+A_1h^2+0
x3x^3 h44\frac{h^4}{4} 0+A1h3+00+A_1h^3+0

从而得{h=A0+A1h22=A1h+A2h33=A1h2\begin{cases} h = A_0+A_1 \\ \frac{h^2}{2} = A_1h+A_2 \\ \frac{h^3}{3} = A_1h^2 \end{cases},解得{A0=23hA1=13hA2=16h2\begin{cases} A_0 = \frac{2}{3}h \\ A_1 = \frac{1}{3}h \\ A_2 = \frac{1}{6}h^2 \end{cases}

ff 0hf(x)dx\int_{0}^{h} f(x){\rm d}x A0f(0)+A1f(h)+A2f(0)A_0f(0) + A_1f(h) + A_2f'(0)
x3x^3 h44\frac{h^4}{4} A1h3=13h4A_1h^3=\frac{1}{3}h^4

故多项式最高可达2次代数精度,此时系数为{A0=23hA1=13hA2=16h2\begin{cases} A_0 = \frac{2}{3}h \\ A_1 = \frac{1}{3}h \\ A_2 = \frac{1}{6}h^2 \end{cases}

插值型求积公式

拉格朗日(Lagrange)插值多项式:
Ln(x)=i=0nli(x)f(xi)L_n(x) = \sum\limits_{i=0}^{n} l_i(x)f(x_i)

在节点x0,x1,,xn[a,b]x_0,x_1,\cdots,x_n∈[a,b]上构造插值型求积公式。

abf(x)ρ(x)dxabLn(x)ρ(x)dx=i=0nAif(xi)\int_{a}^{b}{ f(x)ρ(x) }\,{\rm d}x ≈ \int_{a}^{b}{ L_n(x)ρ(x) }\,{\rm d}x = \sum\limits_{i=0}^{n} A_i f(x_i)

误差

R(f)=1(n+1)!abf(n+1)(ξ)(i=0nxxi)ρ(x)dx   ξ(a,b)R(f) = \dfrac{1}{(n+1)!} \int_{a}^{b} { f^{(n+1)}(ξ) \left( \prod_{i=0}^{n} x-x_i \right) ρ(x) } {\,{\rm d}x} { \ \ \ } ξ∈(a,b)

利用积分中值定理有

R(f)=f(n+1)(η)KR(f) = f^{(n+1)}(η)K

ρ(x)=1ρ(x)=1f(x)=xn+1f(x)=x^{n+1}

R(f)=f(n+1)(η)(n+1)![1n+2(bn+2an+2)i=0nAixin+1]R(f) = \dfrac{f^{(n+1)}(η)}{(n+1)!} \left[ \dfrac{1}{n+2}(b^{n+2} - a^{n+2}) - \sum_{i=0}^{n} A_ix_i^{n+1} \right]

n+1n+1个互异节点至少有nn次代数精度,最高可达2n+12n+1次代数精度(详见高斯型求积公式)。

牛顿科特斯(Newton-Cotes)求积公式

当插值节点等距时,得到得插值型求积公式即为牛顿科特斯(Newton-Cotes)求积公式

abf(x)dxi=0nAif(xi)=(ba)i=0nCi(n)f(xi)\int_a^b f(x) \,{\rm d}x ≈ \sum\limits_{i=0}^{n} A_i f(x_i) = (b-a)\sum\limits_{i=0}^{n} C_i^{(n)}f(x_i)

当Cotes系数为负数时是数值不稳定的,当n8n≥8时Cotes系数开始出现负数,即高阶Newton-Cotes公式的稳定性无法得到保证(我们一般只取n=1,2,4n=1,2,4n+1n+1个节点的求积公式至少有nn次代数精度;当nn为偶数时,至少有n+1n+1次代数精度。

梯形公式

牛顿科特斯(Newton-Cotes)求积公式n=1n=1,即2个节点时

abf(x)dxba2[f(a)+f(b)]=T\int_{a}^{b}{f(x)}\,{\rm d}x ≈ \dfrac{b-a}{2} [f(a)+f(b)] = T

1次代数精度

辛普森(Simpson)公式

牛顿科特斯(Newton-Cotes)求积公式n=2n=2,即3个节点时

abf(x)dxba6[f(a)+4f(a+b2)+f(b)]=S\int_a^b f(x) \,{\rm d}x ≈ \dfrac{b-a}{6}\left[ f(a)+4f(\dfrac{a+b}{2})+f(b) \right] = S

3次代数精度

科特斯(Cotes)公式

牛顿科特斯(Newton-Cotes)求积公式n=4n=4,即5个节点时

abf(x)dxba90[7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)]=C\int_a^b f(x) {\rm d}x ≈ \dfrac{b-a}{90} \left[ 7f(x_0) + 32f(x_1) + 12f(x_2) + 32f(x_3) + 7f(x_4) \right] = C

5次代数精度

用Simpson公式求y(x)=01(13xt)y(t)dt+(13x)y(x) = \int_0^1 (1-3xt)y(t) {\,{\rm d}t} +(1-3x)

f(t)=(13xt)y(t)f(t) = (1-3xt)y(t),由Simpson公式得

01(13xt)y(t)dt16[f(0)+4f(12)+f(1)]=y(0)+4(132x)y(12)+(13x)y(1)6\int_0^1 (1-3xt)y(t) {\,{\rm d}t} ≈ \dfrac{1}{6}\left[ f(0)+4f(\dfrac{1}{2})+f(1) \right] = \dfrac{y(0) + 4(1-\dfrac{3}{2}x)y(\frac{1}{2}) + (1-3x)y(1)}{6}

因此近似解

y~(x)=y(0)+4(132x)y(12)+(13x)y(1)6+(13x)\tilde{y}(x) = \dfrac{y(0)+4(1-\dfrac{3}{2}x)y(\frac{1}{2})+(1-3x)y(1)}{6} + (1-3x)

x=0,12,1x=0,\frac{1}{2},1

{y~(0)=16[y~(0)+4y~(12)+y~(1)]+1y~(12)=16[y~(0)+y~(12)12y~(1)]12y~(1)=16[y~(0)2y~(12)2y~(1)]2\begin{cases} \tilde{y}(0) = \frac{1}{6} \left[ \tilde{y}(0) + 4\tilde{y}(\frac{1}{2}) + \tilde{y}(1) \right] + 1 \\\\ \tilde{y}(\frac{1}{2}) = \frac{1}{6} \left[ \tilde{y}(0) + \tilde{y}(\frac{1}{2}) - \frac{1}{2}\tilde{y}(1) \right] - \frac{1}{2} \\\\ \tilde{y}(1) = \frac{1}{6} \left[ \tilde{y}(0) - 2\tilde{y}(\frac{1}{2}) - 2\tilde{y}(1) \right] - 2 \end{cases}

解得 {y~(0)=23y~(12)=13y~(1)=43\begin{cases} \tilde{y}(0) = \frac{2}{3} \\ \tilde{y}(\frac{1}{2}) = -\frac{1}{3} \\ \tilde{y}(1) = -\frac{4}{3} \end{cases},带入y~(x)\tilde{y}(x)

y~(x)=232x\tilde{y}(x) = \dfrac{2}{3} - 2x

复化求积公式

通过增加求积节点的个数来提高计算精度是不可行的(高阶Newton-Cotes公式稳定性得不到保证)。

将区间分成若干个小区间,每个区间的结果加起来得到整个区间的求积公式。

复化梯形公式

Tn=h2[f(a)+2i=1n1f(xi)+f(b)]T_n = \dfrac{h}{2} \left[ f(a) + 2\sum_{i=1}^{n-1}f(x_i) + f(b) \right]

复化辛普森公式

Sn=h6[f(a)+4i=0n1f(xi+12)+2i=1n1f(xi)+f(b)]S_n = \dfrac{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]

计算积分I=0π2sinxdxI = \int_{0}^{\frac{\pi}{2}} \sin x \,{\rm d}x,当使用梯形公式时,应将区间[0,π2][0, \frac{\pi}{2}]分成多少等份,才能使误差不超过12×103\frac{1}{2}×10^{-3},若取同样的求积节点,使用复化辛普森公式时截断误差是多少。

R(Tn)=ba12h2f(η)π24(π2n)2112×103\begin{array}{l} |R(T_n)| \\\\ \\\\ \\\\ \end{array} \begin{array}{l} = |-\dfrac{b-a}{12}h^2 f''(η)| \\\\ ≤ \dfrac{\pi}{24} \cdot (\dfrac{\pi}{2n})^2 \cdot 1 \\\\ ≤ \dfrac{1}{2}×10^{-3} \end{array}

n2π348×103n^2 ≥ \dfrac{\pi^3}{48} × 10^3,取n=26n=26

n=26n=26时,使用复化辛普森公式有

R(Sn)=ba2880h4f(4)(η)π5760(π26)410.7266303×109\begin{array}{l} |R(S_n)| \\\\ \\\\ \\\\ \end{array} \begin{array}{l} = |-\dfrac{b-a}{2880}h^4 f^{(4)}(η)| \\\\ ≤ -\dfrac{\pi}{5760} \cdot (\dfrac{\pi}{26})^4 \cdot 1 \\\\ ≤ 0.7266303 × 10^{−9} \end{array}

龙贝格(Romberg)求积公式

复化Cotes公式

高斯型求积公式

正交多项式

使求积公式具有2n+12n+1次代数精度的节点x0,x1,x2,,xnx_0,x_1,x_2,\dots,x_nn+1n+1个节点)称为Gauss点,此时的插值型求积公式称为Gauss型求积公式

当且仅当x0,x1,x2,,xnx_0,x_1,x_2,\dots,x_n[a,b][a,b]上以ρ(x)ρ(x)为权函数的n+1n+1次正交多项式Pn+1(x)P_{n+1}(x)的零点,x0,x1,x2,,xnx_0,x_1,x_2,\dots,x_nGauss点

特别地,在区间[1,1][-1,1]上,权函数ρ(x)=1ρ(x)=1,取Pn+1(x)=12n+1(n+1)!dn+1dxn+1(x21)n+1P_{n+1}(x) = \dfrac{1}{2^{n+1}(n+1)!} \dfrac{ {\rm d}^{n+1} }{ {\rm d}x^{n+1} }(x^2-1)^{n+1}的零点x0,x1,x2,,xnx_0,x_1,x_2,\dots,x_n,构造插值型求积公式,即古典高斯型求积公式

11ρ(x)f(x)dxi=0nAif(xi)\int_{-1}^{1} ρ(x)f(x) \,{\rm d}x ≈ \sum_{i=0}^{n} A_if(x_i)

3次代数精度

x[a,b]∀x∈[a,b],若令x=a+b2+ba2tx=\dfrac{a+b}{2}+\dfrac{b-a}{2}t,则dx=ba2dt   t[1,1]{\rm d}x = \dfrac{b-a}{2}{\rm d}t { \ \ \ } t∈[-1,1],得

abf(x)dx=ba211f(a+b2+ba2t)dtba2i=0nAif(a+b2+ba2ti)\int_{a}^{b} f(x) {\rm d}x = \dfrac{b-a}{2} \int_{-1}^{1} f \left( \dfrac{a+b}{2} + \dfrac{b-a}{2}t \right) {\rm d}t ≈ \dfrac{b-a}{2} \sum_{i=0}^{n} A_i f \left( \dfrac{a+b}{2} + \dfrac{b-a}{2}t_i \right)

差商型求积公式

一阶向前差商

f(x0)=f(x0+h)f(x0)h+O(h)f'(x_0) = \dfrac{f(x_0+h)-f(x_0)}{h} + O(h)

一阶向后差商

f(x0)=f(x0)f(x0h)h+O(h)f'(x_0) = \dfrac{f(x_0)-f(x_0-h)}{h} + O(h)

一阶中心差商

f(x0)=f(x0+h)f(x0h)2h+O(h2)f'(x_0) = \dfrac{f(x_0+h)-f(x_0-h)}{2h} + O(h^2)

二阶中心差商

f(x0)=f(x0+h)2f(x0)+f(x0h)h2+O(h2)f'(x_0) = \dfrac{f(x_0+h)-2f'(x_0)+f(x_0-h)}{h^2} + O(h^2)