我正在尝试使用
Quantumoptics.jl
包找到哈密顿量的特征值。但是每次我尝试这样做时,它都会给我一个错误提示Methoderror: no method matching eigen(::Operator{FockBasis{Int64}, FockBasis{Int64}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}})
a = destroy(cavity);
at = create(cavity);
beta= 0.1;
H= beta * at *a
e = eigen(H);
我期待一个数组给我
H
的特征值。我也试过H = Matrix(H)
,但没有帮助
在 Julia 中,您可以使用
typeof
检查类型,例如,
> typeof(H)
Operator{FockBasis{Int64}, FockBasis{Int64}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}
如果你想了解更多关于
Operator
s 的信息,你可以在 REPL 中输入 ?Operator
来获取快速文档,查阅包的 在线文档 了解更多细节,或者使用 dump(H)
查看这个的字段结构。
因此,要获得
Operator
的系数,可以使用H.data
。要将它们检索为(密集的)Matrix
,您可以使用dense(H).data
。不过,如果您对特征值感兴趣,我建议您直接使用 eigenstates(H)
,这是 QuantumOptics-package 中的 实现,它可以直接处理 Operator
s 并处理基数,即,
function eigenstates(op::DenseOpType, n::Int=length(basis(op)); warning=true)
b = basis(op)
if ishermitian(op)
D, V = eigen(Hermitian(op.data), 1:n)
states = [Ket(b, V[:, k]) for k=1:length(D)]
return D, states
# ...
end
end