Python 厄米矩阵ARPACK的奇异行为

Python 厄米矩阵ARPACK的奇异行为,python,scipy,eigenvalue,arpack,Python,Scipy,Eigenvalue,Arpack,我想从数值上获得一些厄米矩阵的基态能量(见下面代码中该矩阵的定义),并根据矩阵参数“相位”绘制它 我在Python中使用了hermitian矩阵的ARPACK,这是使用sparse.linalg.eigs完成的。问题是,如下图所示,基态能量计算不正确,有很多峰值,这意味着基态没有正确找到。实际上,对于这个峰值,ARPACK没有找到基态,它获得了第一激发态。 这是一个非常奇怪的问题,因为我使用的这个矩阵(来自量子力学)可以通过分析和使用Mathematica来解决,而在Python中使用ARPAC

我想从数值上获得一些厄米矩阵的基态能量(见下面代码中该矩阵的定义),并根据矩阵参数“相位”绘制它

我在Python中使用了hermitian矩阵的ARPACK,这是使用
sparse.linalg.eigs
完成的。问题是,如下图所示,基态能量计算不正确,有很多峰值,这意味着基态没有正确找到。实际上,对于这个峰值,ARPACK没有找到基态,它获得了第一激发态。 这是一个非常奇怪的问题,因为我使用的这个矩阵(来自量子力学)可以通过分析和使用Mathematica来解决,而在Python中使用ARPACK是不起作用的。有人知道为什么会发生这种情况,如何解决??多谢各位

我在这个函数中使用了scipy 0.19.1的最后一个版本

def eigen_system(H):
    values, vectors = sparse.linalg.eigs(H,2,which='SR') #ARPACK!!
    energy_ground = values[0]
    return  vectors[:,0], energy_ground
找到前两个特征值,然后取第一个。函数
eigs
不能保证它找到的特征值是有序的,有时第一个特征值不是最小的

为什么不找到最小的两个呢

    values, vectors = sparse.linalg.eigs(H, 1, which='SR')  # ARPACK!!
当我做出改变时,我得到这个图:

在此功能中

def eigen_system(H):
    values, vectors = sparse.linalg.eigs(H,2,which='SR') #ARPACK!!
    energy_ground = values[0]
    return  vectors[:,0], energy_ground
找到前两个特征值,然后取第一个。函数
eigs
不能保证它找到的特征值是有序的,有时第一个特征值不是最小的

为什么不找到最小的两个呢

    values, vectors = sparse.linalg.eigs(H, 1, which='SR')  # ARPACK!!
当我做出改变时,我得到这个图: