В Эйгене, если у нас есть симметричная положительно определенная матрица A
, мы можем вычислить обратную A
по формуле
A.inverse();
or
A.llt().solve(I);
где I
— единичная матрица того же размера, что и A
. Но есть ли более эффективный способ вычисления обратной симметричной положительно определенной матрицы?
Например, если мы запишем разложение Холецкого A
как A = LL^{T}
, то L^{-T} L^{-1}
будет инверсией A
, начиная с A L^{-T} L^{-1} = LL^{T} L^{-T} L^{-1} = I
(и где L^{-T}
обозначает инверсию транспонирования L
).
Таким образом, мы могли бы получить разложение Холецкого для A
, вычислить его обратное, а затем получить векторное произведение этого обратного, чтобы найти обратное A
. Но я чувствую, что вычисление этих явных шагов будет медленнее, чем использование A.llt().solve(I)
, как указано выше.
И прежде чем кто-нибудь спросит, мне действительно нужна явная инверсия — это вычисление части сэмплера Гиббса.