Source code for toqito.channel_ops.natural_representation

"""Kraus operators to natural representation."""

import numpy as np

from toqito.matrix_ops import tensor


[docs] def natural_representation(kraus_ops: list[np.ndarray]) -> np.ndarray: r"""Convert a set of Kraus operators to the natural representation of a quantum channel. The natural representation of a quantum channel is given by: \(\Phi = \sum_i K_i \otimes K_i^*\) where \(K_i^*\) is the complex conjugate of \(K_i\). Examples: ```python exec="1" source="above" import numpy as np from toqito.channel_ops import natural_representation k0 = np.sqrt(1/2) * np.array([[1, 0], [0, 1]]) k1 = np.sqrt(1/2) * np.array([[0, 1], [1, 0]]) print(natural_representation([k0, k1])) ``` """ dim = kraus_ops[0].shape if not all(k.shape == dim for k in kraus_ops): raise ValueError("All Kraus operators must have the same dimensions.") # Compute the natural representation. return np.sum([tensor(k, np.conjugate(k)) for k in kraus_ops], axis=0)