Heisenberg matrices
Manifolds.HeisenbergMatrices
โ TypeHeisenbergMatrices{T} <: AbstractDecoratorManifold{๐ฝ}
Heisenberg matrices HeisenbergMatrices(n)
is the manifold of $(n+2)ร(n+2)$ matrices [BP08]
\[\begin{bmatrix} 1 & \mathbf{a} & c \\ \mathbf{0}_n & I_n & \mathbf{b} \\ 0 & \mathbf{0}_n^\mathrm{T} & 1 \end{bmatrix}\]
where $I_n$ is the $nรn$ unit matrix, $\mathbf{a}$ is a row vector of length $n$, $\mathbf{b}$ is a column vector of length $n$, $\mathbf{0}_n$ is the column zero vector of length $n$, and $c$ is a real number.
It is a submanifold of Euclidean
(n+2, n+2)
and the manifold of the HeisenbergGroup
.
Constructor
HeisenbergMatrices(n::Int; parameter::Symbol=:type)
Generate the manifold of $(n+2)ร(n+2)$ Heisenberg matrices.
Base.rand
โ MethodRandom.rand(M::HeisenbergMatrices; vector_at = nothing, ฯ::Real=1.0)
If vector_at
is nothing
, return a random point on the HeisenbergMatrices
M
by sampling elements of the first row and the last column from the normal distribution with mean 0 and standard deviation ฯ
.
If vector_at
is not nothing
, return a random tangent vector from the tangent space of the point vector_at
on the HeisenbergMatrices
by using a normal distribution with mean 0 and standard deviation ฯ
.
ManifoldsBase.Weingarten
โ MethodY = Weingarten(M::HeisenbergMatrices, p, X, V)
Weingarten!(M::HeisenbergMatrices, Y, p, X, V)
Compute the Weingarten map $\mathcal W_p$ at p
on the HeisenbergMatrices
M
with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.
Since this a flat space by itself, the result is always the zero tangent vector.
ManifoldsBase.get_coordinates
โ Methodget_coordinates(M::HeisenbergMatrices, p, X, ::DefaultOrthonormalBasis{โ,TangentSpaceType})
Get coordinates of tangent vector X
at point p
from the HeisenbergMatrices
M
. Given a matrix
\[\begin{bmatrix} 1 & \mathbf{a} & c \\ \mathbf{0} & I_n & \mathbf{b} \\ 0 & \mathbf{0} & 1 \end{bmatrix}\]
the coordinates are concatenated vectors $\mathbf{a}$, $\mathbf{b}$, and number $c$.
ManifoldsBase.get_vector
โ Methodget_vector(M::HeisenbergMatrices, p, Xโฑ, ::DefaultOrthonormalBasis{โ,TangentSpaceType})
Get tangent vector with coordinates Xโฑ
at point p
from the HeisenbergMatrices
M
. Given a vector of coordinates $\begin{bmatrix}\mathbb{a} & \mathbb{b} & c\end{bmatrix}$ the tangent vector is equal to
\[\begin{bmatrix} 1 & \mathbf{a} & c \\ \mathbf{0} & I_n & \mathbf{b} \\ 0 & \mathbf{0} & 1 \end{bmatrix}\]
ManifoldsBase.is_flat
โ Methodis_flat(::HeisenbergMatrices)
Return true. HeisenbergMatrices
is a flat manifold.
ManifoldsBase.manifold_dimension
โ Methodmanifold_dimension(M::HeisenbergMatrices)
Return the dimension of HeisenbergMatrices
(n)
, which is equal to $2n+1$.