Quantum-Mechanical Rotations

Rotations of quantum-mechanical objects (state ket or state bra vectors, operators, density matrices, and polarization moment expansions) are accomplished via the rotation operator, the matrix elements of which are given by the Wigner D-functions. In the AtomicDensityMatrix package, these are provided by the WignerD function. (Note that as of Mathematica version 8.0, there is also a built-in WignerD function. The built-in version has slightly different syntax, given on its documentation page; if that syntax is used, the built-in function is called. The built-in function uses a different convention than the one described here, in which the Euler angles have the opposite sign.)
WignerD[{j,m1,m2},{alpha,beta,gamma}]Wigner D-function for angular-momentum quantum numbers j, m1, and m2 and Euler angles alpha, beta, and gamma
WignerD[j, {alpha, beta, gamma}]matrix for rotation of an atomic system with angular momentum j
WignerD[s1,{alpha,beta,gamma},s2]rotation matrix element between atomic states s1 and s2
WignerD[sys,{alpha,beta,gamma}]matrix for rotation of atomic system sys

Rotation matrix elements.

In order to perform rotations, the Wigner rotation matrices must be applied to different types of objects in different ways, described in the tutorial below. Alternatively, the WignerRotate function can be used, which rotates an arbitrary quantum-mechanical object.
WignerRotate[x,{alpha, beta, gamma}]rotate operator or irreducible tensor x using Wigner D-functions

Rotating any quantum-mechanical object.

The way in which WignerRotate operates is determined by the form of the object to be rotated, as well as by two additional options. The Sense option specifies whether an active or passive rotation is desired, i.e., whether the state (Active) or coordinate system (Passive) should be rotated. A passive rotation is the inverse of the active rotation by the same angles; in this tutorial we consider active rotations, which are the default. The option StandardOperator distinguishes between the density matrix and all other operators, which have the same form but different rotational properties, as described below. The default value StandardOperator->False is appropriate for rotations of density matrices, polarization-moment decompositions of density matrices, and irreducible tensors that rotate in the normal way, including ket and bra vectors.
option name
default value
SenseActivesense of the rotation
StandardOperatorFalsewhether an operator other than a density matrix is being rotated

Options for WignerRotate.

This loads the package.
In[1]:=
Click for copyable input

Rotation of state bras and kets

Kets

A state ket | can be expanded in the Zeeman basis |m as =mm=|mm, where m are the expansion coefficients, and we assume summation over repeated indices. The superscript index indicates that the m form a contravariant set of tensor components. In the AtomicDensityMatrix package, state kets are represented by a column vector of their coefficients.
Here is a state ket—a j=1/2 spin-up state. It is written as a column vector, indicating that it is contravariant.
In[1]:=
Click for copyable input
A rotation of | into a rotated ket R is accomplished by the rotation operator :
where the Dm'm, called the Wigner D-functions, are the matrix elements of in the Zeeman basis. Thus the expansion coefficients transform as (m')R=Dm'mm. This is the prototype for the rotation of contravariant tensors.
The rotation operator for a rotation by an angle about an axis is given by , where J is the angular-momentum operator. Rather than the axis-angle parameterization, however, arbitrary rotations are commonly expressed in terms of the Euler angles , , , as a rotation by about the z-axis, followed by a rotation by about the y-axis, followed by a rotation by about the z-axis: (, , )=e-i Jze-i Jye-i Jz.
WignerD gives the matrix elements of (, , ). Here is the rotation matrix for a j=1/2 system for a rotation by an angle /2 about the y-axis.
In[2]:=
Click for copyable input
Out[2]//MatrixForm=
Here is the rotation applied to the state, producing a state with spin along the x-axis. Operators operate on contravariant states (or irreducible tensors) from the left.
In[3]:=
Click for copyable input
Out[3]//MatrixForm=
WignerRotate can be used to accomplish this rotation in one step.
In[4]:=
Click for copyable input
Out[4]//MatrixForm=
We can check that the state has rotated correctly using the angular-momentum operator in the Cartesian basis.
In[5]:=
Click for copyable input
Out[5]=
Here are the expectation values of the components of the angular-momentum operator for the spin-z state.
In[6]:=
Click for copyable input
Out[6]=
And for the spin-x state.
In[7]:=
Click for copyable input
Out[7]=
To produce a spin-y state, we perform a rotation by -/2 about the x-axis, using the Euler angles =-/2, =-/2, =/2.
In[8]:=
Click for copyable input
Out[8]//MatrixForm=
The expectation vector now points in the y direction.
In[9]:=
Click for copyable input
Out[9]=

Bras

A state bra | is expanded as |=mm=mm|, where m are the covariant expansion coefficients. In the AtomicDensityMatrix package, state bras are represented by the row vector of their coefficients.
Here is the state bra corresponding to the spin-up ket given above.
In[10]:=
Click for copyable input
Out[10]//MatrixForm=
Taking the Hermitian conjugate of the expression R=|, we find how a bra transforms under rotation: . Thus the expansion coefficients of a state bra transform as . This is the prototype for the rotation of covariant tensors.
In the matrix notation used in the package, covariant quantities must be acted on from the right. Thus we use the form of the transformation in which the D-matrix is on the right:
In[11]:=
Click for copyable input
Out[11]//MatrixForm=
We can also use the form in which the D-matrix is on the right by writing an explicit sum over the components:
In[12]:=
Click for copyable input
Out[12]//MatrixForm=
WignerRotate can again be used to perform the rotation.
In[13]:=
Click for copyable input
Out[13]//MatrixForm=

Rotation of operators

Standard operators

Rotations can be thought of as applying to operators rather than states. Performing a rotation on the expectation value of an operator A, we have AR=|RA|R=|A |=|AR|. Thus the operator transforms as AR=A .
Here we rotate each of the Cartesian components of the angular-momentum operator.
In[14]:=
Click for copyable input
Out[14]=
The expectation value of the rotated operator with respect to the spin-z state is the same as expectation value of the unrotated operator with respect to the spin-x state.
In[15]:=
Click for copyable input
Out[15]=

The density matrix

Although the density matrix is an operator, its rotation transformation is the inverse of that for other operators. We can see this by noting that the expectation value of an operator A with respect to a density matrix is given by A=Tr A. Then the expectation value under a rotation is given by AR=Tr AR=Tr A=Tr A=Tr RA, so transforms as R=.
Here is the density matrix corresponding to the spin-up state defined above.
In[16]:=
Click for copyable input
Out[16]//MatrixForm=
The expectation value of the angular-momentum operator with respect to the density matrix.
In[17]:=
Click for copyable input
Out[17]=
Rotate the density matrix about the y-axis.
In[18]:=
Click for copyable input
Out[18]//MatrixForm=
The spin now points along x.
In[19]:=
Click for copyable input
Out[19]=
WignerRotate can also be used to rotate operators. However, since the density matrix transforms differently than other operators, the desired transformation must be specified with the option StandardOperator. This should be set to True if an operator other than the density matrix is being rotated, and False if the density matrix (or a state ket or bra) is being rotated. Because we will most commonly be manipulating the density matrix, the default value is StandardOperator->False.
Rotate the density matrix with WignerRotate.
In[20]:=
Click for copyable input
Out[20]//MatrixForm=
Rotate the angular-momentum operator using the option StandardOperator->True.
In[21]:=
Click for copyable input
Out[21]=

Rotation of irreducible tensor operators

An irreducible tensor operator of rank is a set of 2 +1 operators (covariant) or Aq (contravariant), q=-, ..., , that transform under rotations like the Zeeman components of a bra or ket. Thus we have and (Aq)R=Dqq'Aq'.
Because irreducible tensor operators also rotate like standard operators, as above, we have and Aq=Dqq'Aq'.
One example of an irreducible tensor operator is a vector operator written in the spherical basis.
WignerEckart supplies the covariant components of an irreducible tensor operator in the spherical basis. Here are the spherical basis components of the angular-momentum operator for a spin-1/2 system.
In[22]:=
Click for copyable input
Out[22]//MatrixForm=
Each component of the vector operator can be rotated according to the rule for a standard operator.
In[23]:=
Click for copyable input
Out[23]//MatrixForm=
The components also make up a rank-one irreducible tensor, which can be rotated according to the rule for covariant components, using the rotation matrix for a j=1 system. The same result is obtained.
In[24]:=
Click for copyable input
Out[24]//MatrixForm=
The expectation values of the spherical components of the rotated angular-momentum vector.
In[25]:=
Click for copyable input
Out[25]//MatrixForm=
Converting to the Cartesian basis, we see that we have obtained the same result as rotating the Cartesian components of the angular-momentum operator.
In[26]:=
Click for copyable input
Out[26]=
WignerRotate rotates the irreducible tensor operator as it would any irreducible tensor. Because the density matrix is not an irreducible tensor, there is no ambiguity in the transformation properties, and so the setting of StandardOperator is immaterial in this case.
In[27]:=
Click for copyable input
Out[27]//MatrixForm=
For the components of the angular-momentum operator in the Cartesian basis, Ji the relationship Aq=Dqq'Aq' given above becomes Ji=RikJk, where R is the rotation matrix for classical Cartesian vectors. We can use this to derive the classical rotation matrix. If |x1, |x2, |x3 are spinors pointing along the three Cartesian axes, then we have
The Wigner D-matrix for rotation of a spinor by an arbitrary set of Euler angles.
In[28]:=
Click for copyable input
Out[28]//MatrixForm=
Use this matrix to find the matrix for rotations of a classical vector.
In[29]:=
Click for copyable input
Out[29]//MatrixForm=
Find the same matrix using the built-in RotationMatrix function for rotations around z, y, and z.
In[30]:=
Click for copyable input
Out[30]//MatrixForm=

Rotation of polarization moments

The polarization operators , with =0, ..., 2j, make up a complete set of basis operators for a system with angular momentum j. Any operator can be expanded in terms of the polarization operators. For example, the density matrix is expanded as , where q are the polarization moments.
The four polarization operators for a spin-1/2 system: one rank-zero operator, and three rank-one operators.
In[31]:=
Click for copyable input
Out[31]=
In[32]:=
Click for copyable input
Out[32]=
The polarization moments for the spin-up density matrix given above.
In[33]:=
Click for copyable input
Out[33]=
The polarization moments form an irreducible tensor, and q transform as a contravariant set. To see this, we consider a rotation of the density matrix, and then expand over the polarization operators: , so that the polarization moments transform as (q')R=Dq'qq.
The polarization moments of each rank transform according to the rotation matrix for angular momentum j=. Here we perform a rotation about the y-axis.
In[34]:=
Click for copyable input
Out[34]=
Sum the expansion to regain the density matrix in the Zeeman basis.
In[35]:=
Click for copyable input
Out[35]//MatrixForm=
The spin points along x.
In[36]:=
Click for copyable input
Out[36]=
Perform the rotation using WignerRotate.
In[37]:=
Click for copyable input
Out[37]=
As we saw above, the transformation under rotation for the density matrix is the inverse of that for other operators. For an expansion of an operator other than the density matrix, we have . Thus the expansion coefficients of a standard operator transform as .
Perform the polarization-moment expansion for each spherical component of the angular-momentum operator.
In[38]:=
Click for copyable input
Out[38]//MatrixForm=
Rotate the polarization moments of each rank individually.
In[39]:=
Click for copyable input
Out[39]//MatrixForm=
Recompose the operator components. The rotated operator matches the one obtained above.
In[40]:=
Click for copyable input
Out[40]//MatrixForm=
In order to use WignerRotate to perform the rotation, the option StandardOperator must be set to True, to distinguish this rotation from that of the polarization moments of the density matrix.
In[41]:=
Click for copyable input
Out[41]//MatrixForm=

Rotating larger systems

Rotation matrices for systems consisting of more than one level can be constructed by giving the level specification as an argument to WignerD or WignerRotate.
Here is the specification for a system consisting of a j=1 state and a j=0 state.
In[42]:=
Click for copyable input
Out[42]=
Here is the matrix for a general rotation.
In[43]:=
Click for copyable input
Out[43]//MatrixForm=