在Matlab中,我试图求解具有高度退化的特征向量集的哈密顿矩阵的能量和本征态。矩阵是55x55的Hermitian矩阵,当我调用eig
或schur
进行对角化时,我发现一些(但不是全部)特征向量是"错误的"每个简并子空间内的线性组合。我的意思是"错误"是问题还有其他限制。在这种情况下,有一个很好的量子数M,我希望通过不允许混合具有不同M值的状态来保留它 - 但是混合正是我在运行代码时看到的。有没有办法告诉Matlab对矩阵进行对角化,同时保持另一个算子的特征向量?
答案 0 :(得分:0)
您可以使用diag
对矩阵进行对角化,并使用[eig_vect,eig_val] = eig(A)
为您提供特征向量。
答案 1 :(得分:0)
我不太了解matlab,知道这是否有例程,但这里是如何通过算法进行的:
首先对角线H,就像你现在一样。然后对于每个简并特征空间V,将C的限制对角化为V,并使用该对角化来计算C和H的同时对角线
更详细:
我假设你有一个与汉密尔顿H交换的算子C.如果V是特定(退化)特征值的H的本征空间,并且你有一个基数x [1] .. x [n]对于每个i,Cx [i]必须在V中,因此我们可以用x []扩展Cx [i],并得到C到V的限制的矩阵表示C ^,我们计算
C^[k,j] = <x[k]|C*x[j]> k,j =1 .. n
对角矩阵C ^,得到
C^ = U*D*U*
然后对于U *的每一行(r1,.. rn),我们可以形成
chi = Sum{ j | r[j]*x[j]}
一个小代数表明这是C的特征向量,也是H
的特征向量