The Special Orthogonal Group mathrmSO(n)

# The Manifold $\operatorname{SO}(n)$ of rotations

The manifold $\mathcal M = \mathrm{SO}(n)$ of orthogonal matrices with determinant $+1$ in $\mathbb R^{n\times n}$, i.e.

$\mathrm{SO}(n) = \bigl\{R \in \mathbb{R}^{n\times n} \big| RR^{\mathrm{T}} = R^{\mathrm{T}}R = \mathrm{I}_n, \operatorname{det}(R) = 1 \bigr\}$

The $\mathrm{SO}(n)$ is a subgroup of the orthogonal group $\mathrm{O}(n)$ and also known as the special orthogonal group or the set of rotations group.

## Applications

The manifold of rotations appears for example in Electron Backscatter diffraction (EBSD), where orientations (modulo a symmetry group) are measured. For more details on symmetry groups, see for example the MTEX toolbox, where several image processing methods are implemented on $\mathrm{SO}(3)$-valued data, taking also the symmetries in the crystal orientations into account.

A paper concerned with discrete regression on $\mathrm{SO}(n)$ is

Boumal, N; Absil, P.–A.: A discrete Recgression Method on Manifolds and its Application to Data on $\mathrm{SO}(n)$, IFAC Proceedings Volume 44, Issue 1, pp 2284–2289. doi: 10.3182/20110828-6-IT-1002.00542

which also includes the formulae for several functions implemented for this manifold within Manopt.jl.

## Types

The manifold posesses the following instances of the abstract types Manifold, MPoint, and TVector.

Rotations <: Manifold

The manifold $\mathcal M = \mathrm{SO}(n)$ represented by $n\times n$ real-valued orthogonal matrices with determinant $+1$.

Abbreviation

SO

Constructor

Rotations(n)

generates the manifold $\mathrm{SO}(n)$ where the integer n is the number of rows or columns of the matrices.

source
SOPoint <: MPoint

A point $x$ on the manifold $\mathcal M = \mathrm{SO}(n)$ is represented by an orthogonal matrix with determinant $+1$ from $\mathbb R^{n\times n}.$

Constructor

SOPoint(x)

where x is an orthogonal matrix with determinant $+1$ of dimension $n×n$.

source
SOTVector <: TVector

A tangent vector $\xi \in T_x\mathcal M$ on the manifold $\mathcal M = \mathrm{SO}(n)$. The tangent space is given by as

$T_x\mathrm{SO}(n) = \bigl\{x\xi \in \mathbb R^{n\times n} \big| \xi + \xi^T = 0 \bigr\}.$

Since the manifold of rotations is a Lie group, it suffices to store just the skew-symmetric matrix $\xi$. This has to be taken into account in all formulae.

Constructor

SOTVector(ξ)

where ξ is an $n\times n$ Matrix that is skew-symmetric.

source

## Functions

exp(M,x,ξ,[t=1.0])

compute the exponential map on the Rotations manifold M$=\mathrm{SO}(n)$ with respect to the SOPoint x and the SOTVector ξ, which can be shortened with t to tξ. The formula reads

$\operatorname{exp}_{x}(tξ) = x \cdot \operatorname{Exp}(tξ)$

where $\operatorname{Exp}$ denotes matrix exponential.

source
log(M,x,y)

compute the logarithmic map on the Rotations manifold M$=\mathrm{SO}(n)$, which is given by

$\operatorname{log}_{x} y = \frac{1}{2} \bigl(\operatorname{Log}(x^{\mathrm{T}}y) - (\operatorname{Log} x^{\mathrm{T}}y)^{\mathrm{T}}),$

where $\operatorname{Log}$ denotes the matrix logarithm.

source
dot(M,x,ξ,ν)

compute the Riemannian inner product for two SOTVectors ξ and ν from $T_x\mathcal M$ of the Rotations manifold M given by

$\langle \xi, \nu \rangle_x = \operatorname{tr}(\xi^T\nu)$

i.e. the inner product in the embedded space $\mathbb R^{n\times n}$.

source
norm(M,x,ξ)

compute the norm of the SOTVector ξ in the tangent space $T_x\mathcal M$ at SOPoint x of the Rotations manifold M.

$\lVert \xi \rVert_x = \sqrt{\sum_{i,j=0}^n \xi_{ij}^2}$

where $\xi_{ij}$ are the entries of the skew-symmetric matrix ξ, i.e. the norm is given by the Frobenius norm of ξ.

source
distance(M,x,y)

compute the Riemannian distance on Rotations manifold M $= \mathrm{SO}(n)$ embedded in $\mathbb R^{n\times n}$, which is given by

$d(x,y) = \lVert \operatorname{log}_{x}y \rVert_x$

where $\operatorname{log}_{\cdot}\cdot$ denotes the logarithmic map on the Rotations $\mathcal M=\mathrm{SO}(n)$.

source
inverseRetractionPolar(M,x,y)

return a SOTVector ξ of the tagent space $T_x\mathrm{SO}(n)$ of the SOPoint x on the Rotations manifold M with which the SOPoint y can be reached by the retractionPolar after time 1. The formula reads

$ξ = -\frac{1}{2}(x^{\mathrm{T}}ys - (x^{\mathrm{T}}ys)^{\mathrm{T}})$

where $s$ is the solution to the Sylvester equation

$x^{\mathrm{T}}ys + s(x^{\mathrm{T}}y)^{\mathrm{T}} + 2\mathrm{I}_n = 0.$
source
inverseRetractionQR(M,x,y)

return a SOTVector ξ of the tagent space $T_x\mathrm{SO}(n)$ of the SOPoint x on the Rotations manifold M with which the SOPoint y can be reached by the retractionQR from the SOPoint x after time 1.

source
manifoldDimension(M)

return the dimension of the Rotations manifold M$= \mathrm{SO}(n)$. The dimension is defined by

$\frac{n(n-1)}{2}.$
source
manifoldDimension(x)

return the dimension of the Rotations manifold M$= \mathrm{SO}(n)$, the SOPoint x, itself embedded in $\mathbb R^{n\times n}$, belongs to. The dimension is defined by

$\frac{n(n-1)}{2}.$
source
parallelTransport(M,x,y,ξ)

compute the parallel transport of the SOTVector ξ from the tangent space $T_x\mathcal M$ at SOPoint x to $T_y\mathcal M$ at SOPoint y on the Rotations M along $g$ provided that the corresponding geodesic $g(\cdot;x,y)$ is unique. Since we have only stored the skew-symmetric matrix as a SOTVector ξ, the function returns the the SOTVector ξ.

source
randomMPoint(M[, type=:Gaussian, σ=1.0])

return a random SOPoint x on the manifold Rotations M by generating a (Gaussian) random orthogonal matrix with determinant $+1$. Let

$QR = A$

be the QR decomposition of a random matrix $A$, then the formula reads

$x = QD$

where $D$ is a diagonal matrix with the signs of the diagonal entries of $R$, i.e.

$D_{ij}=\begin{cases} \operatorname{sgn}(R_{ij}) & \text{if} \; i=j \\ 0 & \, \text{otherwise} \end{cases}.$

It can happen that the matrix gets -1 as a determinant. In this case, the first and second columns are swapped.

source
randomTVector(M,x[, type=:Gaussian, σ=1.0])

return a random SOTVector in the tangent space $T_x\mathrm{SO}(n)$ of the SOPoint x on the Rotations manifold M by generating a random skew-symmetric matrix. The function takes the real upper triangular matrix of a (Gaussian) random matrix $A$ with dimension $n\times n$ and subtracts its transposed matrix. Finally, the matrix is ​​normalized.

source
retractionPolar(M,x,ξ [,t=1.0])

move the SOPoint x in the direction of the SOTVector ξ on the Rotations manifold M. This SVD-based retraction is a second-order approximation of the exponential map. Let

$USV = x + txξ$

be the singular value decomposition, then the formula reads

$\operatorname{retr}_x\xi = UV^\mathrm{T}$
source
retractionQR(M,x,ξ [,t=1.0])

move the SOPoint x in the direction of the SOTVector ξ on the Rotations manifold M. This QR-based retraction is a first-order approximation of the exponential map. Let

$QR = x + txξ$

be the QR decomposition, then the formula reads

$\operatorname{retr}_x\xi = QD$

where the matrix $D$ is given by

$D_{ij}=\begin{cases} \operatorname{sgn}(R_{ij}+0,5) & \text{if} \; i=j \\ 0 & \, \text{otherwise.} \end{cases}$
source
zeroTVector(M,x)

return a zero SOTVector $\xi$ from the tagent space $T_x\mathrm{SO}(n)$ of SOPoint x on the Rotations manifold M, i.e. a zero matrix.

source