以下存儲庫包含標準Lanczos算法的實現。
安裝
要親自使用算法, git clone
到本地機器上。然後,在克隆的目錄中,通過運行來初始化conda環境
conda env create --file environment.yml
從那裡,您可以像這樣激活環境
conda activate LanczosAlgo
並在src/lanczos.ipynb
中運行筆記本。
介紹
Lanczos算法是Cornelius Lanczos設計的直接算法,它是能力方法的改編 $ m $ “最有用”(傾向於最高/最低/最低)特徵值和特徵向量 $ n times n $ Hermitian Matrix,哪裡 $ m $通常但不一定比 $ n $ 。
演算法
該算法進行如下:
- 給出了一個隱士矩陣 $ 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 $成為與歐幾里得規範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_ v_ {j-1} $
在哪裡 $ J $表示迭代編號,必須滿足 $ 2 leq j leq m $ 。最後,輸出是一個三角體的矩陣 $ t $和 $ alpha_1,..., alpha_m $沿著主角和 $ beta_2,..., beta_m $沿著超級和分支。
未來的工作
目前正在進行努力擴展算法以包括散射狀態系統。如果您想在直播的時候被通知,如果您想被通知!