Loading [MathJax]/jax/output/HTML-CSS/jax.js

Thursday, December 3, 2015

A virial theorem in the Gaussian Unitary Ensemble

In the Gaussian Unitary Ensemble of n×n matrices, one can calculate the following expectation value E[ij1(λiλj)2]=12n(n1) with λ1,,λn the eigenvalues of the random matrix H. I have normalized the GUE such that E[HijHkl]=δilδjk. In this blog post, I check (1) with a Monte Carlo simulation in Mathematica.
I generate an n×n random matrix in the GUE with the following code

RandomMatrixGUE[n_] := Module[{A, B, H},
  A = RandomVariate[NormalDistribution[], {n, n}];
  B = RandomVariate[NormalDistribution[], {n, n}];
  H = 1/2 (A + Transpose[A]) + I / 2 (B - Transpose[B]);
  H]

Given a matrix H, I calculate the sum ij1(λiλj)2 with

f[H_] := Module[{lambda = Eigenvalues[H], i, j, n = Length[H], result = 0},
  For[i = 1, i <= n, i++,
  For[j = 1, j < i, j++, result += 1/ (lambda[[i]] - lambda[[j]])^2]];
  2*result] 

I then use
randomsamples[n_, NSamples_] := Table[A = RandomMatrixGUE[n]; f[A], {k, NSamples}]

and

SeedRandom[1]
For [n = 2, n <= 5, n++,
 NSamples = 20000;
 result = randomsamples[n, NSamples];
 vev = Mean[result];
 vev = NumberForm[vev, {3, 2}];
 std = StandardDeviation[result]/Sqrt[NSamples];
 std = NumberForm[std, {3, 2}];
 exact = 1/2 n (n - 1);
 Print["\n n = ", n, ": exact = ", exact, ", Monte Carlo gives ", 
  vev, " with std ", std];
 difference = Abs[vev - exact];
 If[difference <= 3 std, 
  Print["the difference is smaller than 3 std"], 
  Print["The Monte Carlo result is different from exact result, \
namely ", difference/std, " standard deviations"]];]

The last code produces the following output:

 n = 2: exact = 1, Monte Carlo gives 0.94 with std 0.02

 n = 3: exact = 3, Monte Carlo gives 3.20 with std 0.31

 n = 4: exact = 6, Monte Carlo gives 6.06 with std 0.14

 n = 5: exact = 10, Monte Carlo gives 10.30 with std 0.48

The Monte Carlo results above lie within 3 standard deviations of the exact value for n=2,3,4,5. This is thus a good test on (1).
Remarks:
  • The proof of (1) can be found in the chapter on Brownian motion in Mehta's book. The proof is based on setting up an Ornstein-Uhlenbeck process and then analyzing the related heat equation. The argument is directly taken from a paper by Dyson. I do not know if there is a more direct way of calculating (1).
  • Illustrations of the Dyson Ornstein-Uhlenbeck process can be found in a previous post.

No comments:

Post a Comment