Processing math: 100%

Sunday, November 15, 2015

Spectral Density in the Gaussian Unitary Ensemble

In this post I perform numerical experiments on the spectral density in the Gaussian Unitary Ensemble (GUE).
This is the set of Hermitian N×N matrices H with probability density P(H)dH=Ni<jdReHiji<jdImHij idHiiexp(12 tr(H2))
where N is the normalization constant. The spectral density ρ(λ) is defined by ρ(x)dx=Nk=1P(xλkx+dx)
with λk the N eigenvalues of the matrix H. In chapter 6 of his book, Mehta calculates that ρ(x)=KN(x,x) with KN(x,y)=HN(x)HN1(y)HN(y)HN1(x)xyex24y24
Thus ρ(x)=(HN1(x)HN(x)HN(x)HN1(x))ex22
Here HN(x) are the Hermite polynomials. I now check formula (1) for N=1,2,3 with a Monte Carlo simulation in Mathematica. I generate matrices from the GUE as follows: I draw matrices A and B whose elements Aij and Bij are independent normal random variables and take H=12(A+AT)+i2(BBT)
Then I calculate the N eigenvalues of H. This is the code that I use for this.

Clear[randomsamples] (* This code calculates the eigenvalues of NSamples matrices from GUE. The size of the matrices is NN times NN *) 
randomsamples[NN_, NSamples_] := Table[A = RandomVariate[NormalDistribution[], {NN, NN}]; 
B = RandomVariate[NormalDistribution[], {NN, NN}]; 
H = 1/2 (A + Transpose[A]) + I / 2 (B - Transpose[B]); 
Eigenvalues[H], {k, NSamples}] // Flatten

N = 1
In this case ρ(x)=12πexp(x22)
I produce a graph with the following commands  
NSamples = 10000; 
NN = 1; 
randomeigs = randomsamples[NN, NSamples]; 
fig1 = Histogram[randomeigs, {-3, 3, 0.1}, "PDF"]; 
fig2 = Plot[1/Sqrt[2 Pi] Exp[-x^2/2], {x, -3, 3}, PlotStyle -> Red]; 
Show[fig1, fig2]


N = 2
In this case ρ(x)=ex22(x2+1)22π
I produce a graph with the following commands
NSamples = 50000; NN = 2; 
randomeigs = randomsamples[NN, NSamples]; 
fig1 = Histogram[randomeigs, {-4, 4, 0.1}, "PDF"]; 
fig2 = Plot[ (E^(-(x^2/2)) (1 + x^2))/(2 Sqrt[2 \[Pi]]), {x, -4, 4}, PlotStyle -> Red]; 
Show[fig1, fig2]


N = 3
In this case ρ(x)=ex22(x4+3)62π
I produce a graph with the following commands
NSamples = 50000; NN = 3; 
randomeigs = randomsamples[NN, NSamples]; 
fig1 = Histogram[randomeigs, {-5, 5, 0.1}, "PDF"]; 
fig2 = Plot[ (E^(-(x^2/2)) (3 + x^4))/(6 Sqrt[2 \[Pi]]), {x, -5, 5}, PlotStyle -> Red]; Show[fig1, fig2]

The analytical expression (1) thus agrees well with the Monte Carlo simulation.
Warning: In this post, I have not paid attention to overall constants in expressions, I only made sure the normalizations were consistent in the Mathematica code.

No comments:

Post a Comment