仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
numerical integration of two variable function over one variable only in C++ (using Numerical Recipes libraries)
我在C 中编程我需要集成两个变量的函数,例如f(x,y),仅在两个变量中:
i(y)= int f(x,y)dx
我正在使用库形式的数值配方。但是,如果我使用quadrature.h例程,例如qsimp,qtrap,则仅是一维的。相反,如果我使用quad3d.h,则仅包含三维版本。
这是我的代码的(简化版本):
Doub NFW_rho(Doub variable,double angle) {
return 1 / (pow(variable,2) + ... + cos(angle)) ;
}
int main ()
{
...
for (double angle = pi/36; angle < fi_max; angle += incr) {
double min = D * cos(angle) - sqrt(pow(rt,2.) - pow(D * sin(angle),2.)) ;
double max = D * cos(angle) + sqrt(pow(rt,2.) - pow(D * sin(angle),2.)) ;
...
Doub NFW_int = qsimp(NFW_rho,min,max) ;
double NFW = NFW_const * NFW_int ;
}
编译时,我会收到有关呼叫QSIMP的错误消息,指出QSIMP的调用是错误的(显然,因为NFW_RHO是2D函数)。
你们中的任何人都有聪明而简单的出路吗?非常感谢
在较旧的C 中,您拥有诸如std::bind2nd
之类的东西,可以通过将第二个参数"绑定"到提供的常数值来给出一个新的函数对象;在C 11中,它只是std::bind
(使用占位符表示仍然没有结合的内容)。
所以您可能有
之类的东西bind2nd(NFW_rho, 0.75); //older
bind(NFW_rho, _1, 0.75); //newer
其中0.75是您的角度(如果您需要Y的不同值,则需要再次绑定)。我没有很多std::
的东西。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 从类型std::函数传递变量失败,尽管调用方期望的类型完全相同
- 如何避免在仅标头库中C++类/变量重定义
- 如何使用 llvm-10 库在C++定义 LLVM 全局值变量?
- 从 exe 和 dll 访问静态库中的 extern 变量
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 是否有一个库可以检查C++中的变量类型?
- 函数范围的静态变量如何导致与共享库中函数代码的未来使用不兼容
- 仅表头库中的全局变量
- fstream库,试图创建一个变量名为(c++)的文件
- 简单加密算术库(SEAL)和SEAL::Ciphertext变量
- 纯标头库中静态成员变量的正确设置器和 getter
- 如何将 SDL2 用作我的静态 (CMake ) 库的 3D 方依赖项?
- 在 Eclipse CDT 中使用 Visual Studio Toolchain 包含 3rd 方库
- 无法初始化 libsupc++ 库中类型为 'std::terminate_handler' 的变量(又名 'void (*)()')
- 使用动态加载库时静态变量为空
- 如何在犰狳中使用变量/方差函数
- 并行化具有大量全局变量的库
- 类作为cli c++中全局非常量变量的库
- 后期绑定到具有"extern"定义变量的库