本文整理汇总了C#中Gamma.GetMeanInverse方法的典型用法代码示例。如果您正苦于以下问题:C# Gamma.GetMeanInverse方法的具体用法?C# Gamma.GetMeanInverse怎么用?C# Gamma.GetMeanInverse使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Gamma
的用法示例。
在下文中一共展示了Gamma.GetMeanInverse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Q
// Perform one update of Q
public static Gamma Q(Gamma sample, double shape, Gamma rate, Gamma q)
{
if (sample.IsUniform() || rate.IsPointMass) return rate;
double a = q.Shape;
double b = q.Rate;
if (b==0) {
a = rate.Shape;
b = rate.Rate;
if (shape > 0) {
// this guess comes from solving dlogf=0 for x
double guess = shape*sample.GetMeanInverse();
b = Math.Max(rate.Rate, a/guess);
}
}
double x = a/b;
double x2 = x*x;
double[] dlogfss = dlogfs(x, shape, sample);
double dlogf = dlogfss[0];
double ddlogf = dlogfss[1];
b = rate.Rate - (dlogf + x*ddlogf);
a = rate.Shape - x2*ddlogf;
if (a <= 0) a = b*rate.Shape/(rate.Rate - dlogf);
if (a <= 0 || b <= 0) throw new Exception();
if (double.IsNaN(a) || double.IsNaN(b)) throw new Exception("result is nan");
return Gamma.FromShapeAndRate(a, b);
}