다음 저장소에는 표준 Lanczos 알고리즘의 구현이 포함되어 있습니다.
설치
알고리즘을 직접 플레이하려면 리포지토리를 로컬 컴퓨터에 git clone
. 그런 다음 복제 된 디렉토리에서 실행하여 콘다 환경을 초기화합니다.
conda env create --file environment.yml
거기에서 그렇게 환경을 활성화 할 수 있습니다
conda activate LanczosAlgo
src/lanczos.ipynb
에서 노트를 실행하십시오.
소개
Lanczos 알고리즘은 Cornelius Lanczos가 고안 한 직접 알고리즘으로 전력 방법을 찾기위한 전력 방법입니다. $ m $ "가장 유용한"(극도의 최고/가장 낮은/가장 낮은 경향) 고유 값과 고유 벡터 $ n times n $ Hermitian 매트릭스, 어디에 $ m $ 종종 반드시 훨씬 작지는 않지만 $ n $ .
연산
알고리즘은 다음과 같이 진행됩니다.
- Hermitian 매트릭스가 주어졌습니다 $ a $ 크기 $ n times n $ 및 임의의 벡터 $ V_1 $ EUCLIDEAN NORM 1을 사용하면 기능 통화의 기본 수를 지정합니다. $ m = n $
- 허락하다 $ w_1 '$ = $ av_1 $
- 허락하다 $ alpha_1 = w_1 '^* V_1 $
- 허락하다 $ w_1 = w_1 '^*- alpha_1 v_1 $
우리는 2-4 단계를 첫 번째 반복 단계라고합니다. 그후,
- 허락하다 $ beta_j = || w_ {j-1} || $
- 만약에 $ beta_j neq0 $ , 허락하다 $ v_j = frac {w_ {j-1}} { beta_j} $ . 그렇지 않으면 $ v_j $ Euclidean Norm 1이있는 임의의 벡터가되는 임의의 벡터가됩니다. $ v_1, ..., v_ {j-1} $
- 허락하다 $ w_j '= av_j $
- 허락하다 $ alpha_j = w_j'v_j $
- 허락하다 $ w_j = w_j '- alpha_j v_j- beta_j v_ {j-1} $
어디 $ j $ 반복 번호를 나타내며 만족해야합니다 $ 2 leq j leq m $ . 마지막으로, 출력은 삼각화 된 매트릭스입니다 $ t $ ~와 함께 $ alpha_1, ..., alpha_m $ 주요 대각선을 따라 $ beta_2, ..., beta_m $ 슈퍼- 및 하위 디아 고를 따라.
미래의 일
현재 산란 상태 시스템을 포함하도록 알고리즘을 확장하려는 노력이 진행 중입니다. 그것이 생방송 될 때 알림을 받고 싶다면이 repo를 별표로 표시하십시오!