B
가 부족한 경우가 효율적일 수있다 (즉, O B
좋은 조건 수를 가정하면 (N)는() Conjugate Gradient 코드 위키에 주어진 샘플)
B x_i = a_i
에 x_i
대한 해결하기. a_i
을 A
의 열 벡터로 사용하면 O (n^2) 행렬 B^{-1} A
이됩니다. 그런 다음 대각선 요소를 합하여 추적을 얻을 수 있습니다. 일반적으로, 고유 값의 전체 집합을 얻는 것보다 희소 역 곱셈을하는 것이 더 쉽습니다. 비교를 위해 Cholesky decomposition은 O (n^3)입니다. () Cholesky에 대한 Darren Engwirda의 의견은입니다. 당신은 단지 추적에 대한 근사치를해야하는 경우
, 당신은 실제로 q
확률 벡터 r
이상
r^T (A B^{-1}) r
을 평균하여 O (Q n을)의 비용을 줄일 수 있습니다. 보통 q << n
. 이것은 <...>
가 r
의 분포에 걸쳐 평균을 나타낸다 여기서 랜덤 r
벡터의 성분
< r_i r_j > = \delta_{ij}
을 만족하도록 제공 공정한 추정치이다. 예를 들어, 구성 요소 r_i
은 단위 분산으로 분산 된 독립 가우스 분포 일 수 있습니다. 또는 + -1에서 균등하게 선택할 수 있습니다. 일반적으로 추적은 O (n)와 같고 추적 추정의 오차는 O (sqrt (n/q))와 같기 때문에 상대 오차는 O (sqrt (1/nq))로 비례합니다.
저는 C++ 태그가 실제로 여기에 속해 있다고 생각합니다. 질문은 Eigen, C++ 행렬 조작 라이브러리를 사용하는 구현에 관한 것이기 때문에 여기에 속합니다. –
긍정적 인 semidefinite 또는 긍정적 인 definite입니까? –
@DavidZaslavsky 태그를 제거했습니다. – yannick