在 Matlab 中评估 6D 高斯积分

计算科学 matlab 数字
2021-12-22 19:02:16

我必须计算新的高斯混合拟合算法的准确性。其中一项测试包括计算 6D 超空间中特定间隔的概率。此外,还必须评估 PDF 之间差异的平方的积分。但问题是,Matlab 没有处理 3 维以上积分的库函数。谷歌搜索,我发现几个结果涉及使用 wither quad2d 或integral2/integral3 进行某种嵌套。不幸的是,我实现嵌套的尝试没有成功。我所要做的就是评估积分(N1(x,μ1,P1)N2(x,μ2,P2))2在任何给定的时间间隔内R6. 谢谢你的建议

2个回答

一般来说,标准正交码在更高维度上表现不佳,这可能是它们在 Matlab 中不可用的原因。

我建议您改用蒙特卡洛积分,这在这些情况下效果很好。在这里,您随机采样函数的点以评估积分。特别是,您可能希望使用准蒙特卡罗积分,因为收敛速度更快。唯一的区别是函数不是随机采样的,而是准随机采样的。你可以很容易地在 Matlab中生成准随机数

估计精度的一种简单方法是简单地重复积分两次,然后查看差异。但是,也有在线算法允许您在蒙特卡洛积分中估计方差。

在实践中,当函数表现良好时,通常只使用大量点就足够了,而不必过度担心。

高维积分的一种方法是使用稀疏网格求积法(smolyak、clenshaw-curtis 等)。这个想法是使用一维正交规则的张量积的一小部分,以便在最终的积分规则中考虑某些多元单项式。如果被积函数合理地由低维多项式函数逼近,则稀疏网格正交工作得非常好。在这种情况下,可以为此目的使用各种 matlab 包:

Matlab 的稀疏网格正交包

或者

www.sparse-grids.de

有关稀疏网格的更多(介绍性)信息,您可能需要查看John Burkardt 的一些关于高维集成的演示文稿。