Site Tools


qutip-pulses

Pulse Shaping

Pulse shaping designs smooth time-dependent control fields to minimize errors and off-resonant effects. Common pulse shapes: Gaussian, STIRAP, DRAG.

DRAG Pulses

DRAG (Derivative Removal by Adiabatic Gate) reduces leakage errors in two-qubit gates:

$$u(t) = \Omega(t) + i \beta \frac{d\Omega}{dt} \sigma_x$$

where $\Omega(t)$ is the pulse envelope and $\beta$ is a calibrated parameter.

from qutip import *
import numpy as np
 
# DRAG pulse for qubit control
def drag_pulse(t, tlist, Omega0, beta):
    # Gaussian envelope
    sigma = (tlist[-1] - tlist[0]) / 4
    t_center = (tlist[-1] + tlist[0]) / 2
    envelope = Omega0 * np.exp(-(t - t_center)**2 / (2 * sigma**2))
 
    # Derivative for DRAG correction
    d_envelope = -Omega0 * (t - t_center) / sigma**2 * np.exp(-(t - t_center)**2 / (2 * sigma**2))
 
    return envelope + 1j * beta * d_envelope
 
times = np.linspace(0, 10, 100)
H_ctrl = [sigmax(), lambda t, args: drag_pulse(t, times, 0.1, 0.05)]

Common Shapes

  • Gaussian: smooth envelope, minimal sideband excitation
  • STIRAP: adiabatic population transfer
  • Square: minimal duration but high bandwidth
  • Ramp: linear interpolation, smooth edges

Pulse shaping compensates for hardware non-idealities and reduces errors. Proper pulse design is critical for high-fidelity operations.

qutip-pulses.md · Last modified: by 127.0.0.1