AUTHORS:
Bases: sage.structure.unique_representation.UniqueRepresentation, sage.groups.group.Group
An affine group.
The affine group (or general affine group) of an affine
space
is the group of all invertible affine transformations from the
space into itself.
If we let be the affine space of a vector space
(essentially, forgetting what is the origin) then the affine group
is the group generated by the general linear group
together with the translations. Recall that the group of
translations acting on
is just
itself. The general linear and
translation subgroups do not quite commute, and in fact generate the
semidirect product
As such, the group elements can be represented by pairs of a
matrix and a vector. This pair then represents the transformation
We can also represent affine transformations as linear transformations by
considering dimensonal space. We take the affine
transformation
to
and lifting to
. Here
the
-th component is always 1, so the linear representations
acts on the affine hyperplane
as affine transformations
which can be seen directly from the matrix multiplication.
INPUT:
Something that defines an affine space. For example
EXAMPLES:
sage: F = AffineGroup(3, QQ); F
Affine Group of degree 3 over Rational Field
sage: F(matrix(QQ,[[1,2,3],[4,5,6],[7,8,0]]), vector(QQ,[10,11,12]))
[1 2 3] [10]
x |-> [4 5 6] x + [11]
[7 8 0] [12]
sage: F([[1,2,3],[4,5,6],[7,8,0]], [10,11,12])
[1 2 3] [10]
x |-> [4 5 6] x + [11]
[7 8 0] [12]
sage: F([1,2,3,4,5,6,7,8,0], [10,11,12])
[1 2 3] [10]
x |-> [4 5 6] x + [11]
[7 8 0] [12]
Instead of specifying the complete matrix/vector information, you can also create special group elements:
sage: F.linear([1,2,3,4,5,6,7,8,0])
[1 2 3] [0]
x |-> [4 5 6] x + [0]
[7 8 0] [0]
sage: F.translation([1,2,3])
[1 0 0] [1]
x |-> [0 1 0] x + [2]
[0 0 1] [3]
Some additional ways to create affine groups:
sage: A = AffineSpace(2, GF(4,'a')); A
Affine Space of dimension 2 over Finite Field in a of size 2^2
sage: G = AffineGroup(A); G
Affine Group of degree 2 over Finite Field in a of size 2^2
sage: G is AffineGroup(2,4) # shorthand
True
sage: V = ZZ^3; V
Ambient free module of rank 3 over the principal ideal domain Integer Ring
sage: AffineGroup(V)
Affine Group of degree 3 over Integer Ring
REFERENCES:
alias of AffineGroupElement
Return the dimension of the affine space.
OUTPUT:
An integer.
EXAMPLES:
sage: G = AffineGroup(6, GF(5))
sage: g = G.an_element()
sage: G.degree()
6
sage: G.degree() == g.A().nrows() == g.A().ncols() == g.b().degree()
True
Construct the general linear transformation by A.
INPUT:
OUTPUT:
The affine group element .
EXAMPLES:
sage: G = AffineGroup(3, GF(5))
sage: G.linear([1,2,3,4,5,6,7,8,0])
[1 2 3] [0]
x |-> [4 0 1] x + [0]
[2 3 0] [0]
Return the space of the affine transformations represented as linear transformations.
We can represent affine transformations as linear
transformations by
and lifting to
.
EXAMPLES:
sage: G = AffineGroup(3, GF(5))
sage: G.linear_space()
Full MatrixSpace of 4 by 4 dense matrices over Finite Field of size 5
Return the space of matrices representing the general linear transformations.
OUTPUT:
The parent of the matrices defining the affine group
element
.
EXAMPLES:
sage: G = AffineGroup(3, GF(5))
sage: G.matrix_space()
Full MatrixSpace of 3 by 3 dense matrices over Finite Field of size 5
Return a random element of this group.
EXAMPLES:
sage: G = AffineGroup(4, GF(3))
sage: G.random_element() # random
[2 0 1 2] [1]
[2 1 1 2] [2]
x |-> [1 0 2 2] x + [2]
[1 1 1 1] [2]
sage: G.random_element() in G
True
Construct the Householder reflection.
A Householder reflection (transformation) is the affine transformation
corresponding to an elementary reflection at the hyperplane
perpendicular to .
INPUT:
OUTPUT:
The affine group element that is just the Householder
transformation (a.k.a. Householder reflection, elementary
reflection) at the hyperplane perpendicular to .
EXAMPLES:
sage: G = AffineGroup(3, QQ)
sage: G.reflection([1,0,0])
[-1 0 0] [0]
x |-> [ 0 1 0] x + [0]
[ 0 0 1] [0]
sage: G.reflection([3,4,-5])
[ 16/25 -12/25 3/5] [0]
x |-> [-12/25 9/25 4/5] x + [0]
[ 3/5 4/5 0] [0]
Construct the translation by b.
INPUT:
OUTPUT:
The affine group element .
EXAMPLES:
sage: G = AffineGroup(3, GF(5))
sage: G.translation([1,4,8])
[1 0 0] [1]
x |-> [0 1 0] x + [4]
[0 0 1] [3]
Return the vector space of the underlying affine space.
EXAMPLES:
sage: G = AffineGroup(3, GF(5))
sage: G.vector_space()
Vector space of dimension 3 over Finite Field of size 5