Source code for toqito.states.max_mixed

"""Maximally mixed state."""
import numpy as np

from scipy import sparse


[docs] def max_mixed(dim: int, is_sparse: bool = False) -> [np.ndarray, sparse.dia_matrix]: r""" Produce the maximally mixed state [AAR6]_. Produces the maximally mixed state on of :code:`dim` dimensions. The maximally mixed state is defined as .. math:: \omega = \frac{1}{d} \begin{pmatrix} 1 & 0 & \ldots & 0 \\ 0 & 1 & \ldots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \ldots & 1 \end{pmatrix}, or equivalently, it is defined as .. math:: \omega = \frac{\mathbb{I}}{\text{dim}(\mathcal{X})} for some complex Euclidean space :math:`\mathcal{X}`. The maximally mixed state is sometimes also referred to as the tracial state. The maximally mixed state is returned as a sparse matrix if :code:`is_sparse = True` and is full if :code:`is_sparse = False`. Examples ========== Using :code:`toqito`, we can generate the :math:`2`-dimensional maximally mixed state .. math:: \omega_2 = \frac{1}{2} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} as follows. >>> from toqito.states import max_mixed >>> max_mixed(2, is_sparse=False) [[0.5, 0. ], [0. , 0.5]] One may also generate a maximally mixed state returned as a sparse matrix >>> from toqito.states import max_mixed >>> max_mixed(2, is_sparse=True) <2x2 sparse matrix of type '<class 'numpy.float64'>' with 2 stored elements (1 diagonals) in DIAgonal format> References ========== .. [AAR6] Scott Aaronson: Lecture 6, Thurs Feb 2: Mixed States https://www.scottaaronson.com/qclec/6.pdf :param dim: Dimension of the entangled state. :param is_sparse: `True` if vector is spare and `False` otherwise. :return: The maximally mixed state of dimension `dim`. """ if is_sparse: return 1 / dim * sparse.eye(dim) return 1 / dim * np.eye(dim)