古巴——多维数值积分图书馆
古巴图书馆为多维数值积分:Vegas、Suave、Divonne和库里。它们的工作方法截然不同,总结如下表所示:
例行程序 |
基本集成方法 |
算法类型 |
差异减少 |
维加斯 |
Sobol准随机样本
或Mersenne Twister伪随机样本
或Ranlux伪随机样本 |
蒙特卡洛 蒙特卡洛 蒙特卡洛 |
重要性抽样 |
世故的 |
Sobol准随机样本
或Mersenne Twister伪随机样本
或Ranlux伪随机样本 |
蒙特卡洛 蒙特卡洛 蒙特卡洛 |
全局自适应细分 +重要性抽样 |
迪沃纳 |
Korobov准随机样本
或Sobol准随机样本
或Mersenne Twister伪随机样本
或Ranlux伪随机样本
或体积规则 |
蒙特卡洛 蒙特卡洛 蒙特卡洛 蒙特卡洛 确定性 |
分层抽样, 借助于来自的方法 数值优化 |
库里 |
体积规则 |
确定性 |
全局自适应细分 |
这四个都有C/C++、Fortran和Mathematica接口,可以积分向量被积函数。他们的咒语很相似,所以交叉检查很容易用一种方法替换另一种方法。对于进一步保护,输出由一个χ²-量化误差可靠性的概率估计。
源代码使用GNU C编译器gcc进行编译。C函数可以直接从Fortran调用,因此不需要适配器代码。类似地,将Fortran代码与库链接是简单明了,不需要额外的工具。
在Fortran和C/C++中,古巴库可以(通常也是这样)自动并行化被积函数的采样。
下载(将鼠标悬停在MD5的下载链接上):
Windows用户:Cuba 3及以上用户叉(2) 并行化执行线程。此POSIX函数不是Windows API的一部分,然而,它还以一种基本的方式使用,因此它不能只需使用CreateProcess等解决问题。唯一可行的模拟似乎可以通过Cygwin公司。
现成的MathLink可执行文件(4.2版,尽可能静态链接):
Linux x86-64:
Mac操作系统x86-64:
Cygwin/Windows:
说明:下载并对可执行文件进行gunzip压缩,然后制作可执行文件,带“chmod 755码文件".
维加斯是四种中最简单的。它使用重要性抽样以减少方差,但仅在某些情况下具有竞争力根据达到规定精度所需的样本数量。然而,它比原始算法和在交叉检查其他方法的结果时很方便。
世故的是一种结合了两种算法优点的新算法流行的方法:拉斯维加斯和次区域的重要性抽样采样方式与Miser相似。通过划分为子区域,苏亚夫在一定程度上克服了拉斯维加斯的困难使其权重函数适应与坐标不对齐的结构轴。
迪沃纳是CERNLIB例程D151的进一步发展。Divonne通过分层抽样工作,其中积分区域由数值优化方法辅助。A类该算法增加了许多改进提供有关被积函数。尤其是窄峰,如果没有采样非常多的点,尤其是在高维上。通常这些峰的准确或近似位置可以通过解析法得到然而,有了这些提示,所需的准确性可以是得分少得多。
库尔在全局自适应细分方案。因此,它是确定性的,而不是蒙特卡罗方法。在每次迭代中,具有最大误差沿被积函数最大的轴减半第四个差异。Cuhre在中等维度上非常强大,并且通常是获得高精度的唯一可行方法,例如相对精确度远低于1e–3。
75%以上的古巴问题与如何选择不同于单位超立方体的边界在Fortran中,C,和C++。解决方案不是选择边界,而是缩放被积函数。对于数学上的挑战变换是(一维)
∫
一
b条
d日x f(x)→∫
0
1
d日y f(a+(b-a)y)(b-a),
其中决赛(b-a)是的一维版本雅各比安。这直接概括为多个尺寸。
对于常量积分边界,此转换可能是在Fortran中实现为
整数函数ScaledIntegrand(ndim,x,ncomp,result)隐式无整数ndim,ncomp双精度x(ndim),结果(ncomp)整数maxdim参数(maxdim=16)整数整数外部积分双精度上(maxdim)公共/绑定/上双精度下限(maxdim)普通/磅绑定/更低整数dim,comp双精度范围,雅可比,scaledx(maxdim)雅可比=1do尺寸=1,ndim范围=上(暗)-下(暗)雅可比=雅可比*范围scaledx(dim)=较低(dim结束循环ScaledIntegrand=积分(ndim,scaledx,ncomp,result)do-comp=1,ncompresult(comp)=结果(comp结束循环结束
这个网站和这里提供的程序都不是商业性的。古巴是一个免费的开源软件包。
如果您想在商业应用程序中使用Cuba,请确保了解GNU(全球导航单元)宽通用公共许可证古巴在其中分布。
古巴正在开发马克斯·普朗克物理研究所在慕尼黑。
数据保护声明和印记
上次更新时间:22年2月28日托马斯·哈恩