9
$\begingroup$

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}$

  • 0
    In any event, QM is a long time ago for me; would you mind giving a "toy example" that shows what you want to happen?2010-12-02

2 Answers 2

5

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.

2

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