# Finding a unitary matrix in Mathematica

I have the following equation : $\tilde{B} = U B U^{\dagger}$

I also know both $B$ and $\tilde{B}$ , I just want to find the matrix U, that gives me the transformation. I tried using LinearSolve, but I can't get it into the form required by that function. Is there another way to do that?

I must note that the condition that U be Unitary is ESSENTIAL. I make this remark because of the interesting solutions proposed below, none of which, however, gives a unitary matrix U.

Edit: If it is of any help, the two matrices B and $\tilde B$ are two quantum density matrices.

Edit2: I also added the two matrices here: http://pastebin.com/s3B1T0HD

• If $\mathbf B$ is normal and similar to $\tilde{\mathbf B}$, then it's actually quite easy... Nov 3, 2015 at 11:17
• How big are these matrices? Nov 4, 2015 at 12:12
• smallest is 16x16. the largest case I want to test is 64x64. Nov 4, 2015 at 12:14
• Okay, let me give you something to try on your smallest case: apply Chop[SchurDecomposition[mat, RealBlockDiagonalForm -> False]] to both of your matrices, and check if the triangular (diagonal?) matrices produced are the same (up to roundoff and permutation). We can proceed after you do this. Nov 4, 2015 at 12:19
• This gives me a matrix of vectors, every element is a column vector. The two matrices are also very different (no 2 elements are equal). Nov 4, 2015 at 12:23

For normal matrices:

Find the unitary matrices $P$ and $S$ that diagonalize $\tilde{B}$ and $B$.

$D=P^{-1}\tilde{B}P\\ D'=S^{-1}BS\\ \tilde{B}=PS^{-1}BSP^{-1}\\ => U=PS^{-1}$

B1 = {{2, 1}, {-1, -1}};
B2 = {{-2, 5}, {-1, 3}};

P = Transpose@Eigenvectors@B1;
S = Transpose@Eigenvectors@B2;
U = P.Inverse@S;

B1 == Simplify[U.B2.Inverse@U]


True

• Alternatively, one could use SchurDecomposition[] to generate the required unitary matrices. Though, this solution assumes $\mathbf B$ and $\tilde{\mathbf B}$ are similar, of course. Nov 3, 2015 at 11:28
• @paw: The procedure is not valid in general because B and B~ might be such that they cannot be diagonalized. Example $B$ = {{0,1},{0,0}}, $\tilde{B}$ = {{0,0},{-1,0}} and U = {{0,1},{-1,0}} Nov 4, 2015 at 6:30
• @paw: the OP asks for a unitary matrix U. Your U is not unitary. Also in the final comparision you should use $U^{\dagger}$ rather than $U^{-1}$, i.e. you missed a transposition. Hence I would reject your answer. Nov 4, 2015 at 6:45
• @ J.M. Despite of my comments I see another upvoting and the acceptance of the answer, without further discussion. Can somebody please explain this to me? Nov 4, 2015 at 8:36
• Now I have tried the above, it does NOT give me a unitary matrix U. Does anyone have any other suggestion? I have to say that IT IS ESSENTIAL THAT U BE A UNITARY MATRIX. Nov 4, 2015 at 10:57

The eigenvectors space of a normal matrix are orthogonal. So in this case you can use Orthogonalize to get a set of orthogonal eigenvectors.

H = {{1, 1 + I}, {1 - I, 1}};
{Lambda, SA} = Eigensystem[H]
UA = Orthogonalize[SA]
UAT = Transpose[UA];
DiagonalMatrix[Lambda] == ConjugateTranspose[UAT].H.UAT