Express an arbitrary rotation matrix in GAP.

69 Views Asked by At

It is well known that the rotation matrix has the formula described here. I wonder how can I express these matrices in GAP with arbitrary rotating angles.

Edit:

  1. Dear Max Horn, thank you for your comments. But based on the description here:

enter image description here

I think your code snippet should be written as follows:

gap> n:=5;z:=E(n);a:=RealPart(z);b:=ImaginaryPart(z);
5
E(5)
1/2*E(5)+1/2*E(5)^4
1/2*E(20)-1/2*E(20)^9
gap> M:=[[a,-b],[b,a]];
[ [ 1/2*E(5)+1/2*E(5)^4, -1/2*E(20)+1/2*E(20)^9 ], [ 1/2*E(20)-1/2*E(20)^9, 1/2*E(5)+1/2*E(5)^4 ] ]
gap> Order(z);
5
gap> Order(M);
5
  1. As for the problem of "the added factor 4 in the order of the final matrix" represented by [[b,-a],[a,b]], I can only come up with the following interpretation: [[b,-a],[a,b]] is an 18-degree rotation, while [[a,-b],[b,a]] is a 72-degree rotation as shown by the following test:
gap> n:=5;;z:=E(n);;a:=RealPart(z);;b:=ImaginaryPart(z);;
gap> M1:=[[a,-b],[b,a]];;
gap> M2:=[[b,-a],[a,b]];;
gap> Order(z);
5
gap> Order(M1);
5
gap> Order(M2);
20
gap> M2^4=M1;
true

Regards, HZ

1

There are 1 best solutions below

8
On BEST ANSWER

It is unclear what you really want to know. Since your other questions are about group representations, I am assuming you want to know about rotations by "rational" angles. Then you can use primitive roots of unity to describe the matrix entries using Euler's formula.

Here's an example (I'll leave it as an exercise to deal with the added factor 4 in the order of the final matrix)

gap> RotMat := function(n)
>    local z, a, b;
>    z:=E(n);
>    a:=RealPart(z);
>    b:=ImaginaryPart(z);
>    return [[a,-b],[b,a]];
>  end;;
gap> M := RotMat(5);
gap> Order(M);
5
gap> Display(M);
[ [     1/2*E(5)+1/2*E(5)^4,  -1/2*E(20)+1/2*E(20)^9 ],
  [   1/2*E(20)-1/2*E(20)^9,     1/2*E(5)+1/2*E(5)^4 ] ]