toqito.random.random_povm¶
-
toqito.random.
random_povm
(dim: int, num_inputs: int, num_outputs: int) → numpy.ndarray[source]¶ Generate random positive operator valued measurements (POVMs) [WIKPOVM].
Examples
We can generate a set of dim-by-dim POVMs consisting of a specific dimension along with a given number of measurement inputs and measurement outputs. As an example, we can construct a random set of \(2\)-by-\(2\) POVMs of dimension with \(2\) inputs and \(2\) outputs.
>>> from toqito.random import random_povm >>> import numpy as np >>> >>> dim, num_inputs, num_outputs = 2, 2, 2 >>> povms = random_povm(dim, num_inputs, num_outputs) >>> povms [[[[ 0.40313832+0.j, 0.59686168+0.j], [ 0.91134633+0.j, 0.08865367+0.j]], [[-0.27285707+0.j, 0.27285707+0.j], [-0.12086852+0.j, 0.12086852+0.j]]], [[[-0.27285707+0.j, 0.27285707+0.j], [-0.12086852+0.j, 0.12086852+0.j]], [[ 0.452533 +0.j, 0.547467 +0.j], [ 0.34692158+0.j, 0.65307842+0.j]]]]
We can verify that this constitutes a valid set of POVM elements as checking that these operators all sum to the identity operator.
>>> np.round(povms[:, :, 0, 0] + povms[:, :, 0, 1]) [[1.+0.j, 0.+0.j], [0.+0.j, 1.+0.j]]
References
[WIKPOVM] Wikipedia: POVM https://en.wikipedia.org/wiki/POVM Parameters: - dim – The dimensions of the measurements.
- num_inputs – The number of inputs for the measurement.
- num_outputs – The number of outputs for the measurement.
Returns: A set of dim-by-dim POVMs of shape (dim, dim, num_inputs, num_outputs).