Finding matrix of similarity (conjugation) 
Let $A$ and $B$ be two similar matrix, that is there exists a matrix $T$ such that 
  $$TAT^{-1} = B$$
  How do you find $T$?

I tried to write a linear system of equation by putting $TA=BT$ with the entries of $T$ as unknowns, but this system has not a unique solution (by the way, $A$ and $B$ are $3 \times 3$ matrices...). I think I should add $\det T \neq 0$, since $T= \boldsymbol 0$ is also a solution of $TA=BT$, but that would make the computation too bad. Is there another way to do it, or am I missing something? Note that $B$ is not diagonal.
 A: If $A$ and $B$ are not diagonalizable, then use Jordan Canonical form:
If $A$ and $B$ are similar, then they admit same Jordan Canonical forms meaning that, you can find $P^{-1}$ and $Q^{-1}$ such that:
\begin{equation}
J = P^{-1}AP
\end{equation}
and
\begin{equation}
J = Q^{-1}BQ
\end{equation}
Following the same steps as the above answer, you have again $T = QP^{-1}$, where $Q$ and $P$ transform the matrices $A$ and $B$ to a Jordan Canonical form $J$.
A: IF $A$ and $B$ are similar then they admit same eigenvalues, so diagonalise them first you have:
\begin{equation}
\Sigma = P^{-1} A P
\end{equation}
and
\begin{equation}
\Sigma = Q^{-1} B Q
\end{equation}
Note that $P$ and $Q$ are done through eigendecomposition, now you have
\begin{equation}
P^{-1} A P = Q^{-1} B Q
\end{equation}
which gives
\begin{equation}
Q P^{-1} A  =  B Q P^{-1}
\end{equation}
where $T = QP^{-1}$
A: Depends on how you want to compute a solution? From a theoretical perspective any matrix can be Jordan normalized $T_1 A T_1^{-1}=D$ where $D$ consists of Jordan blocks and $T_1$ is invertible. When $A$ and $B$ are assumed similar then there is also $T_2$ so that $T_2 B T_2^{-1}=D$ (same $D$). From this you get your $T=T_2^{-1} T_1$. To compute e.g. $T_1$ you start by finding eigenvalues $\lambda_i$ of $A$ and compute kernels  $Z_k=\ker (A-\lambda_i)^k$, $k=1,2,3,...$ (if $Z_1\neq Z_2$ it means that there is a Jordan block)... You may in fact do that at the same time for $B$ and then construct $T$ as a map between these kernels.
Now, another way to compute (notably using a computer) the conjugation is to look at the linear map: 
$$ F : M_d({\Bbb C}) \rightarrow M_d({\Bbb C}),  \ \ \ T \mapsto  TA-BT $$
It is a linear map of a $d^2$ dimensional space and you compute its kernel. $A$ and $B$ are similar iff this kernel contains invertible elements.  In terms of indices you may write the map explicitly as:
$ (F(T))_{ij} = \sum_{kl} M_{ij,kl} T_{kl}$ where
$$ M_{ij,kl} = \delta_{ik} A_{lj} - B_{ik}\delta_{jl}$$
It's quite easy and amuzing to program (using e.g. matlab, scilab,...)
