Quaternion Group

Author

Eric W. Weisstein
August 17, 2007

This notebook downloaded from http://mathworld.wolfram.com/notebooks/GroupTheory/QuaternionGroup.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/QuaternionGroup.html.

©2007 Wolfram Research, Inc. except for portions noted otherwise

Permutations

From http://www.openmath.org/cd/permgp2.ocd, which is however wrong

x=FromCycles[{{1,2,3,4},{5,8,6,7}}];
y=FromCycles[{{1,5,2,6},{3,7,4,8}}];

Here is the correct version:

x=FromCycles[{{1,2,6,3},{4,8,5,7}}];
y=FromCycles[{{1,4,6,5},{2,7,3,8}}];

Union[NestList[Permute[x,#]&,x,3],NestList[Permute[y,#]&,y,3],
{Permute[x,y]},{Permute[y,x]}]

Length[%]

(ℝ^2)

QuaternionU:={{1,0},{0,1}}
QuaternionI:=-{{I,0},{0,-I}}
QuaternionJ:={{0,1},{-1,0}}
QuaternionK:=-{{0,I},{I,0}}
q={QuaternionU,QuaternionI,QuaternionJ,QuaternionK};

GroupQ[g=Join[-q,q]]

rules=Join[
Thread[-q->{"-1","-i","-j","-k"}],
Thread[q->{"1","i","j","k"}]
];
nrules=Thread[Join[-q,q]->Range[8]];

Conjugacy Classes

ConjugacyClasses[g]/.rules

Subgroups

TraditionalForm/@ToExpression/@(Subgroups[g]/.rules)

Normal Subgroups

TraditionalForm/@ToExpression/@(Select[Subgroups[g],NormalSubgroupQ[#,g]&]/.rules)

(ℝ^4)

QuaternionI:={{0,1,0,0},{-1,0,0,0},{0,0,0,1},{0,0,-1,0}}
QuaternionJ:={{0,0,0,-1},{0,0,-1,0},{0,1,0,0},{1,0,0,0}}
QuaternionK:={{0,0,-1,0},{0,0,0,1},{1,0,0,0},{0,-1,0,0}}
QuaternionU:=IdentityMatrix[4]

q={QuaternionU,QuaternionI,QuaternionJ,QuaternionK};

GroupQ[g=Join[-q,q]]

rules=Join[
Thread[-q->{"-1","-i","-j","-k"}],
Thread[q->{"1","i","j","k"}]
];

TraditionalForm/@ToExpression/@(Subgroups[g]/.rules)

TraditionalForm/@ToExpression/@(Select[Subgroups[g],NormalSubgroupQ[#,g]&]/.rules)

Multiplication Table

GroupMultiplicationTable[g,rules]

GroupMultiplicationTable[g,rules][[1]]

GroupMultiplicationTable[g,rules][[1]]//ToExpression//TraditionalForm

GroupMultiplicationTable[g,nrules][[1]]//TableForm

Show[GraphicsArray[ListDensityPlot[Reverse@GroupMultiplicationTable[g,nrules][[1]],ColorFunction->#,Frame->False,Mesh->True,
PlotLabel->TraditionalForm[(Subscript[Q, 8])],
DisplayFunction->Identity]&/@{Hue,GrayLevel}]]

Powers

Table[MatrixPower[#,n]&/@g,{n,8}]/.rules//TableForm

Count[#,"1"]&/@(Table[MatrixPower[#,n]&/@g,{n,8}]/.rules)