数值积分计算与测试的全面解析
1. 积分计算误差与收敛率
数值积分方法,如梯形法和中点法,通常存在误差,且该误差会随着区间数量 (n) 的变化而收敛到零,收敛速度 (p) 取决于具体的方法。即便我们不清楚实际的近似误差是多少,但只要知道误差的收敛率,就可以通过对不同的 (n) 值运行算法来测量预期的收敛率,判断是否达到理论值。
为了进行单元测试,我们可以基于收敛率开发更精确的方法。假设误差 (E) 与 (n) 的关系为 (E = Cn^r),其中 (C) 是未知常数,(r) 是收敛率。对于一组不同 (n) 值的实验 (n_1, n_2, \cdots, n_q),计算相应的误差 (E_1, E_2, \cdots, E_q)。对于连续的两次实验 (i) 和 (i - 1),有误差模型:
[
\begin{cases}
E_i = Cn_i^r \
E_{i - 1} = Cn_{i - 1}^r
\end{cases}
]
通过两式相除消去 (C),可求解出 (r)。由于 (r) 的估计值会随 (i) 变化,我们引入下标 (i) 表示 (r_i)。随着区间数量的增加,(r_i) 有望趋近于正确的收敛率。
下面是计算收敛率的代码示例:
function r = convergence_rates(f, F, a, b, num_experiments)
n = zeros(num_experiments, 1);
E = zeros(num_experiments, 1);
r = zeros(num_exp
超级会员免费看
订阅专栏 解锁全文
1223

被折叠的 条评论
为什么被折叠?



