如何在特征中有效地使用逆和行列式?

时间:2014-12-09 17:50:23

标签: c++ eigen matrix-inverse determinants

在Eigen中有recommendations警告明确计算行列式和逆矩阵。

我实现了具有正常 - 逆 - Wishart先验分布的多变量法线的后验预测。这可以表示为多变量t分布。

在多变量t分布中,您会找到一个术语|Sigma|^{-1/2}以及(x-mu)^T Sigma^{-1} (x-mu)

我对Eigen一无所知。我可以想象,对于一个正半定矩阵(它是一个协方差矩阵),我可以使用LLT求解器。

然而,解算器本身没有定义.determinant().inverse()方法。我是否必须使用.matrixL()函数并将对角线上的元素反转为逆,以及计算产品以获得行列式?我想我错过了什么。

1 个答案:

答案 0 :(得分:2)

如果Cholesky分解为Sigma=LL^T且想要(x-mu)^T*Sigma^{-1}*(x-mu),则可以计算:(llt.matrixL().solve(x-mu)).squaredNorm()(假设xmu是向量)。< / p>

对于行列式的平方根,只需计算llt.matrixL().determinant()(计算三角矩阵的行列式只是其对角元素的乘积)。