matrix_props.positive_semidefinite_rank¶
Calculates the positive semidefinite rank of a nonnegative matrix.
Functions¶
|
Compute the positive semidefinite rank (PSD rank) of a nonnegative matrix. |
|
Check if the given PSD rank k is feasible for matrix M. |
Module Contents¶
- matrix_props.positive_semidefinite_rank.positive_semidefinite_rank(mat, max_rank=10)¶
Compute the positive semidefinite rank (PSD rank) of a nonnegative matrix.
The definition of PSD rank is defined in [1].
Finds the PSD rank of an input matrix by checking feasibility for increasing rank.
Examples
As an example (Equation 21 from [2]), the PSD rank of the following matrix
\[\begin{split}A = \frac{1}{2} \begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix}\end{split}\]is known to be \(\text{rank}_{\text{PSD}}(A) = 2\).
>>> import numpy as np >>> from toqito.matrix_props import positive_semidefinite_rank >>> positive_semidefinite_rank(1/2 * np.array([[0, 1, 1], [1,0,1], [1,1,0]])) 2
The PSD rank of the identity matrix is the dimension of the matrix [1].
>>> import numpy as np >>> from toqito.matrix_props import positive_semidefinite_rank >>> positive_semidefinite_rank(np.identity(3)) 3
References
[1] (1,2)Hamza Fawzi, João Gouveia, Pablo A Parrilo, Richard Z Robinson, and Rekha R Thomas. Positive semidefinite rank. Mathematical Programming, 153:133–177, 2015. URL: https://arxiv.org/abs/1407.4095.
[2]Teiko Heinosaari and Mark Hillery. Can a qudit carry more information than a dit? arXiv preprint arXiv:2406.16566, 2024. URL: https://arxiv.org/abs/2406.16566.
- Parameters:
mat (numpy.ndarray) – 2D numpy ndarray.
max_rank (int) – The maximum rank to check.
- Returns:
The PSD rank of the input matrix, or None if not found within max_rank.
- Return type:
int | None
- matrix_props.positive_semidefinite_rank._check_psd_rank(mat, max_rank)¶
Check if the given PSD rank k is feasible for matrix M.
- Parameters:
mat (numpy.ndarray) – 2D numpy ndarray
max_rank (int) – The maximum rank to check.
- Returns:
True if max_rank is a feasible PSD rank, False otherwise.
- Return type:
bool