matrix_props.is_stochastic

Checks if the matrix is stochastic.

Functions

is_stochastic(mat, mat_type)

Verify matrix is doubly, right or left stochastic.

Module Contents

matrix_props.is_stochastic.is_stochastic(mat, mat_type)

Verify matrix is doubly, right or left stochastic.

When the nonnegative elements in a row of a square matrix sum up to 1, the matrix is right stochastic and if the columns sum up to 1, the matrix is left stochastic [1].

When a matrix is right and left stochastic, it is a doubly stochastic matrix [2] .

See also

is_doubly_stochastic()

Examples

The elements of an identity matrix and a Pauli-X matrix are nonnegative such that the rows and columns sum up to 1. We expect these matrices to be left and right stochastic. The same cannot be said about a Pauli-Z or a Pauli-Y matrix.

import numpy as np
from toqito.matrix_props import is_stochastic

print(is_stochastic(np.eye(5), "right"))
print(is_stochastic(np.eye(5), "left"))
print(is_stochastic(np.eye(5), "doubly"))
True
True
True
from toqito.matrices import pauli
from toqito.matrix_props import is_stochastic

print(is_stochastic(pauli("X"), "left"))
print(is_stochastic(pauli("X"), "right"))
print(is_stochastic(pauli("X"), "doubly"))
True
True
True
from toqito.matrices import pauli
from toqito.matrix_props import is_stochastic

print(is_stochastic(pauli("Z"), "right"))
print(is_stochastic(pauli("Z"), "left"))
print(is_stochastic(pauli("Z"), "doubly"))
False
False
False

References

Parameters:
  • mat (numpy.ndarray) – Matrix of interest

  • mat_type (str) – Type of stochastic matrix. "left" for left stochastic matrix and "right" for right stochastic matrix and "doubly" for a doubly stochastic matrix.

Returns:

Returns True if the matrix is doubly, right or left stochastic, False otherwise.

Raises:

TypeError – If something other than "doubly", "left" or "right" is used for mat_type

Return type:

bool