2016-07-28 3 views
2

아이겐에서 I이고 동일한 크기의 단위 행렬 A. 그러나 대칭 포지티브 한정 행렬의 역함수를 계산하는보다 효율적인 방법이 있습니까?고유치 효과적인 역변환

예를 들어 우리는 L^{-T} L^{-1}은 (는 L^{-T}L의 전치 행렬의 역을 나타내며) A L^{-T} L^{-1} = LL^{T} L^{-T} L^{-1} = I 보낸 A의 역수이며, A = LL^{T}A의 촐레 스키 분해를 작성하는 경우.

우리는 A의 콜레 스키 분해를 얻을 수 있고, 그 역함수를 계산 한 다음 그 역함수의 외삽을 구하여 A의 역함수를 구합니다. 하지만 내 본능은 이러한 명시적인 단계를 계산하는 것이 위와 같이 A.llt().solve(I)을 사용하는 것보다 느려질 것이라는 점입니다.

그리고 누군가가 묻기 전에 나는 명백하게 반대가 필요합니다. 이것은 깁스 샘플러의 일부에 대한 계산입니다.

+0

Eigen을 사용하여 대칭 포지티브 행렬의 역함수를 계산하는 더 빠른 방법이 있는지 여부는 알 수 없지만 AFAIK는 내가 언급 한 명시 적 방법이 가장 빠른 방법입니다. O ((1/3) n^3 + 2n^2)) - 분명히 Eigen이 두포에서하는 일입니다. – dpritch

답변

3

A.llt().solve(I)으로 A을 SPD 행렬로 가정하고 콜레 스키 분해를 적용하여 방정식 Ax=I을 푸십시오. 방정식을 푸는 수학적 절차는 명시적인 방법과 정확히 같습니다. 따라서 모든 단계를 올바르게 수행하면 성능이 동일해야합니다.

한편, A.inverse()을 사용하면 대형 매트릭스에 대해 LU 분해를 사용하는 일반 매트릭스 반전을 수행하고 있습니다. 따라서 성능은 A.llt().solve(I);보다 낮아야합니다.

+0

감사합니다. Cholesky 해결 방법과 명시적인 방법을 프로파일 링하는 데 많은 시간을 절약 할 수 있습니다. 그리고 결국에는 여전히 동일하다는 것을 모르고 있습니다. – dpritch