以下存储库包含标准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 $沿着超级和分支。
未来的工作
目前正在进行努力扩展算法以包括散射状态系统。如果您想在直播的时候被通知,如果您想被通知!