spheres.symplectic.complex_real_symplectic¶
-
spheres.symplectic.
complex_real_symplectic
(S, s)[source]¶ Converts a complex symplectic transformation into a real symplectic transformation.
We can use a complex symplectic matrix to perform a Gaussian unitary transformation on a vector of creation and annihilation operators. At the same time, there is an equivalent real symplectic matrix \(\textbf{R}\) and real displacement vector \(\textbf{r}\) that implements the same transformation on a vector of position and momentum operators.
\[\vec{V} \rightarrow \textbf{R}\vec{V} + \textbf{r}\]We can easily convert between \(\xi\), the vector of annihilation and creation operators, and \(\vec{V}\), the vector of positions and momenta, via:
\[\vec{V} = L\xi\]Where \(L = \frac{1}{\sqrt{2}}\begin{pmatrix} I_{n} & I_{n} \\ -iI_{n} & iI_{n} \end{pmatrix}\).
This comes from the definition of position and momentum operators in terms of creation and annihilation operators, e.g.:
\[ \begin{align}\begin{aligned}\hat{Q} = \frac{1}{\sqrt{2}}(\hat{a} + \hat{a}^{\dagger})\\\hat{P} = -\frac{i}{\sqrt{2}}(\hat{a} - \hat{a}^{\dagger})\end{aligned}\end{align} \]Therefore we can turn our complex symplectic transformation into a real symplectic transformation via:
\[ \begin{align}\begin{aligned}\textbf{R} = L\textbf{S}L^{\dagger}\\\textbf{r} = L\textbf{s}\end{aligned}\end{align} \]If we’ve represented a Gaussian state in terms of its first and second moments, then the real sympectic transformations act on them!
- Parameters
S (np.array) – Complex symplectic matrix.
s (np.array) – Complex symplectic displacement vector.
- Returns
R (np.array) – Real symplectic matrix.
r (np.array) – Real symplectic displacement vector.