如何在 C++ 中将函数值更改为 table(伽马分布)中的值?
How to change the Function value to the one from the table (Gamma Distribution) in C++?
我的任务是使用 C++ 编写一个程序来计算使用 Gamma 分布的概率。如果我已经找到函数值,如何将其更改为 Gamma 分布 table 中的值?我不知道公式。
例如Fg(8;8),在table中是0.5470。 table 中的 Fg(4;8) 为 0.0511.
Standard Gamma Cumulative Table
从头开始用 "pure" C++ 编写这样的函数并不像 AFAIK C++ 标准库那样容易 (Common mathematical functions & Mathematical special functions) does not support the incomplete Gamma function which is required to compute Gamma distribution cumulative function.
相反,我建议使用 Boost library's implementation
// -*- compile-command: "g++ gamma.cpp; ./a.out"; -*-
//
#include <boost/math/distributions/gamma.hpp>
#include <iostream>
using namespace boost::math;
int main()
{
gamma_distribution<> dist(8.,1);
std::cout << "\n" << cdf(dist,8);
std::cout << "\n" << cdf(dist,4);
}
打印:
0.547039
0.0511336
符合预期
我的任务是使用 C++ 编写一个程序来计算使用 Gamma 分布的概率。如果我已经找到函数值,如何将其更改为 Gamma 分布 table 中的值?我不知道公式。
例如Fg(8;8),在table中是0.5470。 table 中的 Fg(4;8) 为 0.0511.
Standard Gamma Cumulative Table
从头开始用 "pure" C++ 编写这样的函数并不像 AFAIK C++ 标准库那样容易 (Common mathematical functions & Mathematical special functions) does not support the incomplete Gamma function which is required to compute Gamma distribution cumulative function.
相反,我建议使用 Boost library's implementation
// -*- compile-command: "g++ gamma.cpp; ./a.out"; -*-
//
#include <boost/math/distributions/gamma.hpp>
#include <iostream>
using namespace boost::math;
int main()
{
gamma_distribution<> dist(8.,1);
std::cout << "\n" << cdf(dist,8);
std::cout << "\n" << cdf(dist,4);
}
打印:
0.547039
0.0511336
符合预期