我在 Julia (Julia)建立POE合奏时遇到麻烦。我正在关注this纸和其他paper的一部分。

在 Julia ,我计算:

X = randn(dim, dim)
Q, R = qr(X)
Q = Q*diagm(sign(diag(R)))
ij = (irealiz-1)*dim
phases_ens[1+ij:ij+dim] = angle(eigvals(Q))

其中dim是矩阵维度,而irealiz是just和索引,表示实现的总数。

我对Q的相位感兴趣,因为我希望Q是具有适当Haar测度的正交矩阵。如果dim=50和实现的总数为100000,并且由于我要校正Q,则应该期望phases_ens分布平坦。但是,除零和pi处的峰外,我得到了平坦的分布。代码有问题吗?

最佳答案

该代码实际上是正确的,只是您输入了错误的字段

特征值结果对于unit矩阵(复数项)为true;根据Edelman and Rao论文4.6节中的代码,如果您将第一行替换为

X = randn(dim, dim) + im*randn(dim, dim)

您会得到想要的结果。

正交矩阵(实际项)的行为略有不同(请参见this paper的第3节中的注释1):
  • dims为奇数时,一个特征值将为+1或-1(每个特征值的概率为1/2),所有其他特征值将作为共轭对出现。
  • dims为偶数时,+ 1和-1均为特征值为1/2的特征值,否则不存在真实的特征值。

  • (顺便感谢链接:我不知道Stewart的论文)

    09-28 12:27
    查看更多