Как эффективно использовать обратное и определитель в Eigen?

В Eigen есть рекомендации которые предупреждают против явного вычисления определителей и обратных матриц.

Я реализую апостериорный прогноз для многомерного нормального с нормальным обратным распределением. Это можно выразить как многомерное t-распределение.

В многомерном t-распределении вы найдете термин |Sigma|^{-1/2} так же как (x-mu)^T Sigma^{-1} (x-mu),

Я совершенно невежественен в отношении Эйгена. Я могу себе представить, что для положительной полуопределенной матрицы (это ковариационная матрица) я могу использовать решатель LLT.

Там, однако, нет .determinant() а также .inverse() методы, определенные в самом решателе. Должен ли я использовать .matrixL() Функционировать и инвертировать элементы по диагонали самостоятельно для обратного, а также рассчитать произведение, чтобы получить определитель? Я думаю, что что-то упустил.

3

Решение

Если у вас есть факторизация Холецкого Sigma=LL^T и хотите (x-mu)^T*Sigma^{-1}*(x-mu)Вы можете вычислить: (llt.matrixL().solve(x-mu)).squaredNorm() (при условии, x а также mu являются векторами).

Для квадратного корня из определителя, просто рассчитать llt.matrixL().determinant() (вычисление определителя треугольной матрицы является просто произведением ее диагональных элементов).

1

Другие решения


По вопросам рекламы [email protected]