# Find the order of a matrix group element?

Posted 8 months ago
2245 Views
|
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: https://en.wikipedia.org/wiki/Order_(group_theory). So, I want to find the order of a matrix group element. Any hints for doing this in Mathematica?Regards,HZ
7 Replies
Sort By:
Posted 8 months ago
 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 8 months ago
 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 8 months ago
 Hi Robert Nachbar,Thank you for your wonderful trick. It works like a charm.
Posted 8 months ago
 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 8 months ago
 Hi Daniel Lichtblau,What do you mean by saying LCM?
Posted 8 months ago
 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 8 months ago
 Thank you. Got it. In[1]:= LCM[10, 12] Out[1]= 60 
Community posts can be styled and formatted using the Markdown syntax.