Pauli Matrices as Unitary Gate Generators

ClearAll["Global`*"]

In section 2.2 of the text we introduced the three Pauli matrices

σX={{0,1},{1,0}};
σY={{0,-I},{I,0}};
σZ={{1,0},{0,-1}};

Which are typically expressed in the standard form

MatrixForm[σX]

MatrixForm[σY]

MatrixForm[σZ]

Let’s check if the commutation relations 2.25 are satisfied. Now

σX.σY-σY.σX

and

2 I σZ

So obviously the first of these relations is satisfied. In Mathematica there is another way of testing an identity through the use of the logical equal command.

?==

Thus

σX.σY-σY.σX==2 I σZ

Exercise: Explicitly evaluate the left and r.h.s. for the remaining expressions in (2.25) to prove the identities. Repeat using the Mathematica logical == command.

In (2.27) we gave an expression for a general 2×2 unitary matrix, and in the subsequent discussion illustrated how it can be expressed as a product of other unitary matrices (i.e  2.31, 2.32 ).  Below we show, using the Mathematica MatrixExp command

?MatrixExp

we can exponentiate a matrix without needing to evaluate an infinite series as in definition (2.28).  For example, consider the operator

(Subscript[U, X]) ≡ Exp[i α σX]

Ux=MatrixExp[I α σX]
MatrixForm[Ux]

Which is the same expression derived in (2.31) by series expansion methods. In the same way,

Uy=MatrixExp[I α σY]
MatrixForm[Uy]

Uz=MatrixExp[I α σZ]
MatrixForm[Uz]

So let’s now multiply, as in (2.33), the following three matrices

Uproduct=MatrixExp[I (ϕ+β)/2 σZ].MatrixExp[I θ σY].MatrixExp[ I(ϕ-β)/2 σZ]

Ugh, what a mess!. Luckily there are the Mathematica commands

??Simplify

??FullSimplify

usimplify=FullSimplify[Uproduct]
MatrixForm[%]

and which agrees with expression (2.33) in the text.

Unitarity Properties

We claimed that the operator (2.33) is a unitary operator, which implies that a product with it’s conjugate transpose (also called adjoint) should evaluate to an identity matrix. Let’s check if that is true. To obtain the conjugate transpose we use the Mathematica command

??ConjugateTranspose

ConjugateTranspose[usimplify]

When evaluating taking the conjugate of complex numbers Mathematica does not know which of the variables are real or complex. The command

??ComplexExpand

allows one to expand the above expression so that

udagger=FullSimplify[ComplexExpand[ConjugateTranspose[usimplify]]]
MatrixForm[udagger]

is indeed the conjugate transpose of our operator.  Now

udagger.usimplify
Simplify[%]
MatrixForm[%]

and so we unitarity is explicitly demonstrated.