shift-invert 스펙트럼 변환 [1]을 사용하고 대역별로 스펙트럼을 계산할 수 있습니다.
이 기술은 내 기사 [2]에도 설명되어 있습니다. [1]의 구현 외에도 내 Graphite 소프트웨어 [3]에서 C ++로 구현을 사용할 수 있습니다 ( 1 월 17 일 업데이트 : 이제 모든 것이 지오 그램 / 그라파이트 버전 3으로 포팅 됨 ). 최대 100 만 개의 정점을 가진 메시 (당신과 비슷한 문제).
작동 방식 :
아이디어가 가 불가역이면 가 의 고유 쌍이고 , 가 의 고유 쌍인 경우입니다 . ARPACK의 반복 방법은 큰 고유 값 (고주파)을 계산하는 데 매우 효율적이지만 작은 값 (작은 주파수)에 대해서는 훨씬 덜 효율적입니다. 따라서 작은 주파수를 계산해야하는 경우 를 로 바꾸는 것이 좋습니다 . ARPACK 단지 연산 행렬 벡터 제품해야하므로 이제, 정말 반전 할 필요가 없다 하나 대신 인자 그것은 (예를 들어 사용 성긴 LU 또는 희소 수 인수 분해) 다음 해결( V , λ ) ( V , 1 / λ ) - 1 - 1 L의 L의 t의 X = B - σ I D σ ( - σ I D ) - 1 σㅏ( V, λ )ㅏ( V, 1 / λ )ㅏ− 1ㅏA−1ALLtAx=bARPACK이 행렬-벡터 곱을 요청할 때마다. 이것은 "반전"변환입니다. 고유 값의 개수가 커지면 지금 때 ARPACK 느린 것으로 지지만, 다른 트릭가 /의 고유 값이 사용될 수 변환 한 계산해 여기서 를 결정 부하는 "시프트"인 스펙트럼의 탐색이 이루어집니다 ( "시프트"변환). 두 변환을 결합하여 의 특정 고유 값을 계산 한 다음 를 증가시켜 전체 스펙트럼을 대역별로 탐색합니다 . 자세한 내용은 [1], [2]에 있습니다.A−σIdσ(A−σId)−1σ
[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf
[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008
[3] http://alice.loria.fr/software/graphite/doc/html/