愚蠢的问题,但我花了太多时间在网上寻找答案但没有成功。 我有一个boost :: random :: gamma_distribution对象和一个我想要计算pdf的浮点值。
我应该包括哪些Boost模块以及如何调用计算gamma的pdf函数?
由于
答案 0 :(得分:3)
我偷看了random/gamma_distribution.hpp
并且没有返回pdf的方法,所以gamma_distribution的实例对你没有帮助。但是,boost::math::gamma_distribution提供了实现说明和公式(底部的表格),以使用库函数gamma_p_derivative
定义pdf。
现在你可以自己组合一个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
包含所需的定义,因此您无需在编译期间链接任何其他库。
答案 1 :(得分: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;
}