I briefly explored a new preprint, Jean-Pierre Eckmann, Tsvi Tlusty (2025), Walks in Rotation Spaces Return Home When Doubled and Scaled, arXiv:2502.14367. https://doi.org/10.48550/arXiv.2502.14367. The paper investigates sequences (or “walks”) of rotations in SO(3) and shows that—even for very complicated sequences—there is a universal procedure to return a system exactly to its initial state.The main finding is that while a single pass through a randomly generated walk of rotations rarely returns to the identity (due to the structure of the Haar measure), repeating the walk some times and uniformly scaling the rotation angles almost always yields an exact return to the initial state. I also showed this feature for SU(2) group.
I would like to thank Michael Trott for highlighting this paper and for his insightful discussions and valuable suggestions.
Rotation group SO(3)
Rotation group SO(3)
Using CircularRealMatrixDistribution, one can generate a Haar-measure ensemble on the orthogonal group O(n). Proper rotations, characterized by determinant +1, form the special orthogonal group SO(n).
Show that CircularRealMatrixDistribution generates matrices with a 50%-50% split of determinants +1 and -1.
In[]:=
det=MatrixPropertyDistribution[Det[],CircularRealMatrixDistribution[3]];NProbability[Δ1,Δdet]NProbability[Δ-1,Δdet]
Out[]=
0.500172
Out[]=
0.500958
Since in the paper, authors considered only SO(3), we will generate an ensemble of SO(3):
In[]:=
so3=Table[Module[{mat},While[True,mat=RandomVariate[CircularRealMatrixDistribution[3]];If[Det[mat]==1,Return[mat]]]][[1]],100];
One can find the overall result of rotations together, and denote it as one single rotation:
In[]:=
so3f=Fold[Dot,Reverse[so3]]
Out[]=
{{0.307001,0.951632,-0.0121376},{0.926794,-0.301838,-0.223488},{-0.216342,0.057362,-0.974631}}
Find the corresponding overall angle and axis of rotation:
In[]:=
Quiet[ResourceFunction["AxisAngle"][so3f]]
Out[]=
RotationMatrix[2.96664,{0.806744,0.586579,-0.0713477}]
As expected, the probability of the angle being π is very low.
Create a sphere:
In[]:=
sphere=;
Show each step of the walk on the sphere (as expected, non returns to the initial point):
Out[]=
Create many ensembles of SO(3) and their overall rotation:
In[]:=
ensembleSO3=Table[Module[{u},u=Table[Module[{mat},While[True,mat=RandomVariate[CircularRealMatrixDistribution[3]];If[Det[mat]==1,Return[mat]]]][[1]],100];Fold[Dot,u]],10^4];
Calculate the distance (as norm-2) wrt IdentityMatrix[3]:
In[]:=
Histogram[Norm[#-IdentityMatrix[3]]&/@ensembleSO3,Automatic,"Probability",AspectRatio->1/4,PlotLabel->"Histogram of norm distances from the 3×3 identity matrix."]
Out[]=
As expected, most cases are far from the 3×3 identity matrix, meaning that obtaining it as the overall result is unlikely.
Now consider these cases:
(i) No-scaling: the overall result of all rotations=,
(ii) single-scaled: the case that each rotation is raised to a power= which is the same as assuming that all angles of rotations are multiplied by λ, and
(iii) Double-scaled: the case of
(i) No-scaling: the overall result of all rotations
u
f
Π
k
u
k
(ii) single-scaled: the case that each rotation is raised to a power
W
λ
Π
k
λ
u
k
(iii) Double-scaled: the case of
2
W
λ
Out[]=
For values of λ where the green plot intersects the x-axis, these instances validate the claim of the paper.
Of course, one can generate similar plots as Fig.3 of the paper, by calculating the overall rotation angle.
A function to calculate the overall rotation angle:
In[]:=
rotationAngle[matrix_]:=ArcCos[Clip[Chop@((Tr[matrix]-1)/2),{-1,1}]];
Visualize the overall rotation angle:
Out[]=
Continuous walk
Continuous walk
The Lie algebra of SO(3) can be generated by antisymmetric matrices, which can be obtained from a 3D vector. Every 3D vector corresponds to a antisymmetric matrix, which acts like a rotation axis. Exponentiating an antisymmetric matrix gives a valid rotation matrix. We adopt a random walk approach to ensure that each step modifies both the rotation angle and axis slightly, leading to a sequence that, over time, is distributed according to the Haar measure on SO(3).
Define a helper function to form a 3 x3 antisymmetric matrix from a 3-vector
In[]:=
Clear[Skew];Skew[v_]:={{0,-v[[3]],v[[2]]},{v[[3]],0,-v[[1]]},{-v[[2]],v[[1]],0}};
Define a function that returns a small random rotation with δt controls the typical magnitude of the step:
In[]:=
Clear[smallRandomRotation];smallRandomRotation[δt_]:=MatrixExp[Skew[RandomVariate[NormalDistribution[0,δt],3]]];
Generate an ensemble of rotation matrices starting with the 3 x3 identity:
In[]:=
Clear[generateRotationEnsemble];generateRotationEnsemble[tf_,δt_]:=NestList[smallRandomRotation[δt].#&,IdentityMatrix[3],Floor[tf/δt]+1];
Generate 100 rotations with a small step size δt = 0.01:
In[]:=
ensembleContinuousWalk=generateRotationEnsemble[4,0.1];
Generate the steps (points on the sphere) given the ensemble of rotations:
In[]:=
noScaling=FoldList[#2.#1&,{0,0,1},ensembleContinuousWalk];
Visualize the overall rotation for different cases:
In[]:=
Plot[{rotationAngle[Fold[Dot,Reverse[ensembleContinuousWalk]]],rotationAngle[Fold[Dot,MatrixPower[#,λ]&/@Reverse[ensembleContinuousWalk]]],rotationAngle[MatrixPower[Fold[Dot,MatrixPower[#,λ]&/@Reverse[ensembleContinuousWalk]],2]]},{λ,0,1},PlotRange->All,GridLines->Automatic,PlotLegends->{"No scaling","Single scaled","Double scaled"},PlotStyle->{Dashed,Automatic,Automatic},AxesLabel->{"λ","Rotation Angle"},ImageSize->Large,Ticks->{Automatic,{{0,"0"},{π/4,"π/4"},{π/2,"π/2"},{3π/4,"3π/4"},{π,"π"}}}]
Out[]=
For the following visualization, pick a value of λ that is those where the green line intersects with x-axis
Rotation of a qubit: SU(2) group
Rotation of a qubit: SU(2) group
Similar argument can be done if one think of rotation of qubits in SU(2) group.
Generate 100 random matrices belonging to the SU(2) group.
For values of λ where the green plot becomes 1, these instances validate the claim of the paper.
Similar to Fig.3 of the paper, one can find the rotation angle for SU(2) matrices, too:
Visualize them:
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Walks in rotation spaces return home when doubled and scaled
by Mohammad Bahrami
Wolfram Community, STAFF PICKS, February 25, 2025
https://community.wolfram.com/groups/-/m/t/3399789
by Mohammad Bahrami
Wolfram Community, STAFF PICKS, February 25, 2025
https://community.wolfram.com/groups/-/m/t/3399789