在Eigen中有recommendations警告明确计算行列式和逆矩阵。
我实现了具有正常 - 逆 - Wishart先验分布的多变量法线的后验预测。这可以表示为多变量t分布。
在多变量t分布中,您会找到一个术语|Sigma|^{-1/2}
以及(x-mu)^T Sigma^{-1} (x-mu)
。
我对Eigen一无所知。我可以想象,对于一个正半定矩阵(它是一个协方差矩阵),我可以使用LLT求解器。
然而,解算器本身没有定义.determinant()
和.inverse()
方法。我是否必须使用.matrixL()
函数并将对角线上的元素反转为逆,以及计算产品以获得行列式?我想我错过了什么。
答案 0 :(得分:2)
如果Cholesky分解为Sigma=LL^T
且想要(x-mu)^T*Sigma^{-1}*(x-mu)
,则可以计算:(llt.matrixL().solve(x-mu)).squaredNorm()
(假设x
和mu
是向量)。< / p>
对于行列式的平方根,只需计算llt.matrixL().determinant()
(计算三角矩阵的行列式只是其对角元素的乘积)。