3

愚蠢的问题,但我花了太多时间在网上寻找答案,但没有成功。我有一个 boost::random::gamma_distribution 对象和一个浮点值,我想为其计算 pdf。

我究竟应该包含哪些 Boost 模块以及如何调用为伽玛计算 pdf 的函数?

谢谢

4

2 回答 2

3

我已经看过了random/gamma_distribution.hpp,没有返回 pdf 的方法,所以 gamma_distribution 的实例对你没有帮助。但是,boost::math::gamma_distribution提供了实现说明和公式(底部的表格)来使用库函数定义 pdf gamma_p_derivative

现在您可以自己组合一个 pdf 函数:

#include <boost/math/special_functions/gamma.hpp>

// Makes sense for k, theta, x greater than 0.
double gamma_pdf(double k, double theta, double x) {
    return boost::math::gamma_p_derivative(k, x / theta) / theta;
}

基本上就是这样。由于gamma.hpp包含所需的定义,因此您不必在编译期间链接任何其他库。

于 2013-02-11T23:38:37.180 回答
3

有一个pdf非成员函数。

#include <iostream>
#include <boost/math/distributions/gamma.hpp>

int main() {
    double shape = 2;
    double scale = 1;
    boost::math::gamma_distribution<double> d(shape, scale);
    std::cout << pdf(d, .5) << std::endl;
}
于 2013-02-12T14:40:26.293 回答