state_props.von_neumann_entropy

Von neumann entropy metric.

Module Contents

Functions

von_neumann_entropy(rho)

Compute the von Neumann entropy of a density matrix [2].

state_props.von_neumann_entropy.von_neumann_entropy(rho)

Compute the von Neumann entropy of a density matrix [2].

Let \(P \in \text{Pos}(\mathcal{X})\) be a positive semidefinite operator, for a complex Euclidean space \(\mathcal{X}\). Then one defines the von Neumann entropy as

\[H(P) = H(\lambda(P)),\]

where \(\lambda(P)\) is the vector of eigenvalues of \(P\) and where the function \(H(\cdot)\) is the Shannon entropy function defined as

\[\begin{split}H(u) = -\sum_{\substack{a \in \Sigma \\ u(a) > 0}} u(a) \text{log}(u(a)),\end{split}\]

where the \(\text{log}\) function is assumed to be the base-2 logarithm, and where \(\Sigma\) is an alphabet where \(u \in [0, \infty)^{\Sigma}\) is a vector of nonnegative real numbers indexed by \(\Sigma\).

Further information for computing the von Neumann entropy of a density matrix can be found in Section: “Definitions Of Quantum Entropic Functions” from [1]).

Examples

Consider the following Bell state:

\[u = \frac{1}{\sqrt{2}} \left(|00 \rangle + |11 \rangle \right) \in \mathcal{X}.\]

The corresponding density matrix of \(u\) may be calculated by:

\[\begin{split}\rho = u u^* = \frac{1}{2} \begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix} \in \text{D}(\mathcal{X}).\end{split}\]

Calculating the von Neumann entropy of \(\rho\) in toqito can be done as follows.

>>> from toqito.state_props import von_neumann_entropy
>>> import numpy as np
>>> test_input_mat = np.array(
...     [[1 / 2, 0, 0, 1 / 2], [0, 0, 0, 0],
...      [0, 0, 0, 0], [1 / 2, 0, 0, 1 / 2]]
... )
>>> von_neumann_entropy(test_input_mat)
5.88418203051333e-15

Consider the density operator corresponding to the maximally mixed state of dimension two

\[\begin{split}\rho = \frac{1}{2} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}.\end{split}\]

As this state is maximally mixed, the von Neumann entropy of \(\rho\) is equal to one. We can see this in toqito as follows.

>>> from toqito.state_props import von_neumann_entropy
>>> import numpy as np
>>> rho = 1/2 * np.identity(2)
>>> von_neumann_entropy(rho)
1.0

References

[1]

John Watrous. The Theory of Quantum Information. Cambridge University Press, 2018. doi:10.1017/9781316848142.

[2] (1,2)

Wikipedia. Von neumann entropy. https://en.wikipedia.org/wiki/Von_Neumann_entropy.

Parameters:

rho (numpy.ndarray) – Density operator.

Returns:

The von Neumann entropy of rho.

Return type:

float