I am currently working on a problem that has to do with the generalized version of circular law called ellipse law. Basically, it means that for a N*N
Random Matrix M
with elements A_{ij}
taken from a gaussian distribution N(0,1)
with a correlation c
between A_{ij}
and A_{ji}
and futhermore normalized as M_{ij} = A_{ij}/sqrt{N}
, the complex eigenvalues are uniformly distributed inside a circle with real and imaginary axes corresponding to 1+c
and 1-c
respectively. I tried to programm (Python) for 500 * 500
Matrix, but the real axis is always greater than 1+c
(See figure). I would really appreciate the help. I am really stuck with the problem. Since the correlation is 0.5, the convergence radius should have been 1.5 and 0.5 for real and imaginary axes respectively. But there is a clear nonconvergence.
I tried to create the correlated matrix in this way, then plot the eigenvalues of C. Thankyou very much for the help.
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)