本文整理汇总了C#中PositiveDefiniteMatrix.Scale方法的典型用法代码示例。如果您正苦于以下问题:C# PositiveDefiniteMatrix.Scale方法的具体用法?C# PositiveDefiniteMatrix.Scale怎么用?C# PositiveDefiniteMatrix.Scale使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PositiveDefiniteMatrix
的用法示例。
在下文中一共展示了PositiveDefiniteMatrix.Scale方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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);
}