本模块演示用自适应积分算法近似计算单变量函数在给定区间(interval)上的积分. 自适应积分算法的基本思想是将积分区间不断的拆分为更小的区间,直到每个小区间内的积分都满足误差要求. 对每个小区间应用两种不同的求积公式, 它们的差就可用于估计小区间上积分的误差. 本演示模块选用的两种求积公式为中矩形公式和梯形公式. 根据给定的误差阈值, 自适应积分收敛时的小区间数目取决于被积函数的特性. 特别地, 在被积函数发生突然变化(尖峰, 歧点或者间断点)的区间, 需要划分出比其他区间多得多的子区间.
使用者首先从下拉菜单中选择一个被积函数,这些函数样例大概按照积分计算的复杂程度从易到难排列. 通过点击"Next"按钮或者高亮显示的步骤可一步一步地执行自适应积分算法. 算法的递归过程可通过深度优先(depth-first)或广度优先(breadth-first)策略对所有小区间进行遍历, 使用者也可手工指定遍历的顺序.
点击"Calculate"按钮会计算出当前区间内中矩形公式的结果M, 梯形公式的结果T, 以及它们的差,并将它们显示在函数曲线的下方. 如果两种求积公式之差小于预先设定的阈值, 或者子区间长度小于某个最小的允许值,这个子区间就会被标记为 “completed” (完成), 在绘图区中填充为紫色. 收敛阈值是以数量级的方式指定的, 例如选择 −2 意味着误差限为
在"Select Interval"(选择小区间)步骤中,下一个待处理的未完成子区间会按照 预先设定的深度优先或者广度优先策略选项(右下方)自动选择, 然后在绘图区中用绿色高亮显示. 也可以通过鼠标点击手动选择一个子区间进行处理,选中后会被高亮显示. 在算法执行过程的任何一个步, 或者结束后,使用者可以通过点击Reset重新开始.
操作与思考: (1)本演示中的算法与课本7.5节给出的算法有哪些不同之处? 采用中矩形与梯形公式之差作为误差估计的依据是什么?
(2) 本演示中的梯形公式是复合梯形公式吗?
参考内容: 课本第7.5节.