工程数学 计算方法 第五章 数值积分
数值积分
数值微分
微分
定义:
f
(
x
)
=
lim
h
→
0
f
(
a
+
h
)
−
f
(
h
)
h
f\left( x \right) = \underset{h\rightarrow 0}{\lim}\frac{f\left( a+h \right) -f\left( h \right)}{h}
f(x)=h→0limhf(a+h)−f(h)
实际运算中会遇到的困难:
- f(x)以函数表的形式给出
- f(x)复杂,不便求导
- 计算机不会算极限(编程/计算方法)
数值微分:近似求导
只知函数表,计算微分:用函数数值的线性组合来表示微分 → 数值微分。
即找Ai使得
∑
i
=
0
N
A
i
f
(
x
i
)
≈
f
′
(
a
)
\sum_{i=0}^NA_if(x_i) \approx f'(a)
i=0∑NAif(xi)≈f′(a)
差商法
原理
斜率近似导数。
已知A(a,f(a)),B(a+h,f(a+h)),C(a-h,f(a-h)),求A点处的导数值:用斜率近似导数.
AB的斜率:向前差商
f
′
(
x
)
=
f
(
a
+
h
)
−
f
(
a
)
h
=
f
[
a
,
a
+
h
]
f'(x)=\frac{f(a+h)-f(a)}{h}=f[a,a+h]
f′(x)=hf(a+h)−f(a)=f[a,a+h]
AB的斜率:向后差商
f
′
(
x
)
=
f
(
a
)
−
f
(
a
−
h
)
h
=
f
[
a
−
h
,
a
]
f'(x)=\frac{f(a)-f(a-h)}{h}=f[a-h,a]
f′(x)=hf(a)−f(a−h)=f[a−h,a]
BC的斜率:中心差商
f
′
(
x
)
=
f
(
a
+
h
)
−
f
(
a
−
h
)
2
h
=
G
(
h
)
f'(x)=\frac{f(a+h)-f(a-h)}{2h}=G(h)
f′(x)=2hf(a+h)−f(a−h)=G(h)
误差分析
方法:泰勒公式展开
f
(
a
+
h
)
=
f
(
a
)
+
h
f
′
(
a
)
+
h
2
2
!
f
′
′
(
ξ
)
f(a+h)=f(a)+hf'(a)+\frac{h^2}{2!}f''(\xi)
f(a+h)=f(a)+hf′(a)+2!h2f′′(ξ)
向前差商:
R
(
x
)
=
f
′
(
a
)
−
f
(
a
+
h
)
−
f
(
a
)
h
=
−
h
2
f
′
′
(
ξ
)
=
O
(
h
)
R(x)=f'(a)-\frac{f(a+h)-f(a)}{h}=-\frac{h}{2}f''(\xi)=O(h)
R(x)=f′(a)−hf(a+h)−f(a)=−2hf′′(ξ)=O(h)
向后差商:
R
(
x
)
=
f
′
(
a
)
−
f
(
a
)
−
f
(
a
−
h
)
h
=
−
h
2
f
′
′
(
ξ
)
=
O
(
h
)
R(x)=f'(a)-\frac{f(a)-f(a-h)}{h}=-\frac{h}{2}f''(\xi)=O(h)
R(x)=f′(a)−hf(a)−f(a−h)=−2hf′′(ξ)=O(h)
中心差商:
R
(
x
)
=
f
′
(
a
)
−
G
(
a
)
=
h
2
12
(
f
′
′
′
(
ξ
1
)
+
f
′
′
′
(
ξ
2
)
)
=
h
2
6
f
′
′
′
(
ξ
)
=
O
(
h
2
)
ξ
,
ξ
1
,
ξ
2
∈
(
a
−
h
,
a
+
h
)
R(x)=f'(a)-G(a)=\frac{h^2}{12}(f'''(\xi_1)+f'''(\xi_2))=\frac{h^2}{6}f'''(\xi)=O(h^2)\\\,\\\xi\,,\xi_1,\xi_2 \in(a-h,a+h)
R(x)=f′(a)−G(a)=12h2(f′′′(ξ1)+f′′′(ξ2))=6h2f′′′(ξ)=O(h2)ξ,ξ1,ξ2∈(a−h,a+h)
- 由截断误差,步长h越小,精度越高
- 但h越小,f(a+h)与f(a-h)越接近,由于舍入误差,可能会导致结果为0的情况出现
优化:变步长算法
二分步长,误差采用事后估计法自动选择步长
记
D
1
=
G
(
h
)
,
D
2
=
G
(
h
2
)
D_1=G(h),\,D_2=G(\frac{h}{2})
D1=G(h),D2=G(2h)
则
f
′
(
a
)
−
D
1
≈
O
(
h
2
)
,
f
′
(
a
)
−
D
2
≈
O
(
h
2
)
2
⇒
f
′
(
a
)
−
D
2
f
′
(
a
)
−
D
1
≈
1
4
⇒
f
′
(
a
)
−
D
2
≈
1
3
(
D
2
−
D
1
)
(
∣
D
2
−
D
1
∣
⩽
ε
时
达
到
精
度
要
求
)
f'(a)-D_1\approx O(h^2),\,f'(a)-D_2\approx O(\frac{h}{2})^2\\\,\\ \Rightarrow \frac{f'(a)-D_2}{f'(a)-D_1} \approx \frac{1}{4}\\\,\\ \Rightarrow f'(a)-D_2 \approx \frac{1}{3}(D_2-D_1)\\\,\\ (\,|D_2-D_1|\leqslant \varepsilon\,时达到精度要求)
f′(a)−D1≈O(h2),f′(a)−D2≈O(2h)2⇒f′(a)−D1f′(a)−D2≈41⇒f′(a)−D2≈31(D2−D1)(∣D2−D1∣⩽ε时达到精度要求)
事后误差估计法:
在实际计算过程中,f’(x)是不可知的,f’(a)也就是不可知的,故不可用f’(a)-G(a)来计算误差。这里采用计算结果来估计误差,如果误差的估算值小于等于要求,即|D1-D2|≤ε时,便认为已经达到了精度要求。
先采用起始h带入计算,然后对h二分,每次取半。当精度达到要求时停止计算。
外推:提升精度
f
′
(
a
)
−
D
2
≈
1
3
(
D
2
−
D
1
)
⇒
f
′
(
a
)
≈
4
3
D
2
−
1
3
D
1
=
G
1
G
1
(
h
)
=
4
3
G
(
h
2
)
−
1
3
G
(
h
)
精
度
:
f
′
(
a
)
−
G
1
(
h
)
≈
(
h
4
)
f'(a)-D_2 \approx \frac{1}{3}(D_2-D_1)\\\,\\ \Rightarrow f'(a) \approx \frac{4}{3}D_2- \frac{1}{3} D_1 = G_1\\\,\\ G_1(h)=\frac{4}{3}G(\frac{h}{2})-\frac{1}{3}G(h)\\\,\\ 精度:f'(a)-G_1(h) \approx (h^4)
f′(a)−D2≈31(D2−D1)⇒f′(a)≈34D2−31D1=G1G1(h)=34G(2h)−31G(h)精度:f′(a)−G1(h)≈(h4)
还可以进一步外推:
G
2
(
h
)
=
16
15
G
1
(
h
2
)
−
1
15
G
1
(
h
)
G
n
(
h
)
=
4
n
4
n
−
1
G
n
−
1
(
h
2
)
−
1
4
n
−
1
G
n
−
1
(
h
)
G_2(h)=\frac{16}{15}G_1(\frac{h}{2})-\frac{1}{15}G_1(h)\\\,\\ G_n(h)=\frac{4^n}{4^n-1}G_{n-1}(\frac{h}{2})-\frac{1}{4^n-1}G_{n-1}(h)
G2(h)=1516G1(2h)−151G1(h)Gn(h)=4n−14nGn−1(2h)−4n−11Gn−1(h)
插值法
除了用几何意义近似,求微分也可以知函数表达式套公式→插值获得函数表达式。
已知f(x)函数表,构造f(x)的Lagrange插值多项式Ln(x)
f
(
x
)
≈
L
n
(
x
)
R
n
(
x
)
=
f
(
n
+
1
)
(
ξ
x
)
(
n
+
1
)
!
∏
i
=
0
n
(
x
−
x
i
)
f(x) \approx L_n(x)\\\,\\ R_n(x)=\frac{f^{(n+1)}(\xi_x )}{(n+1)!} \prod_{i=0}^n{(x-x_i)}
f(x)≈Ln(x)Rn(x)=(n+1)!f(n+1)(ξx)i=0∏n(x−xi)
得近似求导公式:
f
(
k
)
(
x
)
≈
L
n
(
k
)
(
x
)
f^{(k)}(x) \approx L_n^{(k)}(x)
f(k)(x)≈Ln(k)(x)
当k=1时:
f
′
(
x
)
≈
L
n
′
(
x
)
误
差
项
:
R
(
x
)
=
d
d
x
(
f
(
n
+
1
)
(
ξ
x
)
(
n
+
1
)
!
∏
i
=
0
n
(
x
−
x
i
)
)
f'(x)\approx L_n'(x)\\\,\\ 误差项:R(x)=\frac{d}{dx}(\frac{f^{(n+1)}(\xi_x )}{(n+1)!} \prod_{i=0}^n{(x-x_i)})
f′(x)≈Ln′(x)误差项:R(x)=dxd((n+1)!f(n+1)(ξx)i=0∏n(x−xi))
当x=xj时:(xj为函数节点。积形式求导为各项依次求导乘余项求和,x=xj时含xj项全部为0,只余下对(x-xj)求导的那一项)
f ′ ( x j ) ≈ ∑ i = 0 n l i ′ ( x j ) f ( x i ) , j = 0 , 1 , . . . , n 误 差 项 : R ( x j ) = ∏ i = 0 i ≠ j n ( x j − x i ) f ( n + 1 ) ( ξ x ) ( n + 1 ) ! f'(x_j)\approx \sum _{i=0}^n{l'_i(x_j)f(x_i)},\,j=0,1,...,n\\\,\\ 误差项:R(x_j)=\prod_ {\begin{array}{c}i=0\\i\ne j\\\end{array}}^n {(x_j-x_i)}\frac{f^{(n+1)}(\xi_x )}{(n+1)!} f′(xj)≈i=0∑nli′(xj)f(xi),j=0,1,...,n误差项:R(xj)=i=0i=j∏n(xj−xi)(n+1)!f(n+1)(ξx)
注意:无论是差商法还是插值法,都是只有函数节点值求函数的微分,其计算过程都是对函数节点值的线性组合。
数值积分
机械求积公式
I = ∫ a b f ( x ) d x 估 算 : I ≈ I n = ∑ i = 0 n A i f ( x i ) 误 差 / 余 项 : R n ( x ) = I − ∑ i = 0 n A i f ( x i ) I=\int _a^bf(x)dx\\ 估算:I\approx I_n=\sum _{i=0}^nA_if(x_i)\\ 误差/余项:R_n(x)=I-\sum_{i=0}^nA_if(x_i) I=∫abf(x)dx估算:I≈In=i=0∑nAif(xi)误差/余项:Rn(x)=I−i=0∑nAif(xi)
- 没有f(x)的具体表达式求f(x)的积分,就是求已知函数节点值的线性组合。
- 求积系数Ak的选取仅与节点xi的选取有关,与f(x)无关:机械。
只学过给函数具体形式的积分
→把函数表变成函数表达式
→插值
插值型数值积分
在[a,b]上去n+1点做n次插值多项式:
L
n
(
x
)
=
∑
k
=
0
n
f
(
x
k
)
l
k
(
x
)
∫
a
b
f
(
x
)
d
x
≈
∑
k
=
0
n
f
(
x
k
)
∫
a
b
l
k
(
x
)
d
x
≜
∑
k
=
0
n
f
(
x
k
)
A
k
A
k
=
∫
a
b
l
k
(
x
)
d
x
=
∫
a
b
∏
j
≠
k
x
−
x
j
x
k
−
x
j
d
x
L_n(x) = \sum_{k=0}^nf(x_k)l_k(x)\\\,\\ \int _a^bf(x)dx \approx \sum_{k=0}^nf(x_k)\int _a^bl_k(x)dx\triangleq\sum_{k=0}^nf(x_k)A_k\\\,\\ A_k = \int _a^bl_k(x)dx =\int _a^b \prod _{j \neq k}\frac{x-x_j}{x_k-x_j}dx
Ln(x)=k=0∑nf(xk)lk(x)∫abf(x)dx≈k=0∑nf(xk)∫ablk(x)dx≜k=0∑nf(xk)AkAk=∫ablk(x)dx=∫abj=k∏xk−xjx−xjdx
代数精度⭐
对于插值型数值积分:Ak使插值结果精确成立的条件是什么?精确与否如何衡量?误差如何衡量?
衡量误差:
∣
I
−
D
∣
⩽
ε
|I-D|\leqslant \varepsilon
∣I−D∣⩽ε
但实际上无法得知精确值,也没有近似,所以选择换一种衡量尺度:阶数。
定义:
若某求积公式的误差 R [ f ] R[f] R[f]满足: R [ x k ] = 0 R[x^k]=0 R[xk]=0对任意 k ⩽ n k\leqslant n k⩽n阶多项式成立,且 R [ x n + 1 ] ≠ 0 R[x^{n+1}]\neq 0 R[xn+1]=0对某个n+1阶多项式成立,则称其代数精度为n。
求代数精度:
依次带入
f
=
1
,
x
,
x
2
,
x
3
,
⋯
,
x
n
,
⋯
f=1,x,x^2,x^3,\cdots,x^n,\cdots
f=1,x,x2,x3,⋯,xn,⋯,最后一个使
I
≈
I
n
=
∑
i
=
0
n
A
i
f
(
x
i
)
I\approx I_n=\sum _{i=0}^nA_if(x_i)
I≈In=∑i=0nAif(xi)精确成立的幂次即为代数精度。精确成立即要求带入
f
f
f后左右两边形式完全相等。
代数精度高意味着
I
=
I
n
I=I_n
I=In更大的成立范围。代数精度n时对n阶及以下的多项式时精确的。n越大,可精确求得的范围越大。
形
如
∑
k
=
0
n
A
k
f
(
x
k
)
的
求
积
公
式
至
少
有
n
次
代
数
精
度
⇔
A
k
=
∫
a
b
l
k
(
x
)
d
x
形如\sum_{k=0}^nA_kf(x_k)的求积公式至少有n次代数精度\Leftrightarrow A_k=\int_a^bl_k(x)dx
形如k=0∑nAkf(xk)的求积公式至少有n次代数精度⇔Ak=∫ablk(x)dx
节点等距分布
当节点等距分布时插值结果代数精度可能大于n。
x
i
=
a
+
i
h
,
h
=
b
−
a
n
,
i
=
0
,
1
,
.
.
.
,
n
A
i
=
∫
x
0
x
n
∏
j
≠
i
x
−
x
i
x
i
−
x
j
d
x
,
令
x
=
a
+
t
h
A
i
=
∫
0
n
∏
j
≠
i
(
t
−
j
)
h
(
i
−
j
)
h
h
d
t
=
(
b
−
a
)
(
−
1
)
n
−
i
n
i
!
(
n
−
i
)
!
∫
0
n
∏
i
≠
j
(
t
−
j
)
d
t
=
(
b
−
a
)
C
i
(
n
)
其
中
C
i
(
n
)
=
(
−
1
)
n
−
i
n
i
!
(
n
−
i
)
!
∫
0
n
∏
i
≠
j
(
t
−
j
)
为
C
o
t
e
s
系
数
,
可
直
接
查
表
故
等
距
分
布
时
:
∫
a
b
f
(
x
)
d
x
≈
(
b
−
a
)
∑
n
=
0
N
B
n
f
(
a
+
n
h
)
x_i=a+ih,\,h=\frac{b-a}{n},\,i=0,1,...,n\\\,\\ A_i= \int_{x_0}^{x_n} \prod _{j \neq i}\frac{x-x_i}{x_i-x_j}dx,令x=a+th\\\,\\ A_i=\int_0^n \prod _{j \neq i}\frac{(t-j)h}{(i-j)h}hdt =(b-a)\frac{(-1)^{n-i}}{ni!(n-i)!}\int _0^n \prod_{i \neq j}(t-j)dt =(b-a)C_i^{(n)}\\\,\\ 其中C_i^{(n)}=\frac{(-1)^{n-i}}{ni!(n-i)!}\int _0^n \prod_{i \neq j}(t-j)为Cotes系数,可直接查表\\\,\\ 故等距分布时:\int_a^bf(x)dx \approx (b-a)\sum_{n=0}^NB_nf(a+nh)
xi=a+ih,h=nb−a,i=0,1,...,nAi=∫x0xnj=i∏xi−xjx−xidx,令x=a+thAi=∫0nj=i∏(i−j)h(t−j)hhdt=(b−a)ni!(n−i)!(−1)n−i∫0ni=j∏(t−j)dt=(b−a)Ci(n)其中Ci(n)=ni!(n−i)!(−1)n−i∫0ni=j∏(t−j)为Cotes系数,可直接查表故等距分布时:∫abf(x)dx≈(b−a)n=0∑NBnf(a+nh)
n为奇数时代数精度为n,n为偶数时代数精度为n+1。
与龙格现象类似,这个方法在n≤6时近似相等,在n≥7时误差较大。
复合求积
高次插值有Runge现象:分段低次插值。
复合求积基础方法
复合梯形公式:每次选择两个点来插值计算,即计算梯形的面积。
∫
a
b
f
(
x
)
d
x
≈
b
−
a
2
[
f
(
a
)
+
f
(
b
)
]
∫
a
b
f
(
x
)
d
x
≈
h
2
[
f
(
a
)
+
2
∑
n
=
1
N
−
1
f
(
x
n
)
+
f
(
b
)
]
\int _a^b f(x)dx\approx \frac{b-a}{2}[f(a)+f(b)]\\\,\\ \int _a^b f(x)dx\approx \frac{h}{2}\left[f(a)+2\sum _{n=1}^{N-1}f(x_n) +f(b)\right]
∫abf(x)dx≈2b−a[f(a)+f(b)]∫abf(x)dx≈2h[f(a)+2n=1∑N−1f(xn)+f(b)]
复化Simpson公式:每次选择三个点来插值计算,即曲边梯形曲边为抛物线。
∫
a
b
f
(
x
)
d
x
≈
b
−
a
6
[
f
(
a
)
+
4
f
(
a
+
b
2
)
+
f
(
b
)
]
∫
a
b
f
(
x
)
d
x
≈
h
6
[
f
(
a
)
+
4
∑
n
=
0
N
−
1
f
(
x
x
+
1
2
)
+
2
∑
n
=
1
N
−
1
f
(
x
n
)
+
f
(
b
)
]
\int _a^b f(x)dx\approx \frac{b-a}{6}\left[f(a)+4f(\frac{a+b}{2})+f(b)\right]\\\,\\ \int _a^b f(x)dx\approx \frac{h}{6}\left[f(a)+4\sum _{n=0}^{N-1}f(x_{x+\frac{1}{2}}) + 2\sum _{n=1}^{N-1} f(x_n) +f(b)\right]
∫abf(x)dx≈6b−a[f(a)+4f(2a+b)+f(b)]∫abf(x)dx≈6h[f(a)+4n=0∑N−1f(xx+21)+2n=1∑N−1f(xn)+f(b)]
为方便编程,记
x
~
2
n
=
x
n
,
x
~
2
n
−
1
=
x
x
−
1
2
,
n
=
1
,
2
,
.
.
.
,
N
\tilde x_{2n}=x_n,\,\,\tilde x_{2n-1}=x_{x-\frac{1}{2}},\,\,n=1,2,...,N
x~2n=xn,x~2n−1=xx−21,n=1,2,...,N则
∫
a
b
f
(
x
)
d
x
≈
h
~
3
{
f
(
a
)
−
f
(
b
)
+
2
∑
n
=
1
N
[
2
f
(
x
~
2
n
−
1
)
+
f
(
x
~
2
n
)
]
}
其
中
h
~
=
b
−
a
2
N
,
x
~
n
=
a
+
n
h
~
,
n
=
1
,
2
,
.
.
.
,
2
N
\int _a^b f(x)dx\approx \frac{\tilde h}{3}\left\{f(a)-f(b)+2\sum _{n=1}^N [2f(\tilde x_{2n-1})+f(\tilde x_{2n})]\right\}\\\,\\ 其中\tilde h=\frac{b-a}{2N},\,\tilde x_n=a+n\tilde h,\,n=1,2,...,2N
∫abf(x)dx≈3h~{f(a)−f(b)+2n=1∑N[2f(x~2n−1)+f(x~2n)]}其中h~=2Nb−a,x~n=a+nh~,n=1,2,...,2N
收敛速度与误差估计
与代数精度类似,选择阶数来衡量。此处衡量的是误差,类似高阶无穷小的形式。
p
阶
收
敛
⇔
lim
h
→
0
R
[
f
]
h
p
=
C
<
∞
p阶收敛\Leftrightarrow \underset{h\rightarrow 0}{\lim}\frac{R[f]}{h^p}=C<\infty
p阶收敛⇔h→0limhpR[f]=C<∞
收敛阶数越高,同计算量下精度更高。
给定精度需求,如何取n(采样点数)?
n*h=区间长度,所以也就是确定步长h的问题。
若h太大,则结果不精确不容易满足精度要求。若h太小,则计算量太大。
如何既满足精度要求又使得计算量可以接受?
类似变步长算法:从二分开始不断对分最终使得结果满足精度需求:Romberg积分。
龙贝格积分
- 确定基础步长
- 二分直至满足精度要求
问题:
- 如何得知达到了精度要求?(精确值I未知)
- 计算量能否优化?
误差的事后估计法
类似微分中的事后估计法。
I
−
T
n
=
O
(
h
2
)
,
I
−
T
2
n
=
O
(
h
2
)
2
∴
I
−
T
2
n
I
−
T
n
=
O
(
h
2
)
2
O
(
h
2
)
≈
1
4
∴
I
−
T
2
n
≈
1
3
(
T
2
n
−
T
n
)
若
∣
T
2
n
−
T
n
∣
<
ε
,
则
∣
I
−
T
2
n
∣
<
ε
I-T_n=O(h^2),\,\, I-T_{2n}=O(\frac{h}{2})^2\\\,\\ \therefore \frac{I-T_{2n}}{I-T_n}=\frac{O(\frac{h}{2})^2}{O(h^2)} \approx \frac{1}{4}\\\,\\ \therefore I-T_{2n} \approx \frac{1}{3}(T_{2n}-T_n)\\\,\\ 若|T_{2n}-T_n|<\varepsilon, 则|I-T_{2n} |<\varepsilon
I−Tn=O(h2),I−T2n=O(2h)2∴I−TnI−T2n=O(h2)O(2h)2≈41∴I−T2n≈31(T2n−Tn)若∣T2n−Tn∣<ε,则∣I−T2n∣<ε
简化计算:递推
感觉记着就完了:
梯形公式:
T
2
n
=
1
2
T
n
+
h
2
∑
k
=
0
n
−
1
f
(
x
k
+
1
2
)
,
其
中
h
=
b
−
a
2
k
−
1
T_{2n}=\frac{1}{2}T_n+\frac{h}{2}\sum _{k=0} ^{n-1} f(x_{k+\frac{1}{2}}),\,其中h=\frac{b-a}{2^{k-1}}
T2n=21Tn+2hk=0∑n−1f(xk+21),其中h=2k−1b−a
注意公式中的h为上一步的步长,即折半前的步长。
每次步长折半即进行一次修正。修正值为 已知值取半加上新采样点的h/2倍。
外推:
I
−
T
2
n
≈
1
3
(
T
2
n
−
T
n
)
∴
I
≈
4
3
T
2
n
−
1
3
T
n
=
S
n
I-T_{2n} \approx \frac{1}{3}(T_{2n}-T_n)\\\,\\ \therefore I \approx \frac{4}{3}T_{2n}-\frac{1}{3}T_n = S_n
I−T2n≈31(T2n−Tn)∴I≈34T2n−31Tn=Sn
即复化Simpson公式。
未增加计算量提高了计算精度。
注意虽然外推得的公式是I的近似值,但与Simpson公式是精确相等的,二者都为I的近似公式。
余下外推类似:
∴
I
−
T
2
n
I
−
T
n
=
O
(
h
2
)
4
O
(
h
4
)
≈
1
16
∴
I
−
T
2
n
≈
1
15
(
T
2
n
−
T
n
)
∴
I
≈
16
15
T
2
n
−
1
15
T
n
=
C
n
\therefore \frac{I-T_{2n}}{I-T_n}=\frac{O(\frac{h}{2})^4}{O(h^4)} \approx \frac{1}{16}\\\,\\ \therefore I-T_{2n} \approx \frac{1}{15}(T_{2n}-T_n)\\\,\\ \therefore I \approx \frac{16}{15}T_{2n}-\frac{1}{15}T_n = C_n
∴I−TnI−T2n=O(h4)O(2h)4≈161∴I−T2n≈151(T2n−Tn)∴I≈1516T2n−151Tn=Cn
即复化Cotes公式。
用类似方法可以不断外推提高精度。
整合:
⭐Romberg积分的步骤⭐
先增加分点,然后外推提高精度。
计算步骤:
-
T 1 = ( b − a ) 2 [ f ( b ) + f ( a ) ] T_1=\frac{(b-a)}{2}[f(b)+f(a)] T1=2(b−a)[f(b)+f(a)]
-
T 2 = T 1 2 + b − a 2 f ( a + b 2 ) T_2=\frac{T_1}{2}+\frac{b-a}{2}f(\frac{a+b}{2}) T2=2T1+2b−af(2a+b)
-
S 1 = 4 T 2 − T 1 4 − 1 S_1=\frac{4T_2-T_1}{4-1} S1=4−14T2−T1
-
T 4 = T 2 2 + b − a 2 2 ∑ k = 0 1 f ( a + b − a 2 2 + b − a 2 k ) T_4=\frac{T_2}{2}+\frac{\frac{b-a}{2}}{2}\sum _{k=0}^1 f(a+\frac{\frac{b-a}{2}}{2}+\frac{b-a}{2}k) T4=2T2+22b−ak=0∑1f(a+22b−a+2b−ak)
-
S 2 = 4 T 4 − T 2 4 − 1 S_2=\frac{4T_4-T_2}{4-1} S2=4−14T4−T2
-
C 1 = 4 2 S 2 − S 1 4 2 − 1 C_1=\frac{4^2S_2-S_1}{4^2-1} C1=42−142S2−S1
-
T 8 = T 4 2 + b − a 2 2 2 ∑ k = 0 3 f ( a + b − a 2 2 2 + b − a 2 2 k ) T_8=\frac{T_4}{2}+\frac{\frac{\frac{b-a}{2}}{2}}{2}\sum _{k=0}^3 f(a+\frac{\frac{\frac{b-a}{2}}{2}}{2}+\frac{\frac{b-a}{2}}{2}k) T8=2T4+222b−ak=0∑3f(a+222b−a+22b−ak)
-
S 4 = 4 T 8 − T 4 4 − 1 S_4=\frac{4T_8-T_4}{4-1} S4=4−14T8−T4
-
C 2 = 4 2 S 4 − S 2 4 2 − 1 C_2=\frac{4^2S_4-S_2}{4^2-1} C2=42−142S4−S2
-
R 1 = 4 3 S 2 − C 1 4 3 − 1 R_1=\frac{4^3S_2-C_1}{4^3-1} R1=43−143S2−C1
-
. . . . . . . ....... .......
判断精度:
∣
Y
1
−
X
1
∣
<
ε
|Y_1-X_1|<\varepsilon
∣Y1−X1∣<ε
1、3、6、10中有满足精度要求的即可停止计算。
每外推一次收敛阶提高2阶。
书上的写法:
{
T
0
(
k
)
=
1
2
T
0
(
k
−
1
)
+
b
−
a
2
k
∑
n
=
1
2
k
−
1
f
[
a
+
2
n
−
1
2
k
(
b
−
a
)
]
,
k
=
1
,
2
,
.
.
.
T
m
(
l
)
=
4
m
T
m
−
1
(
l
+
1
)
−
T
m
−
1
(
l
)
4
m
−
1
,
l
=
0
,
1
,
.
.
.
,
m
=
1
,
2
,
.
.
.
终
止
准
则
:
∣
T
m
(
0
)
−
T
m
−
1
(
0
)
∣
<
ε
,
取
积
分
逼
近
值
为
T
m
(
0
)
\left\{ \begin{array}{rcl} T_0^{(k)}=\frac{1}{2}T_0^{(k-1)}+\frac{b-a}{2^k}\sum _{n=1}^{2^{k-1}}f\left [a+\frac{2n-1}{2^k}(b-a)\right],\,k=1,2,...&\\\,\\ T_m^{(l)}=\frac{4^mT_{m-1}^{(l+1)}-T_{m-1}^{(l)}}{4^m-1}, \,l=0,1,...,\,\,m=1,2,...& \end{array} \right.\\\,\\ 终止准则:|T_m^{(0)}-T_{m-1}^{(0)}|<\varepsilon,\,取积分逼近值为\,T_m^{(0)}
⎩⎪⎨⎪⎧T0(k)=21T0(k−1)+2kb−a∑n=12k−1f[a+2k2n−1(b−a)],k=1,2,...Tm(l)=4m−14mTm−1(l+1)−Tm−1(l),l=0,1,...,m=1,2,...终止准则:∣Tm(0)−Tm−1(0)∣<ε,取积分逼近值为Tm(0)
应试
Romberg积分的步骤
顺序就是算法,顺序不对就是错误。
代数精度(选择题)