使用 julia 计算特征向量时失去对称性

use*_*579 5 numeric julia

有人能指出为什么 Julia 在对某些类型的矩阵进行对角化时会失去对称性吗?(在下面我将忽略归一化常量。)我一直在尝试解决以下 Floquet 矩阵:

U[i,i] = exp(-i^2im/N),
Run Code Online (Sandbox Code Playgroud)

N基体和其它部件的尺寸是零。显然,这是哈密顿量的“时间演化”

H = p^2/2.
Run Code Online (Sandbox Code Playgroud)

H是在奇偶校验下对称的,因此U在站点基础上Us = Udft'U*UdftUdft是离散傅立叶矩阵 stUdft[m,mp] = sqrt(N)^-1 exp(i*j*1im/N)见下文),也就是说,可以检查

Jp*Us - Us*Jp = 0,
Run Code Online (Sandbox Code Playgroud)

在哪里

Jp[i,j] = \delta_{i,N-j+1}
Run Code Online (Sandbox Code Playgroud)

是空间求逆矩阵。然而,本征态不满足奇偶性。如果vs是 的本征态Us,则

Jp*vs = \pm vs,
Run Code Online (Sandbox Code Playgroud)

对于 julia 给出的数值结果,这不会发生。这有点奇怪,因为对于低维,说N=11没有问题,但如果我去,说N=1001然后麻烦开始出现。(在某些条件下,我想N成为奇数。原因是我有粒子被限制在单一圆上移动,并且我希望这些位置围绕零角对称。)为了对角化,我使用Julia 1.2.0

 LinearAlgebra.eigen(Us).
Run Code Online (Sandbox Code Playgroud)

附录:感谢 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
Run Code Online (Sandbox Code Playgroud)

使正和负频率的DFT输入和选自对称围绕动量零-N/2N/2其中整数除法被使用。

SGJ*_*SGJ 1

首先,舍入误差通常会稍微破坏对称性,因此与镜像对称性的微小差异(相对误差norm(Jp*vs - \xc2\xb1vs)/norm(vs) < 1e-12)不应成为问题。

\n\n

其次,p^2算子的能量特征值是双简并的(左行波和右行波具有相同的能量),并且简并态的宇称性不能通过对称性来保证。简并偶数和奇数本征函数(=驻波)的任何线性组合也是本征函数,因此您可以制作非对称本征函数(例如左行波而不是驻波)。当你有简并性时,正确的说法是你可以选择一个本征函数基,它也是奇偶本征函数。然而,Julia 的eigen操作(标准 LAPACK 算法)基本上为退化特征空间选择了“随机”基础,因此它不一定是您想要的。

\n\n

第三,看起来您没有正确使用离散傅里叶变换(DFT)。您本质上是使用 DFT 在平面波(动量空间)基础上表达二阶导数运算符 (p^2),但您发布的答案忘记了别名 \xe2\x80\x94 您确实需要同时拥有两者存在正频率和负频率。也就是说,一半术语的频率应与 成正比i-1(由于 Julia 的基于 1 的索引),另一半与 成正比N+1-i。许多来源对此进行了详细解释,例如这些注释

\n