Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/olivierverdier/multiaffine.jl
Implementation of the multi-affine group and its actions
https://github.com/olivierverdier/multiaffine.jl
Last synced: 30 days ago
JSON representation
Implementation of the multi-affine group and its actions
- Host: GitHub
- URL: https://github.com/olivierverdier/multiaffine.jl
- Owner: olivierverdier
- License: mit
- Created: 2024-06-20T16:33:47.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-11-18T09:40:09.000Z (3 months ago)
- Last Synced: 2024-11-19T01:27:37.654Z (3 months ago)
- Language: Julia
- Homepage: https://olivierverdier.github.io/MultiAffine.jl/
- Size: 427 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MultiAffine
[](https://github.com/olivierverdier/MultiAffine.jl/actions/workflows/CI.yml?query=branch%3Amain)
[](https://codecov.io/gh/olivierverdier/MultiAffine.jl)
[](https://olivierverdier.github.io/MultiAffine.jl/)Given a group $`H`$, represented in dimension $`n`$ over some field $`\mathbf{F}`$
this package implements the group
```math
(\mathbf{F}^n)^k \rtimes H
```
The group consists of matrices of the form
```math
[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
```math
[X;h] [X';h'] = [X+hX';hh']
```For instance, to implement the group
```math
(\mathbf{C}^2)^2 \rtimes U(2)
```
you can use
```julia
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](https://en.wikipedia.org/wiki/Orthogonal_group) $`SO(n)`$, one can use the alias `MultiDisplacementGroup(n,k)` to implement the group
```math
(\mathbf{R}^n)^k \rtimes SO(n)
```
This has the same effect as calling `MultiAffineGroup(SpecialOrthogonal(n), k)`.```julia
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])
```