Message Boards Message Boards


Find the order of a matrix group element?

Posted 8 months ago
7 Replies
2 Total Likes

For a matrix group, the order of an element a of a group, is the smallest positive integer m such that a^m = e, where e denotes the identity element of the group, and a^m denotes the product of m copies of a. If no such m exists, the order of a is infinite, as described here:

So, I want to find the order of a matrix group element. Any hints for doing this in Mathematica?


POSTED BY: Hongyi Zhao
7 Replies

I am not sure exactly what you are asking, but perhaps this might give you an idea for a direction.

Here is the finite list generated by repeated multiplications by I:

FixedPoint[Union[Join[#, I #]] &, {1}, 1000]

So the order is:

Length[  FixedPoint[Union[Join[#, I #]] &, {1}, 1000]]

For multiplications by Exp[Pi I/12]:

FixedPoint[Union[Join[#, Exp[Pi I/12] #]] &, {1}, 10000]
POSTED BY: W. Craig Carter

Without loss of generality, we can work with 2-dimensional matrices.

The Abelian group of order 3 has these elements:

In[429]:= A3 = {IdentityMatrix[2], RotationMatrix[2 \[Pi]/3], 
  RotationMatrix[4 \[Pi]/3]}

Out[429]= {{{1, 0}, {0, 1}}, {{-(1/2), -(Sqrt[3]/2)}, {Sqrt[3]/
   2, -(1/2)}}, {{-(1/2), Sqrt[3]/2}, {-(Sqrt[3]/2), -(1/2)}}}

We can define a function to compute the order of a group element by iterating over matrix multiplication:

In[430]:= groupElementOrder[m_?MatrixQ] := 
 Module[{n = 1, e = IdentityMatrix[Length[m]]}, 
  NestWhile[(n++; Dot[#, m]) &, m, # != e &]; n]

NestWhile does the iteration, and terminates when the matrix product equals the identity matrix. Now, we can test it on the group A3:

In[431]:= groupElementOrder /@ A3

Out[431]= {1, 3, 3}
POSTED BY: Robert Nachbar
Posted 8 months ago

Hi Robert Nachbar,

Thank you for your wonderful trick. It works like a charm.

POSTED BY: Hongyi Zhao

The determinant will have to be an nth root of unity. So I'd try powering to multiples of n. Of course this might just be 1, in which case it provides no shortcut. Working with the eigenvalues might be faster than brute-force powering, I'm not sure. By this I mean deducing the orbit length as LCM of the roots of unity of the diagonalized form (with some abuse of notation in that remark).

POSTED BY: Daniel Lichtblau
Posted 8 months ago

Hi Daniel Lichtblau,

What do you mean by saying LCM?

POSTED BY: Hongyi Zhao

LCM=Least Cmmon Multiple. In this setting, if you have a tenth root and a twelfth root, take the LCM of 10 and 12.

POSTED BY: Daniel Lichtblau
Posted 8 months ago

Thank you. Got it.

In[1]:= LCM[10, 12]

Out[1]= 60
POSTED BY: Hongyi Zhao
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract