Quantum Jump Simulation
This notebook guide specifies a reproducible quantum-jump simulation for a decaying two-level atom. The goal is to simulate individual conditional trajectories, average many trajectories to recover the Lindblad master equation, and verify the jump waiting-time distribution against an analytic result.
As of this review, no executable notebook under notebooks/density-open-systems/quantum-jump-simulation/ is promoted as a reproduced artifact. This page is the admission contract for that notebook: it states the model, algorithm, validation tests, convergence checks, and outputs required before numerical figures from the notebook should be cited.
Purpose
Section titled “Purpose”The notebook should demonstrate how to:
- simulate quantum-jump trajectories for a finite-dimensional open system;
- distinguish conditioned pure-state trajectories from the unconditional density matrix;
- average trajectories to recover a master-equation solution;
- generate and validate waiting-time histograms;
- check time-step and trajectory-number convergence;
- record random seeds and solver tolerances;
- diagnose normalization, positivity, and rate-convention mistakes.
The first version should stay deliberately small: a two-level atom with spontaneous emission is enough to expose the essential algorithm.
Directory Plan
Section titled “Directory Plan”Use a dedicated directory:
notebooks/density-open-systems/quantum-jump-simulation/ quantum-jump-simulation.ipynb README.mdThe opening notebook cell or README.md should state:
- Python and package versions;
- random number generator and seed;
- basis ordering;
- time unit and rate convention;
- whether rates are included in collapse operators;
- time step or adaptive waiting-time method;
- number of trajectories;
- binning rule for waiting-time histograms;
- acceptance tolerances for validation tests;
- date and commit identifier when the notebook is promoted.
Mathematical Model
Section titled “Mathematical Model”Use a two-level atom with
For the baseline benchmark, work in the interaction picture with no drive:
The unconditional master equation is
where
Starting from the excited state,
the analytic excited-state population is
This is the main validation curve.
Effective Non-Hermitian Evolution
Section titled “Effective Non-Hermitian Evolution”Between jumps, a pure state evolves under the effective Hamiltonian
For a short time step , the unnormalized no-jump state is
Its norm squared is the no-jump probability to first order in :
The jump probability is
If a jump occurs, update
If no jump occurs, normalize .
Baseline Algorithm
Section titled “Baseline Algorithm”The first implementation may use a fixed small time step. The pseudocode should be written in the notebook before helper functions obscure the logic:
set Gamma, dt, t_final, n_traj, seeddefine basis states, sigma_minus, Lfor each trajectory: psi starts in excited state for each time step: compute p_jump = dt * <psi|L_dagger L|psi> draw a uniform random number if the random number is below p_jump: apply jump and record jump time otherwise: apply no-jump evolution and normalize store excited-state population for this trajectoryaverage stored populations over trajectoriescompare average with exp(-Gamma t)The notebook may later add an exact waiting-time method, but the fixed-step method is easier to audit and is sufficient for the first reproducible version if convergence is checked.
Analytic Waiting-Time Distribution
Section titled “Analytic Waiting-Time Distribution”For an initially excited atom with no drive, the first jump time has survival probability
The waiting-time density is
The mean waiting time is
The notebook should collect first-jump times from many trajectories and compare a normalized histogram with . It should also compare the empirical mean with and report a sampling uncertainty.
Ensemble Average
Section titled “Ensemble Average”For each trajectory , form the pure-state density matrix
The Monte Carlo estimate of the unconditional state is
The validation target is the master-equation solution
or the analytic amplitude-damping solution for this two-level benchmark. A practical error metric is
The notebook should plot or tabulate the maximum error over the chosen time grid and show that the error decreases statistically as increases.
Convergence Checks
Section titled “Convergence Checks”The notebook must include at least three convergence checks.
Time-step convergence
Section titled “Time-step convergence”Run the same random seed structure or independent seeds for several time steps:
Gamma * dt = 1e-2Gamma * dt = 5e-3Gamma * dt = 2.5e-3Check:
- total jump probability per step remains small;
- averaged changes little as decreases;
- waiting-time histograms do not shift systematically;
- no trajectory produces a jump probability greater than one.
Trajectory-number convergence
Section titled “Trajectory-number convergence”Run several trajectory counts:
N = 100N = 1000N = 10000The error should decrease approximately like once time-step bias is small. The notebook should not claim high precision from a small number of trajectories.
Norm and trace checks
Section titled “Norm and trace checks”For every stored trajectory,
after normalization. For the ensemble average,
up to roundoff. These checks should be automated.
Validation Tests
Section titled “Validation Tests”A promoted notebook should pass the following tests:
| Test | Expected result |
|---|---|
| excited population | trajectory average agrees with within tolerance |
| first-jump histogram | agrees with within sampling error |
| mean first-jump time | agrees with within sampling error |
| ensemble trace | equals up to numerical tolerance |
| ensemble positivity | smallest eigenvalue is not significantly negative |
| no-jump norm | decreases monotonically before normalization for the decay benchmark |
| seed reproducibility | rerunning with the saved seed reproduces stored summary data |
The notebook should store numerical tolerances next to the tests rather than leaving them implicit.
Optional Driven Extension
Section titled “Optional Driven Extension”After the decay benchmark passes, add a driven two-level atom in a rotating frame:
The unconditional dynamics should be compared with a direct master-equation solver from Solving Lindblad Equations. This extension produces multiple jumps per trajectory and more interesting waiting-time statistics, but it should not replace the analytically solvable decay benchmark.
Common Mistakes
Section titled “Common Mistakes”- Forgetting whether is included in .
- Failing to normalize the no-jump state after each step.
- Using a time step large enough that jump probabilities are not small.
- Averaging state vectors instead of density matrices.
- Comparing a single trajectory with the master-equation solution.
- Treating the jump record as unique physics rather than an unraveling selected by photon counting.
- Ignoring detector efficiency while interpreting simulated jumps as observed clicks.
- Reporting a waiting-time histogram without binning and sampling uncertainty.
Exercises
Section titled “Exercises”No-Jump Survival
Section titled “No-Jump Survival”For the decay model with and , show that an initially excited no-jump state has norm squared before normalization.
Solution
The effective Hamiltonian is
Acting on ,
Therefore the unnormalized no-jump state is
Its norm squared is
Waiting-Time Density
Section titled “Waiting-Time Density”Derive the waiting-time density from the survival probability.
Solution
The survival probability is the probability that no jump has occurred up to time :
The probability density for the first jump is the rate at which survival probability is lost:
Ensemble Average
Section titled “Ensemble Average”Why must the notebook average rather than ?
Solution
The unconditional state is a density operator:
State vectors have arbitrary phases and represent conditioned pure states. Averaging the vectors themselves is not a physical density matrix and can give meaningless cancellations. Averaging projectors gives the ensemble state.
Sampling Error
Section titled “Sampling Error”If the trajectory estimate of an observable has standard deviation over trajectories, how should its standard error scale with ?
Solution
For independent trajectories, the standard error of the sample mean is
Thus increasing the number of trajectories by a factor of reduces Monte Carlo sampling error by a factor of about , once time-step bias is negligible.
Cross-Links
Section titled “Cross-Links”- Noise Simulation
- Quantum Jump Trajectories
- Stochastic Master Equations
- Diffusive Trajectories
- Quantum Optical Master Equation
- Amplitude Damping Master Equation
- Solving Lindblad Equations
- Quantum Optics
- Formula Sheet
- Approximation Checklist
References
Section titled “References”- J. Dalibard, Y. Castin, and K. Molmer, “Wave-function approach to dissipative processes in quantum optics,” Physical Review Letters 68, 580-583 (1992).
- K. Molmer, Y. Castin, and J. Dalibard, “Monte Carlo wave-function method in quantum optics,” Journal of the Optical Society of America B 10, 524-538 (1993).
- H. J. Carmichael, An Open Systems Approach to Quantum Optics, Springer (1993).
- M. B. Plenio and P. L. Knight, “The quantum-jump approach to dissipative dynamics in quantum optics,” Reviews of Modern Physics 70, 101-144 (1998).
- H. M. Wiseman and G. J. Milburn, Quantum Measurement and Control, Cambridge University Press (2010).
- H.-P. Breuer and F. Petruccione, The Theory of Open Quantum Systems, Oxford University Press (2002).