({{, (RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution])[n] 
represents a circular symplectic matrix distribution with matrix dimensions {2 n,2 n} over the field of complex numbers.}})

OpenersNotesSection(Spacer1)Details

(RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution]) is also known as circular symplectic ensemble, or CSE.

(RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution]) represents a uniform distribution over the self-dual unitary quaternionic square matrices of dimension n.

The dimension parameter n can be any positive integer.

(RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution]) can be used with such functions as (RefLink[MatrixPropertyDistribution, paclet:ref/MatrixPropertyDistribution]) and (RefLink[RandomVariate, paclet:ref/RandomVariate]).

OpenersPrimaryExamplesSection(Spacer1)Examples  (9)

OpenersExampleSection0(Spacer1)Basic Examples  (2)

Generate a pseudorandom matrix from unitary symplectic group:

𝓂=RandomVariate[CircularSymplecticMatrixDistribution[100]];

The random matrix is unitary:

UnitaryMatrixQ[𝓂]

It also verifies the symplectic self-duality condition:

𝒥=KroneckerProduct[{{0,-1},{1,0}},IdentityMatrix[100,SparseArray]];
𝒥.Transpose[𝓂]==𝓂.𝒥

Represent the eigenvalues of a random matrix by (RefLink[MatrixPropertyDistribution, paclet:ref/MatrixPropertyDistribution]) and sample from it:

RandomVariate[MatrixPropertyDistribution[Eigenvalues[x],x\[Distributed]CircularSymplecticMatrixDistribution[4]]]

OpenersExampleSection1(Spacer1)Scope  (3)

Generate a single pseudorandom matrix:

RandomVariate[CircularSymplecticMatrixDistribution[2]]

Generate a set of pseudorandom matrices:

RandomVariate[CircularSymplecticMatrixDistribution[2],2]

Compute statistical properties numerically:

𝒟=MatrixPropertyDistribution[Max[Differences[Sort[Arg[Eigenvalues[m]]]]],m\[Distributed]CircularSymplecticMatrixDistribution[50]];

NExpectation[100x/(2Pi),x\[Distributed]𝒟]

OpenersExampleSection3(Spacer1)Applications  (1)

The joint distribution of the eigenvalues for (RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution]) is also Boltzmann distribution of Dyson's Coulomb gas on a circle with inverse temperature β==4. The average Hamiltonian per particle of the system is (without kinetic terms):

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 value of the Hamiltonian on random CSE matrix:

h𝒟=MatrixPropertyDistribution[hamiltonian[Take[SortBy[Eigenvalues[x],Arg],{1,-1,2}]],x\[Distributed]CircularSymplecticMatrixDistribution[n]];

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

means=Table[{n,Mean[RandomVariate[h𝒟,1000]]},{n,10,60,10}]

Plot the sample means and compare them with thermodynamic limit:

Show[ListPlot[means,PlotStyle->{Red,PointSize[Medium]},Filling->Axis,PlotRange->{0,0.12},AxesLabel->{"N","⟨H⟩"}],Plot[(1/2) ((3/2)-EulerGamma-Log[2]),{x,0,60}]]

OpenersExampleSection4(Spacer1)Properties & Relations  (2)

Distribution of phase angle of the eigenvalues:

dim=150;
args=RandomVariate[MatrixPropertyDistribution[Arg[Eigenvalues[x]],x\[Distributed]CircularSymplecticMatrixDistribution[dim]],100];

Histogram[Join@@args,{-Pi,Pi,2Pi/40},PDF]

Compute the spacing between eigenvalues, taking into account that they come in pairs:

diffs=Join@@Map[Composition[Differences[#,1,2]&,Sort],(args/(2Pi))dim];

Compare the histogram of sample level spacings with the closed form, also known as Wigner surmise for Dyson index 4:

WignerSurmisePDF[x_,β:4]:=(64/(9 Pi))^3 x^4 Exp[(-64/(9 Pi)) x^2]

Show[Histogram[diffs,{0.1},PDF],Plot[WignerSurmisePDF[x,4],{x,0,2.5}]]

For eigenvectors of (RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution]) with dimension n large, the scaled modulus of the quaternion elements is (χ^2) distributed:

With[{n=50},𝒟=MatrixPropertyDistribution[Flatten[Total[ArrayReshape[Abs[Eigenvectors[𝓂]]^2,{2n,2,n}],{2}]],𝓂\[Distributed]CircularSymplecticMatrixDistribution[n]]];

data=4Normalize[Join@@RandomVariate[𝒟,25],Mean];

Compare the histogram with (RefLink[PDF, paclet:ref/PDF]) of (RefLink[ChiSquareDistribution, paclet:ref/ChiSquareDistribution]):

Show[Histogram[data,"Scott",PDF],Plot[PDF[ChiSquareDistribution[4],x],{x,0,14}]]

OpenersExampleSection5(Spacer1)Possible Issues  (1)

A matrix from (RefLink[CircularSymplecticMatrixDistribution, paclet:ref/CircularSymplecticMatrixDistribution]) need not be symplectic:

dim=3;
cseℳ=RandomVariate[CircularSymplecticMatrixDistribution[dim]];

𝒥=KroneckerProduct[{{0,-1},{1,0}},IdentityMatrix[dim,SparseArray]];

Norm[Transpose[cseℳ].𝒥.cseℳ-𝒥]

Use (RefLink[CircularQuaternionMatrixDistribution, paclet:ref/CircularQuaternionMatrixDistribution]) to randomly generate a unitary symplectic matrix:

cqeℳ=RandomVariate[CircularQuaternionMatrixDistribution[dim]];

Norm[Transpose[cqeℳ].𝒥.cqeℳ-𝒥]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[CircularOrthogonalMatrixDistribution, paclet:ref/CircularOrthogonalMatrixDistribution])  ▪  (RefLink[CircularUnitaryMatrixDistribution, paclet:ref/CircularUnitaryMatrixDistribution])  ▪  (RefLink[CircularRealMatrixDistribution, paclet:ref/CircularRealMatrixDistribution])  ▪  (RefLink[CircularQuaternionMatrixDistribution, paclet:ref/CircularQuaternionMatrixDistribution])  ▪  (RefLink[MatrixPropertyDistribution, paclet:ref/MatrixPropertyDistribution])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Matrix Distributions, paclet:guide/MatrixDistributions])}})}})