我目前正在研究一个与称为椭圆定律的圆形定律的广义版本有关的问题。基本上,这意味着对于一个 N*N 随机矩阵 M,其元素 A_{ij} 取自高斯分布 N(0,1),在 A_{ij} 和 A_{ji} 之间具有相关性 c,并进一步归一化为 M_{ ij}=A_{ij}/sqrt{N},复特征值均匀分布在实轴和虚轴分别对应1+c和1-c的圆内。我尝试为 500 * 500 矩阵编程 (Python),但实轴总是大于 1+c(见图)。我真的很感激你的帮助。我真的被这个问题困住了。
我尝试以这种方式创建相关矩阵,然后绘制 C 的特征值。 非常感谢您的帮助。
def create_corr_matrix(n, corr, zeta):
A = np.random.normal(0, 1, (n, n))
np.fill_diagonal(A, 1) # set diagonal elements to 1
print(A)
for i in range(n):
for j in range(n):
if np.abs(A[i][j])<zeta:
if corr=='p':
A[i][j] = A[j][i]
elif corr=='n':
A[i][j] = -A[j][i]
else:
A[i][j] = A[j][i]
return A
A=create_corr_matrix(n,corr,zeta)
C=A/np.sqrt(n)