Source code for toqito.matrix_props.trace_norm
"""Computes the trace norm metric of a density matrix."""
import numpy as np
[docs]
def trace_norm(rho: np.ndarray) -> float | np.floating:
r"""Compute the trace norm of the state [@Quantiki_TrNorm].
Also computes the operator 1-norm when inputting an operator.
The trace norm \(||\rho||_1\) of a density matrix \(\rho\) is the sum of the singular
values of \(\rho\). The singular values are the roots of the eigenvalues of
\(\rho \rho^*\).
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:
\[
\rho = u u^* = \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}).
\]
It can be observed using `|toqito⟩` that \(||\rho||_1 = 1\) as follows.
```python exec="1" source="above"
from toqito.states import bell
from toqito.matrix_props import trace_norm
rho = bell(0) @ bell(0).conj().T
print(trace_norm(rho))
```
Args:
rho: Density operator.
Returns:
The trace norm of `rho`.
"""
return np.linalg.norm(rho, ord="nuc")