Julia中Wishart生成的正定矩阵的逆

Julia中Wishart生成的正定矩阵的逆,julia,distribution,Julia,Distribution,我使用分发包从Julia的Wishart创建了一个正定矩阵。我想用它来生成具有指定精度的随机多元正态分布。因此,我使用MvNormal的标准形式,即MvNormalCanon 然而,我有点困惑,因为Wishart随机生成的矩阵虽然是正定的,但其逆矩阵不是。因此,有时它会导致使用该精度从多元正态生成问题 例如: using Distributions X=rand(Wishart(10, eye(10))) isposdef(X) // true isposdef(inv(X)) // false

我使用分发包从Julia的Wishart创建了一个正定矩阵。我想用它来生成具有指定精度的随机多元正态分布。因此,我使用MvNormal的标准形式,即MvNormalCanon

然而,我有点困惑,因为Wishart随机生成的矩阵虽然是正定的,但其逆矩阵不是。因此,有时它会导致使用该精度从多元正态生成问题

例如:

using Distributions
X=rand(Wishart(10, eye(10)))
isposdef(X) // true
isposdef(inv(X)) // false
我还使用MvNormalCanon生成随机向量,如下所示:

rand(MvNormalCanon(X*μ, X))
其中μ是我的平均向量。但是上面创建了一个
Base.LinAlg.PosDefException(1)
。 如果是的话,朱莉娅为什么会这样做


另外,可能是在Wishart中的比例矩阵中添加了一小点,这可能会解决问题。

isposdef
首先检查输入矩阵是否为Hermitian矩阵。在这种情况下,此检查失败,因为取反数时存在舍入误差。一种解决方案是使用
Symmetric
wrapper:
X=Symmetric(rand(Wishart(10,eye(10)));iX=库存(X);isposdef(iX)