我需要对以下形式的二维积分进行数值计算:
在哪里是一系列平滑函数,索引为; 我需要评估对于大量() 的, 这是给定的。
对于问题是如何设置的,我可以评估在精细的等间距二维网格上(每次评估都涉及一些乘法),我无法评估在其他点上。
由于网格很好,我可以简单地计算通过梯形或辛普森规则。然而,这在计算上变得极其昂贵且不必要。对于许多(但不是全部)值,是对于集成域的大部分,和/或变化缓慢。
这里显而易见的是使用某种与固定等间距网格兼容的自适应积分方法。我的基本想法是从一个非常粗糙的子网格开始,评估每个子单元格中的积分和误差估计,并在此基础上决定要“放大”哪些单元格并用细化的网格重新计算。重复这个几次。有很多方法可以天真地做到这一点,但我对最先进的解决方案很感兴趣。
我的问题是:
- 计算(子)积分的最佳(最快和精确)正交方法是什么?
- 挑选细胞进行精炼的最佳方法是什么?
- 如果我使用相对或绝对误差的度量,那么计算它的最佳方法是什么?
- 有什么替代的想法吗?
作为记录,我正在使用 MATLAB,但我计划通过 MEX 文件在 C 中对这部分进行编码,因为我怀疑自适应位是否可以有效地矢量化,并且我希望它尽可能快。