3

ばかげた質問ですが、ウェブで答えを探すのに時間をかけすぎて成功していません。boost::random::gamma_distribution オブジェクトと、pdf を計算したい float 値があります。

どの 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 に答える