Skip to main content
deleted 4 characters in body
Source Link

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for small $n$, the fraction of flips is large, which create peaks at $-1$ and $1$ peaks. Restricting to $SO(n)$ removes the peaks at $-1$, and $1$ remaining density follows cosine formula from Girko

enter image description hereenter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = sampleO@n}, If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
label = StringForm["Eigenvalues of O(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]];
Histogram[angles, Automatic, PDF, PlotLabel -> label, 
 AxesLabel -> {"arg", "density"}]

label = StringForm["Eigenvalues of SO(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]];
observedPlot = 
  Histogram[angles, Automatic{Pi/15}, PDF, PlotLabel -> label, 
   AxesLabel -> {"arg", "density"}];
predictedPlot = 
  Plot[(Cos[2 t] + 2)/(4 Pi), {t, -Pi, Pi}, 
   PlotRange -> {0, 3/(4 Pi)}, 
   PlotLegends -> {TraditionalForm[(Cos[2 t] + 2)/(4 Pi)]}];
Show[observedPlot, predictedPlot]

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for small $n$, the fraction of flips is large, which create peaks at $-1$ and $1$ peaks. Restricting to $SO(n)$ removes the peaks at $-1$, and $1$ remaining density follows cosine formula from Girko

enter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = sampleO@n}, If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
label = StringForm["Eigenvalues of O(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]];
Histogram[angles, Automatic, PDF, PlotLabel -> label, 
 AxesLabel -> {"arg", "density"}]

label = StringForm["Eigenvalues of SO(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]];
observedPlot = 
  Histogram[angles, Automatic, PDF, PlotLabel -> label, 
   AxesLabel -> {"arg", "density"}];
predictedPlot = 
  Plot[(Cos[2 t] + 2)/(4 Pi), {t, -Pi, Pi}, 
   PlotRange -> {0, 3/(4 Pi)}, 
   PlotLegends -> {TraditionalForm[(Cos[2 t] + 2)/(4 Pi)]}];
Show[observedPlot, predictedPlot]

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for small $n$, the fraction of flips is large, which create peaks at $-1$ and $1$ peaks. Restricting to $SO(n)$ removes the peaks at $-1$, and $1$ remaining density follows cosine formula from Girko

enter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = sampleO@n}, If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
label = StringForm["Eigenvalues of O(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]];
Histogram[angles, Automatic, PDF, PlotLabel -> label, 
 AxesLabel -> {"arg", "density"}]

label = StringForm["Eigenvalues of SO(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]];
observedPlot = 
  Histogram[angles, {Pi/15}, PDF, PlotLabel -> label, 
   AxesLabel -> {"arg", "density"}];
predictedPlot = 
  Plot[(Cos[2 t] + 2)/(4 Pi), {t, -Pi, Pi}, 
   PlotRange -> {0, 3/(4 Pi)}, 
   PlotLegends -> {TraditionalForm[(Cos[2 t] + 2)/(4 Pi)]}];
Show[observedPlot, predictedPlot]
added 257 characters in body
Source Link

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for small $n=2$$n$, the fraction of flips is large, those arewhich create peaks at $-1,1$$-1$ and $1$ peaks. For largerRestricting to $n$$SO(n)$ removes the peaks at $-1$, bulk of matrices are pure rotations.

Flipping sign of first row makes eigenvalue distribution uniform:and $1$ remaining density follows cosine formula from Girko

enter image description hereenter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = RandomVariate[CircularRealMatrixDistribution[n]]sampleO@n}, 
   If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
SF = StringForm;
label = SF["EigenvaluesStringForm["Eigenvalues forof O(``)", n];
Histogram[Argangles = Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]]]];
Histogram[angles, 
 Automatic, PDF, PlotLabel -> label, 
 AxesLabel -> {"arg", "freq""density"}] 

label = SF["EigenvaluesStringForm["Eigenvalues forof SO(``)", n];
Histogram[Argangles = Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]],]];
observedPlot = 
  Histogram[angles, Automatic, PDF, PlotLabel -> label, 
   AxesLabel -> {"arg", "freq""density"}];
predictedPlot = 
  Plot[(Cos[2 t] + 2)/(4 Pi), {t, -Pi, Pi}, 
   PlotRange -> {0, 3/(4 Pi)}, 
   PlotLegends -> {TraditionalForm[(Cos[2 t] + 2)/(4 Pi)]}];
Show[observedPlot, predictedPlot]

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for $n=2$, the fraction of flips is large, those are $-1,1$ peaks. For larger $n$, bulk of matrices are pure rotations.

Flipping sign of first row makes eigenvalue distribution uniform:

enter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = RandomVariate[CircularRealMatrixDistribution[n]]}, 
   If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
SF = StringForm;
label = SF["Eigenvalues for O(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]], 
  PlotLabel -> label, AxesLabel -> {"arg", "freq"}]
label = SF["Eigenvalues for SO(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]],
  PlotLabel -> label, AxesLabel -> {"arg", "freq"}]

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for small $n$, the fraction of flips is large, which create peaks at $-1$ and $1$ peaks. Restricting to $SO(n)$ removes the peaks at $-1$, and $1$ remaining density follows cosine formula from Girko

enter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = sampleO@n}, If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
label = StringForm["Eigenvalues of O(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]];
Histogram[angles, Automatic, PDF, PlotLabel -> label, 
 AxesLabel -> {"arg", "density"}] 

label = StringForm["Eigenvalues of SO(``)", n];
angles = Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]];
observedPlot = 
  Histogram[angles, Automatic, PDF, PlotLabel -> label, 
   AxesLabel -> {"arg", "density"}];
predictedPlot = 
  Plot[(Cos[2 t] + 2)/(4 Pi), {t, -Pi, Pi}, 
   PlotRange -> {0, 3/(4 Pi)}, 
   PlotLegends -> {TraditionalForm[(Cos[2 t] + 2)/(4 Pi)]}];
Show[observedPlot, predictedPlot]
deleted 2 characters in body
Source Link

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for $n=2$, the fraction of flips is large, those are $-1,1$ peaks. For larger $n$, bulk of matrices are pure rotations.

Flipping sign of first row makes eigenvalue distribution uniform:

enter image description hereenter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = RandomVariate[CircularRealMatrixDistribution[n]]}, 
   If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
SF = StringForm;
label = SF["Eigenvalues for O(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]], 
 PlotLabel -> label, AxesLabel -> {"arg", "freq"}]
label = SF["Eigenvalues for SO(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleSO@2Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]],
  PlotLabel -> label, AxesLabel -> {"arg", "freq"}]

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for $n=2$, the fraction of flips is large, those are $-1,1$ peaks. For larger $n$, bulk of matrices are pure rotations.

Flipping sign of first row makes eigenvalue distribution uniform:

enter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = RandomVariate[CircularRealMatrixDistribution[n]]}, 
   If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
SF = StringForm;
label = SF["Eigenvalues for O(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]], 
 PlotLabel -> label, AxesLabel -> {"arg", "freq"}]
label = SF["Eigenvalues for SO(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleSO@2, {numSamples}]],
  PlotLabel -> label, AxesLabel -> {"arg", "freq"}]

There's an asymmetry because members of O(n) include rotation with random angle and flips with random axis, for $n=2$, the fraction of flips is large, those are $-1,1$ peaks. For larger $n$, bulk of matrices are pure rotations.

Flipping sign of first row makes eigenvalue distribution uniform:

enter image description here

negateFirstRow[A_] := {-A[[1, All]]}~Join~A[[2 ;;, All]];
sampleO[n_] := RandomVariate[CircularRealMatrixDistribution[n]];
sampleSO[n_] := 
  With[{mat = RandomVariate[CircularRealMatrixDistribution[n]]}, 
   If[Det[mat] > 0, mat, negateFirstRow@mat]];

n = 4;
numSamples = 100000;
SF = StringForm;
label = SF["Eigenvalues for O(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleO@n, {numSamples}]], 
 PlotLabel -> label, AxesLabel -> {"arg", "freq"}]
label = SF["Eigenvalues for SO(``)", n];
Histogram[Arg /@ Flatten[Table[Eigenvalues@sampleSO@n, {numSamples}]],
  PlotLabel -> label, AxesLabel -> {"arg", "freq"}]
added 151 characters in body
Source Link
Loading
Source Link
Loading