Affine Groups¶
AUTHORS:
- Volker Braun: initial version
-
class
sage.groups.affine_gps.affine_group.
AffineGroup
(degree, ring)¶ 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
- An affine space itself:
A
– affine space
- A vector space:
V
– a vector space
- Degree and base ring:
degree
– An integer. The degree of the affine group, that is, the dimension of the affine space the group is acting on.ring
– A ring or an integer. The base ring of the affine space. If an integer is given, it must be a prime power and the corresponding finite field is constructed.var
– (Defalut:'a'
) Keyword argument to specify the finite field generator name in the case wherering
is a prime power.
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:
-
Element
¶ alias of
AffineGroupElement
-
degree
()¶ 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
-
linear
(A)¶ Construct the general linear transformation by
A
.INPUT:
A
– anything that determines a matrix
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]
-
linear_space
()¶ 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
-
matrix_space
()¶ 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
-
random_element
()¶ 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
-
reflection
(v)¶ Construct the Householder reflection.
A Householder reflection (transformation) is the affine transformation corresponding to an elementary reflection at the hyperplane perpendicular to
.
INPUT:
v
– a vector, or something that determines a vector.
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]
-
translation
(b)¶ Construct the translation by
b
.INPUT:
b
– anything that determines a vector
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]
-
vector_space
()¶ 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
- An affine space itself: