rand.random_psd_operator

Generates a random positive semidefinite operator.

Functions

random_psd_operator(dim[, is_real, seed])

Generate a random positive semidefinite operator.

Module Contents

rand.random_psd_operator.random_psd_operator(dim, is_real=False, seed=None)

Generate a random positive semidefinite operator.

A positive semidefinite operator is a Hermitian operator that has only real and non-negative eigenvalues. This function generates a random positive semidefinite operator by constructing a Hermitian matrix, based on the fact that a Hermitian matrix can have real eigenvalues.

Examples

Using |toqito⟩, we may generate a random positive semidefinite matrix. For \(\text{dim}=2\), this can be accomplished as follows.

from toqito.rand import random_psd_operator

complex_psd_mat = random_psd_operator(2)

complex_psd_mat
array([[0.31737244+0.j        , 0.32076231+0.17693306j],
       [0.32076231-0.17693306j, 0.90028389+0.j        ]])

We can confirm that this matrix indeed represents a valid positive semidefinite matrix by utilizing the is_positive_semidefinite function from the |toqito⟩ library, as demonstrated below:

from toqito.matrix_props import is_positive_semidefinite

is_positive_semidefinite(complex_psd_mat)
True

We can also generate random positive semidefinite matrices that are real-valued as follows.

from toqito.rand import random_psd_operator

real_psd_mat = random_psd_operator(2, is_real=True)

real_psd_mat
array([[0.88451326, 0.32350167],
       [0.32350167, 0.37692826]])

Again, verifying that this is a valid positive semidefinite matrix can be done as follows.

from toqito.matrix_props import is_positive_semidefinite
is_positive_semidefinite(real_psd_mat)
True

It is also possible to add a seed for reproducibility.

from toqito.rand import random_psd_operator

seeded = random_psd_operator(2, is_real=True, seed=42)

seeded
array([[0.77395605, 0.64873818],
       [0.64873818, 0.69736803]])

References

Parameters:
  • dim (int) – The dimension of the operator.

  • is_real (bool) – Boolean denoting whether the returned matrix will have all real entries or not. Default is False.

  • seed (int | None) – A seed used to instantiate numpy’s random number generator.

Returns:

A dim x dim random positive semidefinite matrix.

Return type:

numpy.ndarray