大多数定积分问题都不能通过解析法,即计算牛顿一莱布尼茨公式∫abf(x)dx=F(b)−F(a)来求解,数值积分方法就是将f(x)用简单函数近似替代(比如泰勒展开),利用离散数据求函数的数值积分,从而避免了寻求原函数的困难,并为计算机求积分提供了可行性。
左矩形
∫abf(x)dx=f(a)(b−a)+2(b−a)2f′(η) η∈(a,b)
右矩形
∫abf(x)dx=f(b)(b−a)−2(b−a)2f′(η) η∈(a,b)
中矩形
∫abf(x)dx=f(2a+b)(b−a)−24(b−a)3f′′(η), η∈(a,b)
设x0,x1,⋯,xn∈[a,b],函数f(x)在区间[a,b]上可积,对给定权函数ρ(x)>0,有
∫abf(x)ρ(x)dx=i=0∑nAif(xi)+R(f)
- {xi}:求积节点
- {Ai}:求积系数
- R(f):误差
一般形式
∫abf(x)dx≈i=0∑nAif(xi)
代数精度
若对于f(x)=xk, k=0,1,2,…,m,即对于次数不超过m的多项式,求积公式∫abf(x)dx=i=0∑nAif(xi)都精确成立,但对f(x)=xm+1不精确成立,亦可表示为
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧∫abxkdx=i=0∑nAif(xik)∫abxm+1dx=i=0∑nAif(xim+1)
则称该求积公式具有m次代数精度。
确定下式的代数精度
- ∫−11f(x)dx≈2f(−1)+2f(0)+f(1)
- ∫−11f(x)dx≈f(−31)+f(31)
解
记
- I(f)=∫−11f(x)dx
- I1(f)=2f(−1)+2f(0)+f(1)
- I2(f)=f(−31)+f(31)
f |
I(f) |
I1(f) |
I2(f) |
1 |
∫−111dx=2 |
21+2+1=2 |
1+1=2 |
x |
∫−11xdx=0 |
2−1+0+1=0 |
3−1+1=0 |
x2 |
∫−11x2dx=32 |
21+0+1=1 |
31+1=32 |
x3 |
∫−11x3dx=0 |
INVALID |
331+1=0 |
x4 |
∫−11x4dx=52 |
INVALID |
91+1=92 |
综上可知,I1(f)为1次代数精度,I2(f)为3次代数精度。
试确定∫0hf(x)dx≈A0f(0)+A1f(h)+A2f′(0)的系数A0,A1,A2,使该多项式具有尽可能高的代数精度。
解
f |
∫0hf(x)dx |
A0f(0)+A1f(h)+A2f′(0) |
1 |
h |
A0+A1 |
x |
2h2 |
0+A1h+A2 |
x2 |
3h3 |
0+A1h2+0 |
x3 |
4h4 |
0+A1h3+0 |
从而得⎩⎪⎪⎨⎪⎪⎧h=A0+A12h2=A1h+A23h3=A1h2,解得⎩⎪⎪⎨⎪⎪⎧A0=32hA1=31hA2=61h2
f |
∫0hf(x)dx |
A0f(0)+A1f(h)+A2f′(0) |
x3 |
4h4 |
A1h3=31h4 |
故多项式最高可达2次代数精度,此时系数为⎩⎪⎪⎨⎪⎪⎧A0=32hA1=31hA2=61h2
拉格朗日(Lagrange)插值多项式:
Ln(x)=i=0∑nli(x)f(xi)
- li(x)=j=ij=0∏nxi−xjx−xj
- Rn(x)=f(x)−Ln(x)=(n+1)!f(n+1)(ξ)ωn+1(x), ξ∈(a,b)
在节点x0,x1,⋯,xn∈[a,b]上构造插值型求积公式。
∫abf(x)ρ(x)dx≈∫abLn(x)ρ(x)dx=i=0∑nAif(xi)
- Ai=∫abli(x)ρ(x)dx
其误差为
R(f)=(n+1)!1∫abf(n+1)(ξ)(i=0∏nx−xi)ρ(x)dx ξ∈(a,b)
利用积分中值定理有
R(f)=f(n+1)(η)K
- K=∫ab(n+1)!1i=0∏n(x−xi)ρ(x)dx
取ρ(x)=1,f(x)=xn+1有
R(f)=(n+1)!f(n+1)(η)[n+21(bn+2−an+2)−i=0∑nAixin+1]
n+1个互异节点至少有n次代数精度,最高可达2n+1次代数精度(详见高斯型求积公式)。
当插值节点等距时,得到得插值型求积公式即为牛顿科特斯(Newton-Cotes)求积公式。
∫abf(x)dx≈i=0∑nAif(xi)=(b−a)i=0∑nCi(n)f(xi)
- Ai=∫abli(x)dxxi=a+ih(h=nb−a,i=0,1,⋯,n)x=a+thi!(n−i)!(−1)n−ih∫0nj=ij=0∏n(t−j)dt
- ∑i=0nAi=b−a
- Ci(n)=b−a1Ai,称为Cotes系数
- ∑i=0nCi(n)=1
当Cotes系数为负数时是数值不稳定的,当n≥8时Cotes系数开始出现负数,即高阶Newton-Cotes公式的稳定性无法得到保证(我们一般只取n=1,2,4);n+1个节点的求积公式至少有n次代数精度;当n为偶数时,至少有n+1次代数精度。
当牛顿科特斯(Newton-Cotes)求积公式的n=1,即2个节点时
∫abf(x)dx≈2b−a[f(a)+f(b)]=T
- C0(1)=C1(1)=21
- R[f]=−12(b−a)3f′′(η) η∈(a,b)
1次代数精度。
当牛顿科特斯(Newton-Cotes)求积公式的n=2,即3个节点时
∫abf(x)dx≈6b−a[f(a)+4f(2a+b)+f(b)]=S
- C0(2)=61;C1(2)=64;C2(2)=61
- R(f)=−2880(b−a)5f(4)η η∈(a,b)
3次代数精度。
当牛顿科特斯(Newton-Cotes)求积公式的n=4,即5个节点时
∫abf(x)dx≈90b−a[7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)]=C
- C0(4)=907;C1(4)=9032;C2(4)=9012;C3(4)=9032;C4(4)=907;
用Simpson公式求y(x)=∫01(1−3xt)y(t)dt+(1−3x)
解
记f(t)=(1−3xt)y(t),由Simpson公式得
∫01(1−3xt)y(t)dt≈61[f(0)+4f(21)+f(1)]=6y(0)+4(1−23x)y(21)+(1−3x)y(1)
因此近似解
y~(x)=6y(0)+4(1−23x)y(21)+(1−3x)y(1)+(1−3x)
取x=0,21,1得
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧y~(0)=61[y~(0)+4y~(21)+y~(1)]+1y~(21)=61[y~(0)+y~(21)−21y~(1)]−21y~(1)=61[y~(0)−2y~(21)−2y~(1)]−2
解得 ⎩⎪⎪⎨⎪⎪⎧y~(0)=32y~(21)=−31y~(1)=−34,带入y~(x)得
y~(x)=32−2x
通过增加求积节点的个数来提高计算精度是不可行的(高阶Newton-Cotes公式稳定性得不到保证)。
将区间分成若干个小区间,每个区间的结果加起来得到整个区间的求积公式。
Tn=2h[f(a)+2i=1∑n−1f(xi)+f(b)]
- h=nb−a
- R(Tn)=−12b−ah2f′′(η)
Sn=6h[f(a)+4i=0∑n−1f(xi+21)+2i=1∑n−1f(xi)+f(b)]
- R(Sn)=−2880b−ah4f(4)(η)
计算积分I=∫02πsinxdx,当使用梯形公式时,应将区间[0,2π]分成多少等份,才能使误差不超过21×10−3,若取同样的求积节点,使用复化辛普森公式时截断误差是多少。
解
- f(x)=sinx
- f′(x)=cosx
- f′′(x)=−sinx
- f(3)(x)=−cosx
- f(4)(x)=sinx
∣R(Tn)∣=∣−12b−ah2f′′(η)∣≤24π⋅(2nπ)2⋅1≤21×10−3
即n2≥48π3×103,取n=26
当n=26时,使用复化辛普森公式有
∣R(Sn)∣=∣−2880b−ah4f(4)(η)∣≤−5760π⋅(26π)4⋅1≤0.7266303×10−9
略
略
正交多项式
使求积公式具有2n+1次代数精度的节点x0,x1,x2,…,xn(n+1个节点)称为Gauss点,此时的插值型求积公式称为Gauss型求积公式。
当且仅当x0,x1,x2,…,xn是[a,b]上以ρ(x)为权函数的n+1次正交多项式Pn+1(x)的零点,x0,x1,x2,…,xn为Gauss点。
- Gauss-Legendre求积公式
- Gauss-Laguerre求积公式
- Gauss-Hermite求积公式
特别地,在区间[−1,1]上,权函数ρ(x)=1,取Pn+1(x)=2n+1(n+1)!1dxn+1dn+1(x2−1)n+1的零点x0,x1,x2,…,xn,构造插值型求积公式,即古典高斯型求积公式
∫−11ρ(x)f(x)dx≈i=0∑nAif(xi)
- Ai=∫−11(x−xi)Pn+1′(xi)Pn+1(x)dx=(1−xi2)[Pn+1′(xi)]22
3次代数精度。
∀x∈[a,b],若令x=2a+b+2b−at,则dx=2b−adt t∈[−1,1],得
∫abf(x)dx=2b−a∫−11f(2a+b+2b−at)dt≈2b−ai=0∑nAif(2a+b+2b−ati)
f′(x0)=hf(x0+h)−f(x0)+O(h)
- O(h)=−2hf′′(x0+θh), 0≤θ≤1
f′(x0)=hf(x0)−f(x0−h)+O(h)
- O(h)=2hf′′(x0−θh), 0≤θ≤1
f′(x0)=2hf(x0+h)−f(x0−h)+O(h2)
- O(h2)=−6h2f′′′(x0+θh), −1≤θ≤1
f′(x0)=h2f(x0+h)−2f′(x0)+f(x0−h)+O(h2)
- O(h2)=−12h2f(4)(x0+θh), −1<θ<1