CERN ROOT库中的多种集成方法
Multiple Integration methods in CERN ROOT library
我一直在将一些旧的Fortran代码转换为C++,遇到了一些绑定。有一节涉及cernlib函数DGMLT,多重积分的高斯求积,它在http://hep.fi.infn.it/cernlib.pdf
我一直在网上搜索,在ROOT中找不到合适的方法来复制这个过程。我发现的几个多集成函数示例(ROOT::Math::AdaptiveIntegratorMultiDim()
等)没有任何代码示例。
基本上,我需要一些用于多重集成的示例代码,可能使用ROOT。
下面是一个使用AdaptiveIntegratorMultiDim::Integral
的片段计算具有维数的多维高斯积分2-15:
for(unsigned int dim=2; dim<kMaxSyst; ++dim){
NdimNormal nDimNormal(dim);
ROOT::Math::Functor func(nDimNormal,dim);
ROOT::Math::IntegratorMultiDim im(func);
volNom = im.Integral(xminNom, xmaxNom);
volSys = im.Integral(xminSys, xmaxSys);
cout<<"dim = "<<dim
<<" : volNom = "<<volNom
<<" , volSys = "<<volSys
<<endl;
}
类CCD_ 3是N维函数对象,请参阅完整代码中的定义:gist链接。注意,AdaptiveIntegratorMultiDim::Integral
只能处理维数在1和16之间的积分。对于更高的维度,您可能需要考虑gsl
。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 将公共但非静态的成员函数与ALGLIB集成
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将CMAKE项目集成到Buck中的最佳方法是什么?
- CERN ROOT库中的多种集成方法
- 将第三方异步 API 与 Cap'n Proto RPC 集成的好方法是什么?
- 将Google Analytics集成到c++ OpenFrameworks桌面项目中的最佳方法是什么?
- 集成c++应用服务器和c# Web服务(客户端+服务器)的好方法
- 找到一种有效的方法,使用 Python 作为"glue"将不同的语言库集成到一个项目中