Consider the linear operator T on R^3 with standard matrix

A={{5,0,-2},{8,7,-12},{6,4,-7}};
MatrixForm[A]

I compute the characteristic polynomial of A as follows: starting with a random vector v, I let v_k = T^k v.  If all goes well, {v0,v1,v2} will be a basis for R3.  I then find the matrix for T relative to this basis, and a homework problem from the determinants chapter will allow me to read off the characteristic polynomial from the last column of the matrix.

v0 = {1,-2,5}
v1 = A.v0
v2 = A.v1
Basis = Transpose[{v0,v1,v2}];
MatrixForm[Basis]
sisaB = Inverse[Basis]

Note that since the inverse of the basis matrix exists (not pretty, I grant you) the vectors v0,v1,v2 really do give a basis for R^3.  The matrix for my operator relative to the new basis by using the change of basis formula:

MatrixForm[sisaB.A.Basis]

Alternatively (and more easily) one obtains this matrix by observing that T(v0) = v1 and T(v1) = v2 so that the first and second columns are the second and third standard basis vectors; and the third column is obtained by expressing  T(v2)  = -c0 v0 - -c1 v1 - c2 v2 as a linear combination of v0, v1, v2.  The coefficients -c0, -c1, -c2 are the entries in the third column of the matrix, and our old hwk problem shows us that the characteristic polynomial of T is p(t) = t^3 + c2 t^2 + c1 t + c0 (which explains why I put the minus signs in front of the coefficients above.  That is, I solve

Solve[Basis.{-c0,-c1,-c2} == A.v2,{c0,c1,c2}]

and infer that the characteristic polynomial of T is

p[t_] = t^3 - 5 t^2 +11 t - 15

One can find one root of this polynomial by inspection and then use the quadratic formula to get the other two.  Alternatively, one can lay the burden entirely on Mathematica:

Solve[p[t]==0]

Then I can find eigenvectors

Solve[A.{x1,x2,1}==3.{x1,x2,1},{x1,x2}]
Solve[A.{x1,x2,1}==(1+2 I){x1,x2,1},{x1,x2}]

So the first eigenvector is (1, 1, 1) and the real and imaginary parts of (5 times) the second eigenvector are (2,7,5) and (1,1,0).  Using these as a basis for R3, I compute a new matrix for T:

Bas2 = Transpose[{{1,1,1},{2,7,5},{1,1,0}}];
MatrixForm[Bas2]

ABas2 = Inverse[Bas2].A.Bas2;
MatrixForm[ABas2]

which is as close as I can come to diagonalizing A  using only *real* basis vectors