\qquad实际问题当中常常计算积分,有些数值方法如微分方程和积分方程的求解,也都和积分计算相联系。使用牛顿-莱布尼兹(Newton−LeibnizNewton-LeibnizNewton−Leibniz)公式求解往往比较困难,有时原函数不能用初等函数表示或者求解过程十分困难,因此有必要研究积分的数值计算问题。
\qquad由积分中值定理,在积分区间[a,b][a,b][a,b]中存在一点ξ\xiξ使得
∫baf(x)dx=(b−a)f(ξ)
\int_{b}^{a}f(x)dx=(b-a)f(\xi)
∫baf(x)dx=(b−a)f(ξ)\qquad但点ξ\xiξ的具体位置一般难以确定,称f(ξ)f(\xi)f(ξ)为区间[a,b][a,b][a,b]上的平均高度,只要对平均高度f(ξ)f(\xi)f(ξ)提出一种算法,相应的获得一种数值积分方法。
\qquad如果将两端的高度f(a)、f(b)f(a)、f(b)f(a)、f(b)的算术平均值作为平均高度f(ξ)f(\xi)f(ξ)的近似值,则求积公式为∫abf(x)dx≈b−a2[f(a)+f(b)]
\int_{a}^{b}f(x)dx\approx\frac{b-a}{2}[f(a)+f(b)]
∫abf(x)dx≈2b−a[f(a)+f(b)]称为梯形公式(n=1)。若使用区间中间点c=a+b2c=\frac{a+b}{2}c=2a+b作为ξ\xiξ,则可得公式为
∫abf(x)dx≈(b−a)f(a+b2)
\int_{a}^{b}f(x)dx\approx(b-a)f(\frac{a+b}{2})
∫abf(x)dx≈(b−a)f(2a+b)称为中矩形公式或矩形公式。
\qquad设将积分区间[a,b][a,b][a,b]划分为nnn等份,步长h=b−anh=\frac{b-a}{n}h=nb−a,选去等距节点xk=a+khx_{k}=a+khxk=a+kh构造的插值型求积公式为!!!\color{#F00}{!!!}!!!
In=(b−a)∑k=0nCk(n)f(xk)
I_{n}=(b-a)\sum_{k=0}^{n}C_{k}^{(n)}f(x_{k})
In=(b−a)k=0∑nCk(n)f(xk)称为牛顿-柯特斯(Newton-Cotes)公式,式中Ck(n)C_{k}^{(n)}Ck(n)称为柯特斯系数,引进变换x=a+thx=a+thx=a+th,则有
Ck(n)=(−1)n−knk!(n−k)!∫0n∏j=0j≠kn(t−j)dt
C_{k}^{(n)}=\frac{(-1)^{n-k}}{nk!(n-k)!}\int_{0}^{n}\mathop{\mathop{\prod}\limits_{j=0}}\limits_{j\neq k}^{n}(t-j)dt
Ck(n)=nk!(n−k)!(−1)n−k∫0nj̸=kj=0∏n(t−j)dt\qquad辛普森(Simpson)公式(n=2)
In=(b−a)[16f(a)+46f(a+b2)+16f(b)]
I_{n}=(b-a)[\frac{1}{6}f(a)+\frac{4}{6}f(\frac{a+b}{2})+\frac{1}{6}f(b)]
In=(b−a)[61f(a)+64f(2a+b)+61f(b)]代数精确度为3,余项表示为
R[f]=Kf(4)(η), η∈(a,b)
R[f]=Kf^{(4)}(\eta),\ \eta\in(a,b)
R[f]=Kf(4)(η), η∈(a,b)\qquad更一般的,在区间[a,b][a,b][a,b]上适当选取某些节点xkx_{k}xk,然后用f(xk)f(x_{k})f(xk)的加权平均的到平均高度的f(ξ)f(\xi)f(ξ)的近似值,构造的求积公式如下
∫abf(x)dx≈∑k=0nAkf(xk)
\int_{a}^{b}f(x)dx\approx\sum_{k=0}^{n}A_{k}f(x_{k})
∫abf(x)dx≈k=0∑nAkf(xk)式中xkx_{k}xk称为求积节点,AkA_{k}Ak称为求积系数,亦称为伴随节点xkx_{k}xk的权。权AkA_{k}Ak仅与节点xkx_{k}xk的选择有关,不依赖于被积函数f(s)f(s)f(s)的具体形式。
\qquad代数精度 定义1 !!!\color{#F00}{!!!}!!!如果某个求积公式对于次数不超过mmm的多项式均能准确的成立,但对于m+1m+1m+1次多项式就不准确成立,则称该求积公式具有mmm次代数精度。欲使求积公式具有mmm次代数精度,只要令其对f(x)=1,x,⋯ ,xmf(x)=1,x,\cdots,x^{m}f(x)=1,x,⋯,xm都能准确成立,即
{∑Ak=b−a∑Akxk=12(b2−a2),⋮∑Akxkm=1m+1(bm+1−am+1)
\begin{cases}
\sum A_{k}=b-a\\
\sum A_{k}x_{k}=\frac{1}{2}(b^{2}-a^{2}),\\
\vdots \\
\sum A_{k}x_{k}^{m}=\frac{1}{m+1}(b^{m+1}-a^{m+1})
\end{cases}
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧∑Ak=b−a∑Akxk=21(b2−a2),⋮∑Akxkm=m+11(bm+1−am+1)\qquad求积公式的收敛性与稳定性 定义2在求积公式中,若
limn→∞h→0∑k=0nAkf(xk)−∫abf(x)dx
\mathop{\mathop{lim}\limits_{n\to\infty}}\limits_{h\to 0}\sum_{k=0}^{n}A_{k}f(x_{k})-\int_{a}^{b}f(x)dx
h→0n→∞limk=0∑nAkf(xk)−∫abf(x)dx其中h=max1≤i≤n{xi−xi−1}h=\mathop{max}\limits_{1\leq i\leq n}\{x_{i}-x_{i-1}\}h=1≤i≤nmax{xi−xi−1},则称求积公式收敛。在求积公式中,由于计算f(xk)f(x_{k})f(xk)可能产生误差δk\delta_{k}δk实际的得到的为fk~\tilde{f_{k}}fk~,即f(xk)=fk~+δkf(x_{k})=\tilde{f_{k}}+\delta_{k}f(xk)=fk~+δk,记
In(f)=∑k=0nAkf(xk)In(f~)=∑k=0nAkfk~
I_{n}(f)=\sum_{k=0}^{n}A_{k}f(x_{k})\quad I_{n}(\tilde{f})=\sum_{k=0}^{n}A_{k}\tilde{f_{k}}
In(f)=k=0∑nAkf(xk)In(f~)=k=0∑nAkfk~如果对任给小正数ε>0\varepsilon>0ε>0,只要误差∣δk∣|\delta_{k}|∣δk∣充分小就有,
∣In(f)−In(f~)∣=∣∑k=0nAk[f(xk)−fk~]∣≤ε
|I_{n}(f)-I_{n}(\tilde{f})|=|\sum_{k=0}^{n}A_{k}[f(x_{k})-\tilde{f_{k}}]|\leq\varepsilon
∣In(f)−In(f~)∣=∣k=0∑nAk[f(xk)−fk~]∣≤ε表明求积公式计算是稳定的\color{#F00}{表明求积公式计算是稳定的}表明求积公式计算是稳定的。
\qquad定义3 对任意给定的ε>0\varepsilon>0ε>0,若∃δ>0\exists\delta>0∃δ>0,只要∣f(xk)−fk~∣≤δ(k=0,1,⋯ ,n)|f(x_{k})-\tilde{f_{k}}|\leq\delta(k=0,1,\cdots,n)∣f(xk)−fk~∣≤δ(k=0,1,⋯,n)就有上式成立,则称求积公式是稳定的。
\qquad求积公式的余项 若求积公式的代数精度为mmm,则由求积公式余项的表达式可将余项表达为
R[f]=∫abf(x)dx−∑k=0nAkf(xk)=Kf(m+1)(η)
R[f]=\int_{a}^{b}f(x)dx-\sum_{k=0}^{n}A_{k}f(x_{k})=Kf^{(m+1)}(\eta)
R[f]=∫abf(x)dx−k=0∑nAkf(xk)=Kf(m+1)(η)\qquadKKK为不依赖f(x)f(x)f(x)的待定参数,η∈(a,b)\eta\in(a,b)η∈(a,b)。结果表明当f(x)f(x)f(x)是次数小于等于mmm的多项式时,由于f(m+1)(x)=0f^{(m+1)}(x)=0f(m+1)(x)=0,故此时R[f]=0R[f]=0R[f]=0,即求积公式精确成立。当f(x)=xm+1f(x)=x^{m+1}f(x)=xm+1时,f(m+1)(x)=(m+1)!f^{(m+1)}(x)=(m+1)!f(m+1)(x)=(m+1)!,又Rn(f)≠0R_{n}(f)\neq 0Rn(f)̸=0,可求得
K=1(m+1)![∫abxm+1dx−∑k=0nAkxkm+1]=1(m+1)![1m+2(bm+2−am+2)−∑k=0nAkxkm+1]
K=\frac{1}{(m+1)!}[\int_{a}^{b}x^{m+1}dx-\sum_{k=0}^{n}A_{k}x_{k}^{m+1}]\\
=\frac{1}{(m+1)!}[\frac{1}{m+2}(b^{m+2}-a^{m+2})-\sum_{k=0}^{n}A_{k}x_{k}^{m+1}]
K=(m+1)!1[∫abxm+1dx−k=0∑nAkxkm+1]=(m+1)!1[m+21(bm+2−am+2)−k=0∑nAkxkm+1]带入余项可以的到具体的余项表达式。梯形公式和中矩形公式的代数精度为1,其余项表达式为
R[f]=Kf′′(η)
R[f]=Kf^{''}(\eta)
R[f]=Kf′′(η)
复合求积公式
\qquad为了提高精度通常将积分区域分成若干子区间(通常等分),在每个子区间上用低阶求积公式,称为复合求积法。
\qquad复合梯形公式 将区间[a,b][a,b][a,b]分为nnn等份,分点xk=a+kh,h=b−an,k=0,1,⋯ ,nx_{k}=a+kh,h=\frac{b-a}{n},k=0,1,\cdots,nxk=a+kh,h=nb−a,k=0,1,⋯,n在每个子区间上[xk,xk+1](k=0,1,⋯ ,n−1)[x_{k},x_{k+1}](k=0,1,\cdots,n-1)[xk,xk+1](k=0,1,⋯,n−1)上采用梯形公式则得
I=∫abf(x)dx=∑k=0n−1∫xkxk+1f(x)dx=h2∑k=0n−1[f(xk+f(xk+1))]+Rn(f)
I=\int_{a}^{b}f(x)dx=\sum_{k=0}^{n-1}\int_{x_{k}}^{x_{k+1}}f(x)dx=\frac{h}{2}\sum_{k=0}^{n-1}[f(x_{k}+f(x_{k+1}))]+R_{n}(f)
I=∫abf(x)dx=k=0∑n−1∫xkxk+1f(x)dx=2hk=0∑n−1[f(xk+f(xk+1))]+Rn(f)记
Tn=h2∑k=0n−1[f(xk+f(xk+1))]
T_{n}=\frac{h}{2}\sum_{k=0}^{n-1}[f(x_{k}+f(x_{k+1}))]
Tn=2hk=0∑n−1[f(xk+f(xk+1))]称为复合梯形公式。其余项表示为
Rn(f)=I−Tn=∑k=0n−1[−h312f′′(ηk)], ηk∈(xk,xk+1)
R_{n}(f)=I-T_{n}=\sum_{k=0}^{n-1}[-\frac{h^{3}}{12}f^{''}(\eta_{k})],\ \eta_{k}\in(x_{k},x_{k+1})
Rn(f)=I−Tn=k=0∑n−1[−12h3f′′(ηk)], ηk∈(xk,xk+1)复合辛普森求积公式与此相似,子区间上展开方式变为辛普森公式。
\qquad定理 设f(x)∈C∞ [a,b]f(x)\in C^{\infty}\ [a,b]f(x)∈C∞ [a,b],则有
T(h)=I+α1h2+α2h4+⋯+αlh2l+⋯
T(h)=I+\alpha_{1}h^{2}+\alpha_{2}h^{4}+\cdots+\alpha_{l}h^{2l}+\cdots
T(h)=I+α1h2+α2h4+⋯+αlh2l+⋯其中系数αl(l=1,2,⋯ )\alpha_{l}(l=1,2,\cdots)αl(l=1,2,⋯)与hhh无关(由泰勒展开可得)。只要真值与近似值得误差能表示为hhh的幂级数,都能使用外推算法(将步长变为12h\frac{1}{2}h21h),提高精度。外推算法可写为统一形式(龙贝格算法):
Tm(h)=4m4m−1Tm−1(h2)−14m−1Tm−1(h)
T_{m}(h)=\frac{4^{m}}{4^{m}-1}T_{m-1}(\frac{h}{2})-\frac{1}{4^{m}-1}T_{m-1}(h)
Tm(h)=4m−14mTm−1(2h)−4m−11Tm−1(h)
自适应积分方法
\qquad在复合求积过程中,当被积函数变化剧烈时,使用较小步长,当被积函数变化平缓时,使用较大步长。