【发布时间】:2020-02-07 05:02:43
【问题描述】:
有人能指出为什么 julia 在对某些类型的矩阵进行对角化时会失去对称性吗? (在下文中,我将忽略归一化常数。)我一直在尝试解决以下 Floquet 矩阵:
U[i,i] = exp(-i^2im/N),
N 矩阵和其他组件的维数为零。显然,这是哈密顿量的“时间演化”
H = p^2/2.
这个H在奇偶校验下是对称的,在站点基础Us = Udft'U*Udft中U也是如此(Udft是离散傅里叶矩阵s.t.Udft[m,mp] = sqrt(N)^-1 exp(i*j*1im/N)见下文),也就是说,可以检查一下
Jp*Us - Us*Jp = 0,
在哪里
Jp[i,j] = \delta_{i,N-j+1}
是空间反转矩阵。然而,本征态不满足奇偶性。如果vs 是Us 的本征态,那么
Jp*vs = \pm vs,
Julia 给出的数值结果不会发生这种情况。这有点奇怪,因为对于低维,比如N=11 没有问题,但是如果我去,比如N=1001,那么麻烦就开始出现了。 (在某些情况下,我希望 N 是奇数。原因是我的粒子被限制在酉圆上移动,并且我希望这些位置围绕零角对称。)为了对角化,我使用 Julia 1.2.0和
LinearAlgebra.eigen(Us).
附录: 感谢 SGJ 指出 DFT 中的明显错误。构建矩阵我做
M = div(N,2)
m = 1
for ii in -M:M
mp = 1
for jj in -M:M
U[m,mp] = exp(2.0im*pi*ii*jj/Nsites) #
mp += 1
end
m += 1
end
因此正负频率进入 DFT 并在从 -N/2 到 N/2 的动量零附近对称选择,其中使用整数除法。
【问题讨论】:
-
不确定这是否相关,但在您的
U的对角线整体中,我注意到您写了-i^2im/N。这被解析为i^(2im)/N,not 为i^2 * im/N。这可能是您问题的根源吗? -
我的程序 sintax 是 `exp(-1impiii^2/Nsites)` 所以我想这不是问题。
-
我怀疑这与浮点数学不具有关联性有关。用
Symmetric包裹你的矩阵能解决吗? (它可能会分派到可以利用的专用方法)。 -
你的意思是
Symmetric(Us)?