2013-02-11 2 views
2

Глупый вопрос, но я трачу слишком много времени на поиск ответов в Интернете без успеха. У меня есть boost :: random :: gamma_distribution объект и значение float, для которого я хотел бы вычислить pdf.Использование функции PDF Boost

Какие модули Boost должны быть в точности включены и как вызвать функцию, которая вычисляет pdf для гаммы?

Благодаря

ответ

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 содержит необходимые определения, вам не нужно связывать любые дополнительные библиотеки во время компиляции.

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; 
} 
Смежные вопросы