В Eigen есть рекомендации которые предупреждают против явного вычисления определителей и обратных матриц.
Я реализую апостериорный прогноз для многомерного нормального с нормальным обратным распределением. Это можно выразить как многомерное t-распределение.
В многомерном t-распределении вы найдете термин |Sigma|^{-1/2}
так же как (x-mu)^T Sigma^{-1} (x-mu)
,
Я совершенно невежественен в отношении Эйгена. Я могу себе представить, что для положительной полуопределенной матрицы (это ковариационная матрица) я могу использовать решатель LLT.
Там, однако, нет .determinant()
а также .inverse()
методы, определенные в самом решателе. Должен ли я использовать .matrixL()
Функционировать и инвертировать элементы по диагонали самостоятельно для обратного, а также рассчитать произведение, чтобы получить определитель? Я думаю, что что-то упустил.
Если у вас есть факторизация Холецкого Sigma=LL^T
и хотите (x-mu)^T*Sigma^{-1}*(x-mu)
Вы можете вычислить: (llt.matrixL().solve(x-mu)).squaredNorm()
(при условии, x
а также mu
являются векторами).
Для квадратного корня из определителя, просто рассчитать llt.matrixL().determinant()
(вычисление определителя треугольной матрицы является просто произведением ее диагональных элементов).