# Hamiltonian representation of rotations for QuTiP Master Equation Solver

The unitary time evolution operator is given by

$$\hat{U}(t)=\exp[-\frac{it}{\hbar}\hat{H}]$$

Meanwhile, the rotation operator about some axis along the unit vector $$\vec{n}$$ for a spin-1/2 system having only the spin angular momentum is given by

$$\hat{R}_{\vec{n}} (\varphi)=\exp[-\frac{i \varphi}{\hbar}\vec{n} \cdot \hat{\vec{S}}] = \exp[-\frac{i \varphi}{2}\vec{n} \cdot \hat{\vec{\sigma}} ]$$

where $$\varphi$$ is the rotation angle and $$\sigma$$ is the Pauli spin matrices.

I would like to talk about the specific case about a rotation about the $$z$$-axis of the ground state $$|0\rangle = (1,0)$$ written in the $$S_z$$ representation. We have

$$\hat{R}_{\vec{z}/z}({\varphi}) = \exp[-\frac{i \varphi}{2}\sigma_{z}]$$

The thing is, I was trying to model this using the Master Equation Solver from QuTiP, representing the result using a Bloch sphere. I was trying to describe the rotation with the Hamiltonian. I found that I can compare $$\hat{R}_{\vec{z}/z}$$ to $$\hat{U}$$, then define

$$\hat{H}\equiv \frac{\hbar \omega}{2}\sigma_z$$ where $$\varphi\equiv\omega t$$, meaning that $$\omega$$ is the rotation angle per unit time.

However, plugging this Hamiltonian into the code does not yield me the result that I want. The state vector does not move at all from the $$|0\rangle$$ state.

I thought that the rotation angle must be too narrow, so I erased $$\hbar$$ from the Hamiltonian. This time the result is as I expected.

Is my derivation faulty? I myself think that this is a QuTiP problem, since it would be weird for the Hamiltonian to not have the dimension of energy. All in all, I am confused with the result I get.

## 1 Answer

If you are interested in the Bloch sphere only, then it is normal that you stay at the state $$|0\rangle$$ under the evolution of your Hamiltonian. It is an energy eigenstate so it only picks up a phase under time evolution. This is undetected by the Bloch vector representation, which is why it should not move.

In order to see an evolution of the Bloch vector, you need to start at a superposition of $$|0\rangle,|1\rangle$$ like $$\frac{1}{\sqrt 2}(|0\rangle+|1\rangle)$$ for example. in general you'll see a precession of the Bloch vector about the $$z$$ axis with angular velocity $$\omega$$. In particular, if the vector coincides with the axis of precession, then it cannot move.

However, it is a bit strange that you see a different evolution when you modify $$\hbar$$, this should only change the angular velocity, but not the trajectory. What kind of motion do you observe in this case?

Hope this helps.

• It turns out that the rotation I was making is about the x-axis. But your answer helps with my question. As to what happens with and without hbar: with hbar the vector appears to not move, while without hbar (i.e setting it to 1) the rotation happened as I wanted it. I specified omega to be pi/10 then set the time frame to 10 seconds, and I get the 180 degree rotation that i wanted @lpz
– Len
Mar 29, 2023 at 9:57
• I don't know the conventions used in QuTip, but I suspect that they are using $\hbar=1$. If you add an extra $\hbar$ in the Hamiltonian by hand, you are merely reducing $\omega$ by the factor $10^{-34}$. Unless you scale the time window appropriately, this freezes the dynamics compared to the case $\hbar = 1$, and could explain why you don't observe any rotation.
– LPZ
Mar 29, 2023 at 10:10