states.werner¶
Werner states.
Werner states are mixtures of projectors onto the symmetric and permutation operator that exchanges the two subsystems.
Functions¶
Module Contents¶
- states.werner.werner(dim, alpha)¶
Produce a Werner state [1].
A Werner state is a state of the following form
\[\begin{equation} \rho_{\alpha} = \frac{1}{d^2 - d\alpha} \left(\mathbb{I} \otimes \mathbb{I} - \alpha S \right) \in \mathbb{C}^d \otimes \mathbb{C}^d. \end{equation}\]Yields a Werner state with parameter
alpha
acting on(dim * dim)
- dimensional space. More specifically, \(\rho\) is the density operator defined by \((\mathbb{I} - `alpha\) S)` (normalized to have trace 1), where \(\mathbb{I}\) is the density operator and \(S\) is the operator that swaps two copies ofdim
-dimensional space (see swap and swap_operator for example).If
alpha
is a vector with \(p!-1\) entries, for some integer \(p > 1\), then a multipartite Werner state is returned. This multipartite Werner state is the normalization of I - alpha(1)*P(2) - … - alpha(p!-1)*P(p!), where P(i) is the operator that permutes p subsystems according to the i-th permutation when they are written in lexicographical order (for example, the lexicographical ordering when p = 3 is: [1, 2, 3], [1, 3, 2], [2, 1,3], [2, 3, 1], [3, 1, 2], [3, 2, 1], so P(4) in this case equals permutation_operator(dim, [2, 3, 1]).Examples
Computing the qutrit Werner state with \(\alpha = 1/2\) can be done in
toqito
as>>> from toqito.states import werner >>> werner(3, 1 / 2) array([[ 0.06666667, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0.13333333, 0. , -0.06666667, 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0.13333333, 0. , 0. , 0. , -0.06666667, 0. , 0. ], [ 0. , -0.06666667, 0. , 0.13333333, 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.06666667, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , 0.13333333, 0. , -0.06666667, 0. ], [ 0. , 0. , -0.06666667, 0. , 0. , 0. , 0.13333333, 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , -0.06666667, 0. , 0.13333333, 0. ], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.06666667]])
We may also compute multipartite Werner states in
toqito
as well.>>> from toqito.states import werner >>> werner(2, [0.01, 0.02, 0.03, 0.04, 0.05]) array([[ 0.11286089, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0.12729659, -0.00787402, 0. , -0.00656168, 0. , 0. , 0. ], [ 0. , -0.00918635, 0.1312336 , 0. , -0.00918635, 0. , 0. , 0. ], [ 0. , 0. , 0. , 0.12860892, 0. , -0.01049869, -0.00524934, 0. ], [ 0. , -0.00524934, -0.01049869, 0. , 0.12860892, 0. , 0. , 0. ], [ 0. , 0. , 0. , -0.00918635, 0. , 0.1312336 , -0.00918635, 0. ], [ 0. , 0. , 0. , -0.00656168, 0. , -0.00787402, 0.12729659, 0. ], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.11286089]])
References
[1] (1,2)Reinhard F. Werner. Quantum states with einstein-podolsky-rosen correlations admitting a hidden-variable model. Phys. Rev. A, 40:4277–4281, Oct 1989. URL: https://link.aps.org/doi/10.1103/PhysRevA.40.4277, doi:10.1103/PhysRevA.40.4277.
- Raises:
ValueError – Alpha vector does not have the correct length.
- Parameters:
dim (int) – The dimension of the Werner state.
alpha (float | list[float]) – Parameter to specify Werner state.
- Returns:
A Werner state of dimension
dim
.- Return type:
numpy.ndarray