Como un dos-por-dos de la matriz, aplicando el método de Jacobi , de hecho, da la respuesta a la vez!
Es conocido que, dado un dos-por-dos simétrica matriz $\mathbf A$, se puede construir una matriz ortogonal $\mathbf V=\bigl(\begin{smallmatrix}c&s\\\\-s&c\end{smallmatrix}\bigr)$ tal que $\mathbf V^\top \mathbf A\mathbf V$ es diagonal, donde los dos números de $c$ $s$ satisfacer $c^2+s^2=1$.
Si la diagonal de elementos distintos de cero (¿por qué?), computación $c$ $s$ se puede hacer así:
$$\begin{align*}
\tau&=\frac{a_{22}-a_{11}}{2a_{12}}\\
t&=\frac{\mathrm{sgn}(\tau)}{|\tau|+\sqrt{1+\tau^2}}\\
c&=\frac1{\sqrt{1+t^2}}\\
s&=ct
\end{align*}$$
a partir de la cual el eigendecomposition fácilmente de la siguiente manera.
(Ver Golub y Van Loan excelente libro para más detalles).
Aquí está una Mathematica demostración de Jacobi del método:
a = N[{{3, -1}, {-1, 2}}, 20];
tau = (a[[2, 2]] - a[[1, 1]])/a[[1, 2]]/2;
t = Sign[tau]/(Abs[tau] + Sqrt[1 + tau^2]);
{c, s} = {1, t}/Sqrt[1 + t^2]
{0.85065080835203993218, 0.5257311121191336060}
{l1, l2} = {a[[1, 1]] - t a[[1, 2]], a[[2, 2]] + t a[[1, 2]]}
{3.6180339887498948482, 1.3819660112501051518}
Eigenvalues[a] == {l1, l2}
True
Eigenvectors[a] == {{c, -s}, {s, c}}
True
a.{c, -s} == l1 {c, -s}
True
a.{s, c} == l2 {s, c}
True