【发布时间】:2014-02-12 15:48:46
【问题描述】:
我正在用 C++ 编程 我需要整合两个变量的函数,比如 f(x,y),只在两个变量中的一个上:
I(y) = int f(x,y)dx
我正在使用数字食谱形式的库。但是,如果我使用 quadrature.h 例程,例如 qsimp、qtrap,它们只是一维的;如果我改用 quad3d.h,它只包含 3D 版本。
这是我的代码(简化版):
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++ integration numerical