具有已知边界的多维积分的数值积分

计算科学 蒙特卡洛 正交
2021-11-25 02:31:48

我有一个(二维)不正确的积分

I=AW(x,y)F(x,y)dxdy

集成域在哪里A小于x=[1,1],y=[1,1]但进一步受到限制F(x,y)>0. 自从FW光滑且W0在边界处,后面的关系意味着被积函数在边界处可以是奇异的。被积函数是有限的。到目前为止,我使用嵌套数值积分来计算这个积分。这是成功的,但很慢。我搜索了一种更合适(更快)的方法来解决积分问题,也许是蒙特卡洛方法。但是我需要一个不将点放在非三次域 A 的边界上并正确地取不正确积分的极限。积分变换可以帮助这个一般表达式吗?注意我可以解决F(x,y)为了y作为一个函数x甚至计算I对于一些特殊的权重函数W(x,y).

3个回答

免责声明:我的博士论文是关于自适应正交的,所以这个答案将严重偏向我自己的工作。

GSL 的 QAGS 是旧的QUADPACK积分器,它并不完全稳健,尤其是在存在奇点的情况下。这通常会导致用户要求的准确度比他们实际需要的多得多,从而使集成变得非常昂贵。

如果您使用 GSL,您可能想尝试我自己的代码CQUAD,在本文中进行了描述。它旨在处理区间边缘和域内的奇点。请注意,误差估计非常可靠,因此只要求您实际需要的数字。

关于蒙特卡洛积分,这取决于您正在寻找什么样的准确性。我也不太确定它在奇点附近的效果如何。

蒙特卡洛方法通常无法与自适应求积法竞争,除非您有一个高维积分,而您无法承受求积点与维度的组合爆炸。

原因比较容易理解。举个例子,只是[0,1]nf(x)dnx在哪里n是问题的维度。假设为简单起见,您将每个维度细分为M子区间,即,你得到Mn超立方体细胞总数。让我们进一步假设您使用高斯公式k高斯点,只是一个例子。然后你有N=(kM)n总交点,并且因为k高斯点为您提供秩序(2k1)准确性,e=O(h5)=O(M(2k1)),您作为评估点函数的整体准确度将是

e=O(N(2k1)/n).
另一方面,蒙特卡洛方法通常只为您提供误差收敛,因为
e=O(N1/2)
这比任何高斯公式都差,至少k>n/4+1/2每个间隔的点数。原因相对容易理解:高斯求积以某种智能方式选择插值点,而蒙特卡洛则不然。你不能指望后者会带来任何有用的东西。(当然,在某些情况下高斯正交很困难:例如,在积分域形状不规则的情况下;但在这种情况下,您最好还是进行自适应积分或类似的积分。)

现在,每个区间超过 8 或 10 个点的积分存在实际(稳定性)问题。所以如果你想k8,那么你不能超越n=30. 另一方面,在这种情况下,即使每个方向选择一个间隔(M=1) 产量N=830集成点,远远超过您一生中所能评估的。换句话说,只要您可以评估足够多的集成点,对集成域的细分进行求积总是更有效的方法。在这种情况下,您有一个高维积分,您甚至无法再评估单个细分上的积分点,尽管人们使用蒙特卡洛方法,尽管它们的收敛顺序更差。

尝试嵌套的双指数正交(参见Ooura的实现)。该技术使用变量变换,使变换后的被积函数在边界处表现得非常平滑,并且对于处理边界处的奇点非常有效。在他的网站上也有一个很好的 DE 正交参考列表。