稀疏矩阵少量本征值求解踩坑
烦
一直以来做计算都是要对矩阵进行对角化,通常也只是关注低能附近的情况,所以这个时候是没必要进行全矩阵对角化的,只需要得到低能的一些本征值即可。通常我是用的是Julia
的Arpack这个库,函数为1
val,vec = eigs(ham,nev = 100,mt1iter = 30,which = :SM) # 取最小的100个本征值
因为此时好像是利用迭代的方法来求解本确定数量的本征值的,所以此时就会有一个迭代数量设置,我在之前的问题中一直都是设置mt1iter = 30
,也没出什么问题,得到的结果也都是正确的,但是最近在计算超导vortex中的低能激发的时候就出问题了,得到的结果会震荡的很厉害,而且将mt1iter = 100
同样发现和文献中的结果有出入,最终不得不使用直接对角化的方法,得到全部的本征值1
val = eigvals(ham)
此时得到的结果才和文章是符合的。
鉴于该网站分享的大都是学习笔记,作者水平有限,若发现有问题可以发邮件给我
- yxliphy@gmail.com
也非常欢迎喜欢分享的小伙伴投稿
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Yu-Xuan's Blog!
评论