12#include "libmesh/utility.h"
27 :
Distribution(parameters), _alpha(getParam<Real>(
"alpha")), _beta(getParam<Real>(
"beta"))
32Beta::pdf(
const Real &
x,
const Real & alpha,
const Real & beta)
34 if (x <= 0.0 || x > 1.0)
37 return std::pow(
x, alpha - 1.0) * std::pow(1.0 -
x, beta - 1.0) /
betaFunction(alpha, beta);
41Beta::cdf(
const Real &
x,
const Real & alpha,
const Real & beta)
78 return std::tgamma(
a) * std::tgamma(
b) / std::tgamma(
a +
b);
84 if (
x > ((
a + 1.0) / (
a +
b + 2.0)))
87 const Real
tol = 1e-14;
88 const unsigned int max_iter = 1e3;
95 for (
unsigned int i = 0; i < max_iter; ++i)
102 num = m * (
b - m) *
x / (
a + 2.0 * m) / (
a + 2.0 * m - 1.0);
107 num = -(
a + m) * (
a +
b + m) *
x / (
a + 2.0 * m) / (
a + 2.0 * m + 1.0);
110 dn = 1.0 / (1.0 + num * dn);
112 const Real cd = cn * dn;
115 if (std::abs(1.0 - cd) <
tol)
116 return coef * (fn - 1.0);
119 mooseAssert(
false,
"Could not compute incomplete beta function.");
120 return coef * (fn - 1.0);
131 const Real
tol = 1e-14;
132 const unsigned int max_iter = 1e3;
136 for (
unsigned int i = 0; i < max_iter; ++i)
139 if (std::abs(
f) <
tol)
141 df = std::pow(
x,
a - 1.0) * std::pow(1.0 -
x,
b - 1.0) /
scale;
144 if (x < 0 || x > 1.0)
151 for (
unsigned int i = 0; i < max_iter; ++i)
155 if (std::abs(
f) <
tol)
163 mooseAssert(
false,
"Could not find inverse of incomplete gamma function.");
registerMooseObject("StochasticToolsApp", Beta)
Real f(Real x)
Test function for Brents method.
const std::vector< double > x
A class used to generate a Beta distribution.
const Real & _alpha
Shape parameter 1.
static Real incompleteBetaInv(const Real &a, const Real &b, const Real &p)
Inverse of lower incomplete beta function.
static Real incompleteBeta(const Real &a, const Real &b, const Real &x)
Lower incomplete beta function.
virtual Real cdf(const Real &x) const override
static Real betaFunction(const Real &a, const Real &b)
Beta function: B(a,b) = Gamma(a)Gamma(b)/Gamma(a+b)
virtual Real pdf(const Real &x) const override
Beta(const InputParameters ¶meters)
virtual Real quantile(const Real &p) const override
const Real & _beta
Shape parameter 2.
static InputParameters validParams()
static InputParameters validParams()