Random Rotations
CircularRealMatrixDistribution represents a uniform distribution of the orthogonal square matrices of dimension , also known as the Haar measure on the orthogonal group
. The matrices generated according to this distribution can act as rotation operators for vectors in
-dimensional vector space.
Define a distribution of random vectors obtained by rotating a fixed 3D vector (0,0,1) by a random matrix from CircularRealMatrixDistribution of dimension 3.
![Click for copyable input](assets.en/random-rotations/In_101.png)
\[ScriptCapitalD] =
MatrixPropertyDistribution[r.{0, 0, 1},
r \[Distributed] CircularRealMatrixDistribution[3]];
Use this distribution to sample points on the surface of the unit sphere.
![Click for copyable input](assets.en/random-rotations/In_102.png)
points = RandomVariate[\[ScriptCapitalD], 10^3];
Check if all the sample points belong to the unit sphere.
![Click for copyable input](assets.en/random-rotations/In_103.png)
AllTrue[points, RegionMember[Sphere[3]]]
![](assets.en/random-rotations/O_50.png)
Plot the sample points with the original vector.
![](assets.en/random-rotations/O_51.png)
The element of surface area on the sphere in cylindrical coordinates is given by .
![Click for copyable input](assets.en/random-rotations/In_105.png)
{x, y, z} = Transpose[points];
\[Phi] = ArcTan[y/x];
Check if the marginal distributions of and
are uniform.
![Click for copyable input](assets.en/random-rotations/In_106.png)
Histogram[#, 20, PDF] & /@ {\[Phi], z}
![](assets.en/random-rotations/O_52.png)
Check if the sample points are uniformly distributed on the surface of the sphere by checking if the joint distribution of and
is uniform.
![](assets.en/random-rotations/O_53.png)
Test the hypothesis that the joint distribution of and
is uniform.
![Click for copyable input](assets.en/random-rotations/In_108.png)
DistributionFitTest[Transpose[{\[Phi], z}],
UniformDistribution[{{-Pi/2, Pi/2}, {-1, 1}}], "TestConclusion"]
![](assets.en/random-rotations/O_54.png)