CITE THIS NOTEBOOK: Obtaining a unitary representation for a given group by Hans Dolhaine. Wolfram Community DEC 6 2022.
Assume you have a set of matrices which are a representation for a given group. It may occur that this representation has to be unitary.
In this notebook the necessary calculations to transform a given to a unitary representation are shown. The underlying math is described here
https://www.mathe2.uni-bayreuth.de/match/online/dolhaine.pdf
on pages 45 to 47.
In this notebook the necessary calculations to transform a given to a unitary representation are shown. The underlying math is described here
https://www.mathe2.uni-bayreuth.de/match/online/dolhaine.pdf
on pages 45 to 47.
If you have a set of matrices,for example these
gT=
,
,
,
;
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
0 | I | 0 | 0 |
-I | 0 | -1-I | 0 |
0 | 1-I | 0 | I |
1-I | 0 | -I | 0 |
1 | 0 | 1-I | 0 |
0 | -1 | 0 | 1-I |
0 | 0 | -1 | 0 |
0 | 0 | 0 | 1 |
0 | -I | 0 | 1+I |
-I | 0 | 0 | 0 |
0 | -1+I | 0 | -I |
1-I | 0 | -I | 0 |
lg=Length[gT]
4
which form a representation of a group : that means, the Identity - matrix is contained in the set as well as any product of two matrices
multab=Table[Position[gT,gT[[i]].gT[[j]]][[1,1]],{i,1,lg},{j,1,lg}];MatrixForm[multab]
1 | 2 | 3 | 4 |
2 | 3 | 4 | 1 |
3 | 4 | 1 | 2 |
4 | 1 | 2 | 3 |
But the matrices of this representations are not unitary :
MatrixForm/@(ConjugateTranspose[#].#&/@gT)
,
,
,
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
3 | 0 | 2-2 | 0 |
0 | 3 | 0 | -1+ |
2+2 | 0 | 3 | 0 |
0 | -1- | 0 | 1 |
1 | 0 | 1- | 0 |
0 | 1 | 0 | -1+ |
1+ | 0 | 3 | 0 |
0 | -1- | 0 | 3 |
3 | 0 | 1- | 0 |
0 | 3 | 0 | -2+2 |
1+ | 0 | 1 | 0 |
0 | -2-2 | 0 | 3 |
To construct from the given representation a unitary representation form matrix mH
mH=Sum[ConjugateTranspose[gT[[i]]].gT[[i]],{i,1,lg}];mH//MatrixForm
8 | 0 | 4-4 | 0 |
0 | 8 | 0 | -4+4 |
4+4 | 0 | 8 | 0 |
0 | -4-4 | 0 | 8 |
From this stage on I proceed with umerical data as general expressions could become rather lengthy
Eigenvalues[N[mH]]//Chop
{13.6569,13.6569,2.34315,2.34315}
Calculate the Eigenvectors of mH and orthogonalize them and take into account, that the Eigenvectors given here are a list and not a matrix. This list has to be transposed
mX=Eigenvectors[N[mH]];mX1=Transpose[Orthogonalize[mX]]//Chop
{{0.0919562-0.202304,0.474667-0.474667,0.707107,0},{-0.474667+0.474667,0.202304-0.0919562,0,0.707107},{0.208073-0.0780274,0.67128,-0.5-0.5,0},{0.67128,-0.208073-0.0780274,0,0.5+0.5}}
mX1 is unitary
ConjugateTranspose[mX1].mX1//Chop//MatrixForm
1. | 0 | 0 | 0 |
0 | 1. | 0 | 0 |
0 | 0 | 1. | 0 |
0 | 0 | 0 | 1. |
and mX1 diagonalizes matrix mH
mD=Chop[ConjugateTranspose[mX1].mH.mX1];mD//MatrixForm
13.6569 | 0 | 0 | 0 |
0 | 13.6569 | 0 | 0 |
0 | 0 | 2.34315 | 0 |
0 | 0 | 0 | 2.34315 |
Calculate Sqrt[mD] and Sqrt[mD^(-1)]
mD2=Map[If[#0,0,Sqrt[#]]&,mD,{2}]mD2m=Map[If[#0,0,1/Sqrt[#]]&,mD,{2}]
{{3.69552,0,0,0},{0,3.69552,0,0},{0,0,1.53073,0},{0,0,0,1.53073}}
{{0.270598,0,0,0},{0,0.270598,0,0},{0,0,0.653281,0},{0,0,0,0.653281}}
and get the new representation gTu
gTu=mD2.ConjugateTranspose[mX1].#.mX1.mD2m&/@gT;ColumnForm[MatrixForm/@Chop[gTu]]
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
|
This representation is unitary, as wanted:
MatrixForm/@Chop[ConjugateTranspose[#].#&/@gTu]
,
,
,
1. | 0 | 0 | 0 |
0 | 1. | 0 | 0 |
0 | 0 | 1. | 0 |
0 | 0 | 0 | 1. |
1. | 0 | 0 | 0 |
0 | 1. | 0 | 0 |
0 | 0 | 1. | 0 |
0 | 0 | 0 | 1. |
1. | 0 | 0 | 0 |
0 | 1. | 0 | 0 |
0 | 0 | 1. | 0 |
0 | 0 | 0 | 1. |
1. | 0 | 0 | 0 |
0 | 1. | 0 | 0 |
0 | 0 | 1. | 0 |
0 | 0 | 0 | 1. |
Position does not work properly on this type of matrices
Position[gTu,gTu[[1]].gTu[[2]]]
{}
so get a specialized one
mypos[i_,j_]:=Position[DeleteDuplicates[Flatten[Chop[gTu[[i]].gTu[[j]]-#]]]&/@gTu,{0}][[1,1]]
Table[mypos[i,j],{i,1,lg},{j,1,lg}]//MatrixFormmultab//MatrixForm
1 | 2 | 3 | 4 |
2 | 3 | 4 | 1 |
3 | 4 | 1 | 2 |
4 | 1 | 2 | 3 |
1 | 2 | 3 | 4 |
2 | 3 | 4 | 1 |
3 | 4 | 1 | 2 |
4 | 1 | 2 | 3 |
Knowing the history of gT I define a similarity transformation
tM=
;
0 | -1 | 0 | 1 |
1 | 0 | 1 | 0 |
0 | 1 | 0 | I |
1 | 0 | -I | 0 |
and get a representation which is unitary as well (even orthogonal) and gives the same multab
gTnew2=tM.#.Inverse[tM]&/@gT;MatrixForm/@gTnew2MatrixForm/@(ConjugateTranspose[#].#&/@gTnew2)Table[Position[gT,gT[[i]].gT[[j]]][[1,1]],{i,1,lg},{j,1,lg}]//MatrixForm
,
,
,
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
,
,
,
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 2 | 3 | 4 |
2 | 3 | 4 | 1 |
3 | 4 | 1 | 2 |
4 | 1 | 2 | 3 |