toqito.states.werner

toqito.states.werner(dim, alpha)[source]

Produce a Werner state [Wer89].

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 of dim-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)
[[ 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])
[[ 0.12179487,  0.        ,  0.        ,  0.        ,  0.        ,
   0.        ,  0.        ,  0.        ],
 [ 0.        ,  0.12820513,  0.        ,  0.        , -0.00641026,
   0.        ,  0.        ,  0.        ],
 [ 0.        ,  0.        ,  0.12179487,  0.        ,  0.        ,
   0.        ,  0.        ,  0.        ],
 [ 0.        ,  0.        ,  0.        ,  0.12820513,  0.        ,
   0.        , -0.00641026,  0.        ],
 [ 0.        , -0.00641026,  0.        ,  0.        ,  0.12820513,
   0.        ,  0.        ,  0.        ],
 [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
   0.12179487,  0.        ,  0.        ],
 [ 0.        ,  0.        ,  0.        , -0.00641026,  0.        ,
   0.        ,  0.12820513,  0.        ],
 [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
   0.        ,  0.        ,  0.12179487]]

References

[Wer89]

R. F. Werner. Quantum states with Einstein-Podolsky-Rosen correlations admitting a hidden-variable model. Phys. Rev. A, 40(8):4277–4281. 1989

Raises:

ValueError – Alpha vector does not have the correct length.

Parameters:
  • dim – The dimension of the Werner state.

  • alpha – Parameter to specify Werner state.

Returns:

A Werner state of dimension dim.