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.
\[ScriptCapitalD] =
MatrixPropertyDistribution[r.{0, 0, 1},
r \[Distributed] CircularRealMatrixDistribution[3]];
Use this distribution to sample points on the surface of the unit sphere.
points = RandomVariate[\[ScriptCapitalD], 10^3];
Check if all the sample points belong to the unit sphere.
AllTrue[points, RegionMember[Sphere[3]]]
Plot the sample points with the original vector.
The element of surface area on the sphere in cylindrical coordinates is given by .
{x, y, z} = Transpose[points];
\[Phi] = ArcTan[y/x];
Check if the marginal distributions of and are uniform.
Histogram[#, 20, PDF] & /@ {\[Phi], z}
Check if the sample points are uniformly distributed on the surface of the sphere by checking if the joint distribution of and is uniform.
Test the hypothesis that the joint distribution of and is uniform.
DistributionFitTest[Transpose[{\[Phi], z}],
UniformDistribution[{{-Pi/2, Pi/2}, {-1, 1}}], "TestConclusion"]