Plotting the elliptical distribution of eigenvalues for correlated random matrices

75 Views Asked by At

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)
0

There are 0 best solutions below