本文整理汇总了C#中PositiveDefiniteMatrix.LogDeterminant方法的典型用法代码示例。如果您正苦于以下问题:C# PositiveDefiniteMatrix.LogDeterminant方法的具体用法?C# PositiveDefiniteMatrix.LogDeterminant怎么用?C# PositiveDefiniteMatrix.LogDeterminant使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PositiveDefiniteMatrix
的用法示例。
在下文中一共展示了PositiveDefiniteMatrix.LogDeterminant方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AverageLogFactor
/// <summary>
/// Evidence message for VMP
/// </summary>
/// <param name="sample">Constant value for 'sample'.</param>
/// <param name="mean">Constant value for 'mean'.</param>
/// <param name="precision">Constant value for 'precision'.</param>
/// <returns>Average of the factor's log-value across the given argument distributions</returns>
/// <remarks><para>
/// The formula for the result is <c>log(factor(sample,mean,precision))</c>.
/// Adding up these values across all factors and variables gives the log-evidence estimate for VMP.
/// </para></remarks>
public static double AverageLogFactor(Vector sample, Vector mean, PositiveDefiniteMatrix precision)
{
return ComputeAverageLogFactor(sample, mean, precision.LogDeterminant(ignoreInfinity: true), precision);
}
示例2: ProductAverageLogarithm
/// <summary>
/// VMP message to 'product'
/// </summary>
/// <param name="B">Incoming message from 'a'. Must be a proper distribution. If uniform, the result will be uniform.</param>
/// <param name="A">Incoming message from 'b'. Must be a proper distribution. If uniform, the result will be uniform.</param>
/// <returns>The outgoing VMP message to the 'product' argument</returns>
/// <remarks><para>
/// The outgoing message is a distribution matching the moments of 'product' as the random arguments are varied.
/// The formula is <c>proj[sum_(a,b) p(a,b) factor(product,a,b)]</c>.
/// </para></remarks>
/// <exception cref="ImproperMessageException"><paramref name="B"/> is not a proper distribution</exception>
/// <exception cref="ImproperMessageException"><paramref name="A"/> is not a proper distribution</exception>
public static Wishart ProductAverageLogarithm([SkipIfUniform] Wishart A, [SkipIfUniform] Gamma B, Wishart result)
{
if (B.IsPointMass) return ProductAverageLogarithm(A, B.Point, result);
// E[x] = E[a]*E[b]
// E[log(x)] = E[log(a)]+E[log(b)]
PositiveDefiniteMatrix m = new PositiveDefiniteMatrix(A.Dimension, A.Dimension);
A.GetMean(m);
m.Scale(B.GetMean());
double meanLogDet = A.Dimension*B.GetMeanLog() + A.GetMeanLogDeterminant();
if (m.LogDeterminant() < meanLogDet) throw new MatrixSingularException(m);
return Wishart.FromMeanAndMeanLogDeterminant(m, meanLogDet, result);
}