次のリポジトリには、標準のLanczosアルゴリズムの実装が含まれています。
インストール
アルゴリズムを自分で遊ぶには、 git clone
。次に、クローン化されたディレクトリで、実行してコンドラ環境を初期化します
conda env create --file environment.yml
そこから、そのような環境をアクティブにすることができます
conda activate LanczosAlgo
src/lanczos.ipynb
でノートブックを実行します。
導入
Lanczosアルゴリズムは、Cornelius Lanczosによって考案された直接アルゴリズムであり、電力方法の適応であり、 $ m $ 「最も便利な」(非常に高い/最低に向かう)固有値と固有ベクトル $ n times n $ヘルミアンマトリックス、ここで $ 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_ {j-1} $
どこ $ j $反復数を示し、満たす必要があります $ 2 leq j leq m $ 。最後に、出力は三分角マトリックスです $ t $と $ alpha_1、...、 alpha_m $主な対角線に沿って $ beta_2、...、 beta_m $スーパーおよびサブゲーゴンに沿って。
将来の仕事
現在、アルゴリズムを拡張して散乱状態システムを含めるための取り組みが進行中です。あなたがそれが公開されたときに通知されたい場合は、このレポを主演してください!