Estoy estudiando el rendimiento de un optimizador algoritmo para encontrar el $$ \textrm{argmin}_{x\in \mathbb{R}^n} f(x) \text{ donde } f : \mathbb{R}^n \rightarrow \mathbb{R} $$
Me gustaría probar cómo los cambios de rendimiento cuando puedo rotar el sistema de coordenadas. Necesito hacer esto de una manera sistemática , de modo que cada rotación tiene "la misma probabilidad".
En el $n=2$ de los casos esto es relativamente fácil, ya que cualquier 2-dimensional de rotación de la matriz puede ser escrita como:
\begin{pmatrix} cos(\phi) & sin(-\phi) \\ sin(\phi) & cos(\phi) \end{pmatrix}
La rotación se caracteriza por un único número $\phi$ así que puede muestra el $\phi$ uniforme (en forma equidistante) en $[-\pi; \pi]$.
En el $n=3$ caso de que las cosas se ponen más difíciles. Hay 3 ejes por los que me pueden girar, pero la composición de estas rotaciones no es conmutativa. Para que yo pudiera obtener resultados sesgados cuando me muestra estos 3 rotaciones de manera uniforme.
Yo estaba pensando en usar el de Euler, rotación del teorema:
en el espacio 3D, cualquiera de los dos sistemas de coordenadas Cartesianas con origen común están relacionados por una rotación alrededor de algún eje fijo
Esto significa que las rotaciones en 3d se caracteriza por un eje y un ángulo.
Así, pude muestra todos los posibles ejes de algunos de longitud fija y todas las posibles rotaciones alrededor de dicho eje. Pero este enfoque es muy trivial para generalizar a dimensiones arbitrarias.
¿Cómo puedo la muestra n-dimensional rotaciones de manera uniforme?