Matrix Group Elements#
EXAMPLES:
sage: F = GF(3); MS = MatrixSpace(F, 2, 2) # optional - sage.rings.finite_rings
sage: gens = [MS([[1,0], [0,1]]), MS([[1,1], [0,1]])] # optional - sage.rings.finite_rings
sage: G = MatrixGroup(gens); G # optional - sage.rings.finite_rings
Matrix group over Finite Field of size 3 with 2 generators (
[1 0] [1 1]
[0 1], [0 1] )
sage: g = G([[1,1], [0,1]]) # optional - sage.rings.finite_rings
sage: h = G([[1,2], [0,1]]) # optional - sage.rings.finite_rings
sage: g*h # optional - sage.rings.finite_rings
[1 0]
[0 1]
You cannot add two matrices, since this is not a group operation. You can coerce matrices back to the matrix space and add them there:
sage: g + h # optional - sage.rings.finite_rings
Traceback (most recent call last):
...
TypeError: unsupported operand parent(s) for +:
'Matrix group over Finite Field of size 3 with 2 generators (
[1 0] [1 1]
[0 1], [0 1]
)' and
'Matrix group over Finite Field of size 3 with 2 generators (
[1 0] [1 1]
[0 1], [0 1]
)'
sage: g.matrix() + h.matrix() # optional - sage.rings.finite_rings
[2 0]
[0 2]
Similarly, you cannot multiply group elements by scalars but you can do it with the underlying matrices:
sage: 2*g # optional - sage.rings.finite_rings
Traceback (most recent call last):
...
TypeError: unsupported operand parent(s) for *: 'Integer Ring'
and 'Matrix group over Finite Field of size 3 with 2 generators (
[1 0] [1 1]
[0 1], [0 1] )'
AUTHORS:
David Joyner (2006-05): initial version David Joyner
David Joyner (2006-05): various modifications to address William Stein’s TODO’s.
William Stein (2006-12-09): many revisions.
Volker Braun (2013-1) port to new Parent, libGAP.
Travis Scrimshaw (2016-01): reworks class hierarchy in order to cythonize
- class sage.groups.matrix_gps.group_element.MatrixGroupElement_generic#
Bases:
MultiplicativeGroupElement
Element of a matrix group over a generic ring.
The group elements are implemented as Sage matrices.
INPUT:
M
– a matrixparent
– the parentcheck
– bool (default:True
); ifTrue
, then do some type checkingconvert
– bool (default:True
); ifTrue
, then convertM
to the right matrix space
EXAMPLES:
sage: W = CoxeterGroup(['A',3], base_ring=ZZ) # optional - sage.combinat sage: g = W.an_element(); g # optional - sage.combinat [ 0 0 -1] [ 1 0 -1] [ 0 1 -1]
- inverse()#
Return the inverse group element
OUTPUT: A matrix group element.
EXAMPLES:
sage: W = CoxeterGroup(['A',3], base_ring=ZZ) # optional - sage.combinat sage: g = W.an_element() # optional - sage.combinat sage: ~g # optional - sage.combinat [-1 1 0] [-1 0 1] [-1 0 0] sage: g * ~g == W.one() # optional - sage.combinat True sage: ~g * g == W.one() # optional - sage.combinat True sage: W = CoxeterGroup(['B',3]) # optional - sage.combinat sage.rings.number_field sage: W.base_ring() # optional - sage.combinat sage.rings.number_field Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095? sage: g = W.an_element() # optional - sage.combinat sage.rings.number_field sage: ~g # optional - sage.combinat sage.rings.number_field [-1 1 0] [-1 0 a] [-a 0 1]
- is_one()#
Return whether
self
is the identity of the group.EXAMPLES:
sage: W = CoxeterGroup(['A',3]) # optional - sage.combinat sage: g = W.gen(0) # optional - sage.combinat sage: g.is_one() # optional - sage.combinat False sage: W.an_element().is_one() # optional - sage.combinat False sage: W.one().is_one() # optional - sage.combinat True
- list()#
Return list representation of this matrix.
EXAMPLES:
sage: W = CoxeterGroup(['A',3], base_ring=ZZ) # optional - sage.combinat sage: g = W.gen(0) # optional - sage.combinat sage: g # optional - sage.combinat [-1 1 0] [ 0 1 0] [ 0 0 1] sage: g.list() # optional - sage.combinat [[-1, 1, 0], [0, 1, 0], [0, 0, 1]]
- matrix()#
Obtain the usual matrix (as an element of a matrix space) associated to this matrix group element.
One reason to compute the associated matrix is that matrices support a huge range of functionality.
EXAMPLES:
sage: W = CoxeterGroup(['A',3], base_ring=ZZ) # optional - sage.combinat sage: g = W.gen(0) # optional - sage.combinat sage: g.matrix() # optional - sage.combinat [-1 1 0] [ 0 1 0] [ 0 0 1] sage: parent(g.matrix()) # optional - sage.combinat Full MatrixSpace of 3 by 3 dense matrices over Integer Ring
Matrices have extra functionality that matrix group elements do not have:
sage: g.matrix().charpoly('t') # optional - sage.combinat t^3 - t^2 - t + 1
- sage.groups.matrix_gps.group_element.is_MatrixGroupElement(x)#
Test whether
x
is a matrix group elementINPUT:
x
– anything.
OUTPUT: Boolean.
EXAMPLES:
sage: from sage.groups.matrix_gps.group_element import is_MatrixGroupElement sage: is_MatrixGroupElement('helloooo') False sage: G = GL(2,3) # optional - sage.rings.finite_rings sage: is_MatrixGroupElement(G.an_element()) # optional - sage.rings.finite_rings True