Wolfram Language™

Dyson Coulomb Gas

The joint distribution of the eigenvalues of a matrix following CircularOrthogonalMatrixDistribution is equivalent to the Boltzmann distribution of Dyson's Coulomb gas on a circle with inverse temperature . Define the average Hamiltonian (without the kinetic terms) per particle.

In:= hamiltonian[Z_] := Module[{n = Length[Z]}, Log[n]/2 - Sum[Total[Log[Abs[Differences[Z, 1, k]]]], {k, n - 1}]/n ]

Define the distribution of the Hamiltonian.

In:= h\[ScriptCapitalD] = MatrixPropertyDistribution[hamiltonian[Eigenvalues[x]], x \[Distributed] CircularOrthogonalMatrixDistribution[n]];

Compute the sample mean of the Hamiltonian for systems of different size.

In:= means = Table[{n, Mean[RandomVariate[h\[ScriptCapitalD], 1000]]}, {n, 10, 100, 10}];

Plot the sample means and compare them with the thermodynamic limit.

show complete Wolfram Language input
In:= Show[ListPlot[means, PlotStyle -> {Red, PointSize[Medium]}, Filling -> Axis, PlotRange -> {0.3, 0.37}, FrameLabel -> {Style["n", Black, 14], Style["\[LeftAngleBracket]H\[RightAngleBracket]", Black, 14]}, PlotTheme -> "Detailed"], Plot[1/2 (Log + PolyGamma[0, 3/2]), {x, 0, 100}, PlotTheme -> "Detailed"]]
Out= 