Heisenberg matrices

Manifolds.HeisenbergMatrices โ€” Type
HeisenbergMatrices{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).

Constructor

HeisenbergMatrices(n::Int; parameter::Symbol=:type)

Generate the manifold of $(n+2)ร—(n+2)$ Heisenberg matrices.

source
Base.rand โ€” Method
Random.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 ฯƒ.

source
ManifoldsBase.get_coordinates โ€” Method
get_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} 0 & \mathbf{a} & c \\ \mathbf{0} & 0_n & \mathbf{b} \\ 0 & \mathbf{0} & 0 \end{bmatrix}\]

the coordinates are concatenated vectors $\mathbf{a}$, $\mathbf{b}$, and number $c$.

source
ManifoldsBase.get_vector โ€” Method
get_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}\mathbf{a} & \mathbf{b} & c\end{bmatrix}$ the tangent vector is equal to

\[\begin{bmatrix} 0 & \mathbf{a} & c \\ \mathbf{0} & 0_n & \mathbf{b} \\ 0 & \mathbf{0} & 0 \end{bmatrix}\]

source
ManifoldsBase.project โ€” Method
project(M::HeisenbergMatrices, p, X)

Project the matrix X onto the tangent space at p of the HeisenbergMatrices M, orthogonally in the Frobenius inner product of the embedding.

The tangent space $T_p\mathcal M$ consists of the matrices that vanish outside the positions $(1,j)$, $j=2,\dots,n+2$, and $(i,n+2)$, $i=2,\dots,n+1$, of $\mathbf{a}$, $c$ and $\mathbf{b}$. The matrices $E_{ij}$ with a one at one of these positions and zeros elsewhere form an orthonormal basis of $T_p\mathcal M$, so by 6.57(i) in [Axl24]

\[\operatorname{proj}_p(X) = \sum_{(i,j)} โŸจX, E_{ij}โŸฉE_{ij} = \sum_{(i,j)} X_{ij}E_{ij},\]

that is, the entries of X at these positions are kept and all other entries are set to zero.

source
ManifoldsBase.project โ€” Method
project(M::HeisenbergMatrices, p)

Project the matrix p onto the HeisenbergMatrices M, orthogonally in the Frobenius inner product of the embedding.

The points of M are the matrices $I_{n+2} + X$ with $X$ in the subspace $T$ of matrices that vanish outside the positions $(1,j)$, $j=2,\dots,n+2$, and $(i,n+2)$, $i=2,\dots,n+1$, of $\mathbf{a}$, $c$ and $\mathbf{b}$. The matrices $E_{ij}$ with a one at one of these positions and zeros elsewhere form an orthonormal basis of $T$, so the orthogonal projection onto $T$ is $P_T(X) = \sum_{(i,j)} X_{ij}E_{ij}$ by 6.57(i) in [Axl24]. By 6.61 in [Axl24], applied to $p - I_{n+2}$, the closest point to p is $I_{n+2} + P_T(p - I_{n+2})$, and since $P_T(I_{n+2}) = 0$ this is

\[\operatorname{proj}_{\mathcal M}(p) = I_{n+2} + P_T(p) = \begin{bmatrix} 1 & \mathbf{a} & c \\ \mathbf{0}_n & I_n & \mathbf{b} \\ 0 & \mathbf{0}_n^\mathrm{T} & 1 \end{bmatrix},\]

where $\mathbf{a} = (p_{1,2},\dots,p_{1,n+1})$, $c = p_{1,n+2}$ and $\mathbf{b} = (p_{2,n+2},\dots,p_{n+1,n+2})^\mathrm{T}$.

source