# Symmetrize eigenvectors of degenerate (repeated) eigenvalue

I have the following situation: I have a hermitian Matrix $A$ that satisfies some symmetries which I can express via $AS = SA$ for a unitary matrix $S$. Now I am interested in the eigenvectors of $A$, but I want that these eigenvectors also respect my symmetries ( compare to Bloch waves in physics where the eigenvectors are chosen to reflect the translational invariance of the lattice ).

Since $A$ has degenerate (repeated) eigenvalues, the standard numerical techniques will return some arbitrary (yet orthonormal) eigenvectors spanning the eigenspace. I, however, want to obtain unique results and thus want to make use of the symmetries. How can I do this numerically? I know that commuting matrices can be diagonalized simultaneously - in theory. But I don't know how to do it practically. Would I have to diagonalize one of them, apply the unitary transform thus obtained to the other one, arriving at a block diagonal form where I then have to diagonalize each block separately? Or is there something more elegant I can do?

EDIT: The matrix is dense, but quite small (12x12 to 18x18).

The symmetry would be something like translation symmetry: $\begin{pmatrix} 0 & 0 & 0 & -1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix}$

where each entry is a 3x3-block in the case of a 12x12 matrix, which looks something like $\begin{pmatrix} a & b & 0 & -b\\ b&a&b&0\\ 0&b&a&b\\ -b&0&b&a\end{pmatrix}$

-
"degenerate" = repeated? Exactly what "symmetries" are the eigenvectors supposed to satisfy? – J. M. Nov 28 '10 at 16:56
Another thing: are your Hermitian matrices dense or sparse? Are they positive/negative (semi)definite? – J. M. Nov 28 '10 at 16:59
So your symmetric matrix has "cyclic tridiagonal" blocks? I still don't understand what special constraints your eigenvectors are supposed to satisfy. Of course, you won't have orthonormal eigenvectors anymore if you do things other than flipping signs. – J. M. Nov 28 '10 at 17:28
Thanks for your comments so far. No, the blocks aren't tridiagonal. But the matrix is "cyclic" (note the sign change, though). What I want: Eigenvectors of my matrix A are degenerate, so I want to classify them using the eigenvalues of the symmetry. Similar to what people do in quantum mechanics where additional symmetries lift degeneracies. – Lagerbaer Nov 28 '10 at 17:37
Actually, "cyclic tridiagonal" (a.k.a. "periodic tridiagonal") is a specialized term for matrices that are tridiagonal, plus two nonzero elements at the upper right and lower left corners. They arise often when discretizing PDEs with periodic boundary conditions. – J. M. Dec 2 '10 at 12:16

## 2 Answers

I think I solved it: If matrices $A$ and $S$ commute, i.e. $AS = SA$, then I eigenspaces of one matrix are invariant under the other matrix, because if $Ax = \lambda x$, then $A Sx = SAx = S\lambda x$, so if $x$ is eigenvector of $A$ with eigenvalue $\lambda$, then so is $S\lambda x$.

This in mind, I choose one of the matrices and diagonalize it, say I choose $S$. Then I get $S = T D T^\top$ with $T$ being unitary and $D$ being diagonal. If I then use $T$ to transform $A$, I get $A' = T A T^\top$ is block diagonal, because of the invariance mentioned earlier.

I can then diagonalize each block of $A$ on its own, because that way, the resulting eigenvectors of $A$ will remain eigenvectors of $S$. That way, I have simultaneously diagonalized $A$. The nice thing is that this can help make the resulting eigenvectors unique, because now eigenvectors are characterized not only by their $A$-matrix eigenvalue but also by their $S$-matrix eigenvalue.

If that doesn't suffice, I could search for more symmetries that all simultaneously commute with each other. An example from quantum mechanics is the hydrogen atom, where one find that the Hamiltonian commutes with the modulus of the angular momentum and its z-component, which ultimately gives rise to the three quantum numbers n, l and m.

-

The solution of Lagerbaer has been tested and i present the results obtained by sympy :

    (A)
[0  1  1]
[       ]
[1  0  1]
[       ]
[1  1  0]
(S)
[0  1  0]
[       ]
[0  0  1]
[       ]
[1  0  0]
eigenvals of A
[-1  0   0]
[         ]
[0   -1  0]
[         ]
[0   0   2]
eigenvects of A
[-0.707106781186548  -0.707106781186548  0.577350269189626]
[                                                         ]
[0.707106781186548           0           0.577350269189626]
[                                                         ]
[        0           0.707106781186548   0.577350269189626]
T.H.Tadjoint
[-1.0 + 7.46207733321766e-27*I  0.e-137 + 0.e-140*I   -0.e-134 + 0.e-138*I]
[                                                                         ]
[     0.e-137 + 0.e-140*I         -1.0 + 0.e-26*I     -0.e-134 + 0.e-138*I]
[                                                                         ]
[    -0.e-126 + 0.e-125*I       -0.e-126 + 0.e-125*I          2.0         ]
eigenvals after TATadj
[-1.0   0                 0              ]
[                                        ]
[ 0    2.0                0              ]
[                                        ]
[ 0     0   -1.0 + 7.46207733321766e-27*I]
eigenvects after TATadj
[ 0    0   1.0]
[             ]
[1.0   0    0 ]
[             ]
[ 0   1.0   0 ]


it seems that the method might work

-