数值积分:Newton-Cotes 公式与复化求积
对于许多复杂的函数 f(x),其原函数无法用初等函数表示,或者 f(x) 仅以离散点形式给出。此时,必须利用数值方法来近似计算定积分 I=∫abf(x)dx。
Newton-Cotes 公式的基本思想是:在 [a,b] 上取 n+1 个等距节点 xi=a+ih,h=nb−a,用 n 次 Lagrange 插值多项式 Ln(x) 代替 f(x):
I≈∫abLn(x)dx=∑i=0nyi∫abli(x)dx
定义 Cotes 系数 Ci(n)=b−a1∫abli(x)dx,则求积公式可写为:
I≈(b−a)∑i=0nCi(n)f(xi)
- 梯形公式 (n=1):
∫abf(x)dx≈2b−a[f(a)+f(b)]
代数精度:1
- Simpson 公式 (n=2):
∫abf(x)dx≈6b−a[f(a)+4f(2a+b)+f(b)]
代数精度:3(即使是 2 次插值,对于 3 次多项式也精确)
高阶 Newton-Cotes 公式在 n≥8 时会出现系数为负值的情况,导致数值不稳定。实际应用中,常将 [a,b] 分成 m 个小区间,在每个小区间上使用低阶公式。
将区间 m 等分,步长 h=mb−a:
Tm=2h[f(a)+2∑i=1m−1f(xi)+f(b)]
误差:R=−12b−ah2f′′(ξ)
要求区间数为偶数(即有 m=2k 个子区间):
Sm=3h[f(a)+4∑i=1,3,…,m−1f(xi)+2∑i=2,4,…,m−2f(xi)+f(b)]
误差:R=−180b−ah4f(4)(ξ)
定义:如果一个求积公式对于所有次数不超过 k 的多项式都精确,但对于 k+1 次多项式不精确,则称其具有 k 次代数精度。
n 阶 Newton-Cotes 公式在 n 为偶数时具有 n+1 次代数精度;在 n 为奇数时具有 n 次代数精度。
Richardson 外推是一种通过已知低阶公式的组合来构造高阶公式的通用技术。
假设 A(h) 是对某个量 L 的近似(步长为 h),且具有误差展开式:
L−A(h)=c1h2+c2h4+c3h6+…
则利用步长 h 和 h/2 的结果,可以消去 h2 项:
A1(h)=34A(h/2)−A(h)=A(h/2)+3A(h/2)−A(h)
此时 A1(h) 的误差项为 O(h4)。
Romberg 算法是将 Richardson 外推应用于复化梯形公式的产物。
设 T0(k) 为步长 hk=2kb−a 的复化梯形值。Romberg 序列定义为:
Tm(k)=4m−14mTm−1(k+1)−Tm−1(k)
其中:
- m=1 对应复化 Simpson 序列;
- m=2 对应复化 Cotes 序列;
- m=3 对应 Romberg 序列。
计算过程通常排列成下表:
T0(0)T0(1)T0(2)T0(3)T1(0)T1(1)T1(2)T2(0)T2(1)T3(0)
每一列的收敛速度都比前一列快。
- 自动控制精度:通过比较 Tm(k) 与 Tm−1(k) 的差值来决定是否停止迭代。
- 计算量小:利用了二分步长时函数值的承袭性(计算 T0(k+1) 只需计算新增加的中点值)。
例 1:利用 Romberg 算法计算 ∫01xsinxdx(精度要求 10−5)。
解析提示:
- 定义 f(0)=1 以消除奇点。
- 计算 T0(0)=21−0[f(0)+f(1)]=0.5[1+0.84147]=0.92074。
- 计算 T0(1):在 0.5 处采样,结合 T0(0) 计算复化梯形值。
- 利用外推公式计算 T1(0),T2(0)… 直至相邻项差值满足要求。
(详细数值计算略,Romberg 算法通常在 3-4 次外推后即可达到极高精度)。
例 2:证明复化梯形公式的误差具有 h2,h4… 的偶次方展开项。
这是由 Euler-Maclaurin 求和公式 保证的:
∫abf(x)dx−Th=∑k=1∞(2k)!B2kh2k[f(2k−1)(b)−f(2k−1)(a)]
其中 B2k 是 Bernoulli 数。这一展开式是 Romberg 算法能够成功进行 Richardson 外推的理论基础。
前往 数值分析专题练习库 深入研究 Gauss 求积公式与 Romberg 收敛阶分析。