How does a microwave tone turn into a rotation, and what is thrown away when it is drawn as one?
A qubit is never simulated alone and never undisturbed. The first topic here turns a qubit with a drive, the experiment every lab runs first. The second adds the environment, which gives the two clocks T1 and T2 and the equation (Lindblad’s) that QuTiP’s open-system solver is built on.
Set the strength of the drive (its Rabi frequency, in MHz) and look at the chance of finding the qubit in |1⟩ for every pulse length and every drive frequency. A horizontal slice is one experiment at one frequency; click the picture to choose it. The bright centre line is resonance. Notice that the farther off resonance you are, the faster the oscillation and the lower its peak.
The chevron assumes the “rotating-wave approximation”. This panel solves the same problem the hard way, in the lab frame with no approximation, and draws both on top of each other. Raise the drive strength relative to the qubit frequency and watch the exact curve (violet) start to wobble and drift away from the rotating-frame curve (teal).
Honest limits: the qubit here is a 1 GHz one so the exact run is cheap; what matters is the ratio of drive to qubit frequency, not the gigahertz. The numbers are checked against QuTiP’s own solver in the verifier behind this page.
To flip a qubit you shine a microwave tone on it, close to the frequency at which it turns. That tone is a field that wiggles back and forth along one axis, thousands of millions of times a second. The qubit is itself turning at the same rate about another axis. A wiggling field and a turning qubit sound like a mess, and in the lab frame, the frame of the person with the oscilloscope, it is one. The useful motion is a slow envelope hiding inside a fast oscillation.
Change frames and the mess goes away. Imagine standing on a turntable that rotates at the drive frequency. From there the qubit stops turning (if the drive is on resonance), and the field, which was a wiggle, splits into two pieces: one that stands still, and one that now spins at twice the drive frequency. The still piece is a constant field along one axis, and a constant field is exactly the situation of the last topic: the state turns about it at a steady rate. That rate is the Rabi frequency, set by how hard you drive. The piece that spins at twice the frequency averages to nothing over a single Rabi turn, so you drop it. Dropping it is the rotating-wave approximation (RWA).
Off resonance. If the tone is a little off the qubit’s frequency, the turntable and the qubit rotate at different speeds, so in the rotating frame the qubit keeps a slow turn of its own, the detuning. The state now turns about a tilted axis, a combination of the constant field and the detuning. The turn is faster, because the two rates add as the sides of a right triangle, but it never reaches the pole, because the axis is tilted. Scanning the drive frequency and the pulse length gives the chevron.
When it fails. The dropped piece is small only when the drive is gentle compared with the qubit’s own frequency. A Rabi frequency of 20 MHz on a 5 GHz qubit is a ratio of 0.4%, and the approximation is excellent. Push the drive to a tenth of the qubit frequency, as fast gates on low-frequency qubits do, and it costs a few per cent; push it to 0.3 of the qubit frequency and it is wrong by nearly a tenth, and the quantity you carefully calibrated, the length of a π pulse, comes out 3.6% short (1.607 ns where the rotating-frame formula says 1.667 ns). Fast gates are the main reason a lab cannot always use the picture.
The lab-frame Hamiltonian. A qubit of frequency ω0 with |0⟩ the lower state, driven by a tone of frequency ωd and Rabi amplitude Ω, has
H(t) = −(ω0/2) σz + Ω cos(ωdt) σx
(the minus sign puts |0⟩ below |1⟩, the QuTiP convention of topic 24). Go to the frame that turns with the drive, |ψ⟩ = eiωdtσz/2|ψ′⟩. The σz term loses its fast part, leaving −(Δ/2)σz with detuning Δ = ω0 − ωd, and σx becomes σx cos ωdt + σy sin ωdt. Multiplying by cos ωdt,
H′(t) = −(Δ/2) σz + (Ω/2) σx + (Ω/2)[cos(2ωdt) σx + sin(2ωdt) σy]
The last bracket spins at 2ωd. Dropping it is the RWA, and what remains is a constant Hamiltonian with the exact solution of topic 25, with effective Rabi frequency Ωeff = √(Ω² + Δ²):
P1(t) = (Ω² / Ωeff²) · sin²(Ωeff t / 2)
On resonance this is sin²(Ωt/2); off resonance the peak is Ω²/Ωeff² < 1 and the frequency is higher. With Ω/2π = 10 MHz and Δ/2π = 12 MHz, Ωeff/2π = 15.6 MHz and the qubit never gets more than 41% of the way to |1⟩. That is 41% peak transfer and a 15.6 MHz oscillation for a 10 MHz drive 12 MHz off resonance. The formula is I. I. Rabi’s (Phys. Rev. 51, 652, 1937).
The size of what was dropped. Solving the lab-frame equation exactly for a 1 GHz qubit over two Rabi periods and comparing with the RWA curve, the largest gap in P1 is 0.0048 for a drive at 0.02 of the qubit frequency, 0.0268 at 0.1 and 0.0931 at 0.3. The error is of order Ω/ω0: the spinning term is a fast kick of that relative size on top of the slow flip. A second effect, the Bloch–Siegert shift (Phys. Rev. 57, 522, 1940), moves the resonance itself by an amount of order Ω²/ω0; it is of order Ω²/ω0 and is negligible at a drive of 0.02, but at 0.3 the first full flip arrives 3.6% early.
Try it in Python. The lab frame is a time-dependent sesolve in QuTiP’s list format: a list of terms, each either a fixed operator or a pair [operator, function of time]. max_step tells the integrator to take steps small enough to follow the fast oscillation. Run on QuTiP 5.2.0, 25 October 2026:
import numpy as np
import qutip as qt
TAU = 2 * np.pi
w0 = TAU * 1.0 # a 1 GHz qubit (a slow one, so the lab-frame run is cheap)
for A in (0.02, 0.1, 0.3): # Rabi frequency as a fraction of the qubit frequency
Om = TAU * A
times = np.linspace(0, 2 / A, 2001) # two Rabi periods, in ns
# the lab frame: the qubit spins at w0 and the drive wiggles at w0
H_lab = [-0.5 * w0 * qt.sigmaz(), [Om * qt.sigmax(), lambda t: np.cos(w0 * t)]]
lab = qt.sesolve(H_lab, qt.basis(2, 0), times, e_ops=[qt.num(2)], options={"max_step": 0.01})
# the rotating frame with the fast terms dropped (the rotating-wave approximation)
rwa = qt.sesolve(0.5 * Om * qt.sigmax(), qt.basis(2, 0), times, e_ops=[qt.num(2)])
print(A, round(float(np.max(np.abs(lab.expect[0] - rwa.expect[0]))), 4))
0.02 0.0048
0.1 0.0268
0.3 0.0931
Both can be right, because they answer different questions. In the rotating frame the state is the lab-frame state turned by eiωdtσz/2, so populations and ⟨σz⟩ are the same in both frames, while ⟨σx⟩ and ⟨σy⟩ of the rotating frame are those of the lab frame turned through the angle ωdt. To compare them, compare populations, or transform the observable back before taking the average.
If the populations disagree by more than the table above (0.0048 at a drive of 0.02 of the qubit frequency, 0.0931 at 0.3), the drive is strong enough that the rotating-wave approximation itself has failed, and the lab-frame run is the one to trust. The explorer above shows the gap growing with the drive. The question is asked in QuTiP’s Discussions as Expectation values differ widely between RWA and lab frame.
Finding a qubit, calibrating a gate, and the limit on gate speed
The chevron is the standard first experiment on a new qubit: sweep the drive frequency and the pulse length, read off the resonance and the Rabi rate, and set the length of a π pulse (the circuits lesson has you doing this blind). Every pulse-level simulator, QuTiP’s sesolve and mesolve and Qiskit Dynamics among them, is built to run either frame, and the habit that matters is to know which one a Hamiltonian is written in. A published Rabi frequency, a detuning and a gate time are only meaningful together with the frame and the approximation they came from. The work on faster gates (shorter pulses, stronger drives) is exactly the regime where the rotating-wave picture gives way and a lab-frame or higher-order treatment is needed.
Check yourself
A qubit is driven at a Rabi frequency of 10 MHz, but 12 MHz away from its resonance. What does the chance of finding it excited do?
Off resonance the state turns about a tilted axis. The rate is √(Ω² + Δ²) = 15.6 MHz and the peak is Ω²/(Ω² + Δ²) = 41%, so it never reaches the pole.
The tempting wrong answers.