2013-12-20 5 views
1

선형 시스템을 해결하려고합니다 Ax=b 여기서 A3x3 대칭 양수입니다.3x3 대칭 및 양의 한정 선형 시스템의 경우 Cholesky가 Householder보다 여전히 빠릅니까?

비록 규모가 작지만, 나는 다른 A 수백만 번 반복해야 할 것입니다. 따라서 효율은 여전히 ​​중요합니다.

선형 시스템 (C++, Eigen을 통해)을위한 많은 해결사가 있습니다. 저는 개인적으로 다음을 선호합니다 : HouseholderQr().solve()llt().solve(), ldlt().solve().

n이 매우 큰 경우 Cholesky 분해를 기반으로 한 솔버가 Householder보다 빠릅니다. 그러나 내 경우에 n이 3 일 때 어떻게 상대 효율성을 비교할 수 있습니까? 정확한 float operation 분석을위한 수식이 있습니까?

감사합니다.

답변

0

예, 콜레 스키는 여전히 빠릅니다. 약 n^3/3 플립이 될 것입니다. QR을 사용하는 유일한 이유는 매트릭스가 매우 아픈 경우입니다.

이러한 시스템을 100 만 회 이상 해결해야하고 효율성이 중요한 경우 LAPACK을 직접 호출하는 것이 좋습니다. DPOSV 기능을 원합니다.

http://www.netlib.org/lapack/lug/node26.html#1272

http://www.netlib.org/clapack/what/double/dposv.c

+0

LAPACK는 유일한 3 × 3 다음 모든 아이겐에서 풀려 할 필요가있는 경우 또한 나는 내가 LAPACK가 정말 느린 점에 동의 모르겠어요 – Lindon

+0

을 희망, 작은 행렬 정말 느리다 작은 행렬. 나는 그것과 Eigen 사이의 벤치 마크를 보는 것에 흥미가있을 것입니다. 공급 업체는 DPOSV와 같은 자체 LAPACK 기능 버전도 구현합니다. LAPACK의 INTEL MKL 버전을 테스트하는 것은 흥미로울 것입니다. – codehippo