ランダム回転
CircularRealMatrixDistributionは,直交群 についてのハール(Harr)測度としても知られる,次元
の直交平方行列の一様分布を表す.この分布に従って生成された行列は,
次元 ベクトル空間内のベクトルについての回転演算子として作用する.
次元3のCircularRealMatrixDistributionからのランダム行列によって,固定3Dベクトル(0,0,1)を回転させることで得られたランダムベクトルの分布を定義する.
In[1]:=
![Click for copyable input](assets.ja/random-rotations/In_101.png)
\[ScriptCapitalD] =
MatrixPropertyDistribution[r.{0, 0, 1},
r \[Distributed] CircularRealMatrixDistribution[3]];
この分布を使って単位球面上の点をサンプルとして取る.
In[2]:=
![Click for copyable input](assets.ja/random-rotations/In_102.png)
points = RandomVariate[\[ScriptCapitalD], 10^3];
サンプル点のすべてが単位球面に属すかどうかをチェックする.
In[3]:=
![Click for copyable input](assets.ja/random-rotations/In_103.png)
AllTrue[points, RegionMember[Sphere[3]]]
Out[3]=
![](assets.ja/random-rotations/O_50.png)
サンプル点をもとのベクトルとともにプロットする.
完全なWolfram言語入力を表示する
Out[4]=
![](assets.ja/random-rotations/O_51.png)
円柱座標における球の表面の要素は で与えられる.
In[5]:=
![Click for copyable input](assets.ja/random-rotations/In_105.png)
{x, y, z} = Transpose[points];
\[Phi] = ArcTan[y/x];
と
の周辺分布が一様かどうかをチェックする.
In[6]:=
![Click for copyable input](assets.ja/random-rotations/In_106.png)
Histogram[#, 20, PDF] & /@ {\[Phi], z}
Out[6]=
![](assets.ja/random-rotations/O_52.png)
と
の結合分布が一様かどうかをチェックすることで,サンプル点が球面上で一様に分布しているかどうかをチェックする.
完全なWolfram言語入力を表示する
Out[7]=
![](assets.ja/random-rotations/O_53.png)
と
の結合分布が一様であるという仮説を検定する.
In[8]:=
![Click for copyable input](assets.ja/random-rotations/In_108.png)
DistributionFitTest[Transpose[{\[Phi], z}],
UniformDistribution[{{-Pi/2, Pi/2}, {-1, 1}}], "TestConclusion"]
Out[8]=
![](assets.ja/random-rotations/O_54.png)