Skip to content

olivierverdier/MultiAffine.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultiAffine

Build Status codecov

Given a group $H$, represented in dimension $n$ over some field $\mathbf{F}$ this package implements the group

$$(\mathbf{F}^n)^k \rtimes H$$

The group consists of matrices of the form

$$[X;h] \equiv \begin{bmatrix} \mathbf{1} & \mathbf{0} \\\ X & h \end{bmatrix}$$

where $h$ is a matrix belonging to the group $H$, and $X$ is a $n × k$ matrix. If we denote such an element by $[X,h]$, the multiplication law is

$$[X;h] [X';h'] = [X+hX';hh']$$

For instance, to implement the group

$$(\mathbf{C}^2)^2 \rtimes U(2)$$

you can use

using MultiAffine
using Manifolds
G = MultiAffineGroup(Unitary(2), 2)
identity_element(G) # ([0.0 0.0; 0.0 0.0], ComplexF64[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im])

When the group $H$ is the special orthogonal group $SO(n)$, one can use the alias MultiDisplacementGroup(n,k) to implement the group

$$(\mathbf{R}^n)^k \rtimes SO(n)$$

This has the same effect as calling MultiAffineGroup(SpecialOrthogonal(n), k).

G = MultiDisplacementGroup(3,2)
identity_element(G) # ([0.0 0.0; 0.0 0.0; 0.0 0.0], [1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0])

About

Implementation of the multi-affine group and its actions

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages