什么可能导致多维数值积分不一致?

计算科学 数值分析 C++ 一体化 数学
2021-11-30 13:30:22

我正在尝试对多维表达式进行数值积分。被积函数复杂;例如,这是被积函数N=4

x16x25x33x42(x1x1x2)(x1x1x2x3)(x1x1x2x3x4)××(x1x2x1x2x3)(x1x2x1x2x3x4)(x1x2x3x1x2x3x4)

我对更大的表达式最感兴趣N. 我的审判案例中的整合限制是x1从 0 到 10,其他一切从 0 到 1。

为了对它进行数值积分,我使用 Mathematica,同时使用 C++ 中的 VEGAS 积分器进行双重检查(通过 GNU 科学库)。问题是这两个积分器匹配较低的维度,但不匹配较高的维度。该协议非常适合N=2,3, 但对于N=4,5有大约 5 倍的相当大的差异,随着越高越差N. 协议不会完全失败;结果仍然是相同的数量级,但 5 的系数对于舒适度来说太大了,尤其是在两个集成商报告的误差线远低于此的情况下。

我不熟悉这两个积分器的内部结构以及高维数值积分的工作原理。为什么两个积分器在低维度上给出相同的结果但在高维度上没有(非错误)原因?如果唯一可能的解释是“代码中的错误”,那很好,但如果还有其他可能性,我也想检查一下。

0个回答
没有发现任何回复~