# Stochastic Master equation

A stochastic master equation has the general form

\[\dot{\rho} = -\frac{i}{\hbar} \big[H,\rho\big] + \mathcal{L}[\rho] + \mathcal{H}[\rho]\]

where

\[\mathcal{L}[\rho]=\sum_i \left( J_i \rho J_i^\dagger - \frac{1}{2} J_i^\dagger J_i \rho - \frac{1}{2} \rho J_i^\dagger J_i \right)\]

and

\[\mathcal{H}[\rho] = \sum_n\left[ \left(C_n\rho + \rho C_n^\dagger\right) - \langle C_n + C_n^\dagger\rangle\rho\right]\xi_n(t)\]

Here, $J_i$ are the Lindblad damping operators, while $C_n$ are operators proportional to the white noise terms $\xi_n(t)$. The last term in $\mathcal{H}[\rho]$ (the expectation value) ensures trace conservation.

In order to describe a measurement, one has to set the operators $C_n$ proportional to collapse operators [1]. The superoperator $\mathcal{H}$ then describes the information gain due to a measurement. For example, to describe unit-efficiency homodyne detection in a single cavity mode, one has to set $C = \sqrt{\kappa}a e^{-i\theta}$, where $\kappa$ is the damping rate, $a$ the photon annihilation operator and $\theta$ is the phase difference between the signal field and the local oscillator.

Note, that (if desired) stochastic terms $H_n^s$ in the Hamiltonian can be included by setting $C_n = -i H_n^s$. If the operators $H_n^s$ are Hermitian, then the $\mathcal{H}[\rho]$ simply becomes a commutator and the expectation value vanishes (since the commutator preserves the trace).

The function that implements this equation is very similar to `timeevolution.master`

.

`stochastic.master(tspan, ρ0, H, J, C; dt=dt)`

The only additional argument here is `C`

, which is a vector containing the operators $C_n$ which constitute the superoperator defined in the stochastic master equation above.

For time-dependent problems, one can make use of the dynamic version. You simply need to define two functions for the deterministic and the stochastic part of the master equation, respectively.

```
function fdeterm(t, rho)
# Calculate time-dependent stuff
H, J, Jdagger
end
function fstoch(t, rho)
# Calculate time-dependent stuff
C, Cdagger
end
stochastic.master_dynamic(tspan, ρ0, fdeterm, fstoch; dt=dt)
```

Note, that `C`

and `Cdagger`

have to be vectors of equal length containing the operators $C_n$. Optionally, one can include rates in the function output, `fdeterm(t, rho) = H, J, Jdagger, rates`

for the deterministic part.

Like in the `stochastic.schroedinger_dynamic`

function, if you want to avoid initial calculation of the given functions in order to find the total number of noise processes, you can do so by passing the `noise_processes`

keyword argument. Note, that `noise_processes`

has to be equal to `length(C)`

.

## Functions

## Examples

## References

[1] Jacobs, K. and Steck, D. A. A straighforward introduction to continuous quantum measurements, Contemporary Physics, 47:5, 279-303, (2006). URL: https://arxiv.org/abs/quant-ph/0611067