toqito.matrix_props.sk_operator_norm

toqito.matrix_props.sk_operator_norm(mat, k=1, dim=None, target=None, effort=2)[source]

Compute the S(k)-norm of a matrix [1].

The \(S(k)\)-norm of of a matrix \(X\) is defined as:

\[\big|\big| X \big|\big|_{S(k)} := sup_{|v\rangle, |w\rangle} \Big\{ |\langle w | X |v \rangle| : \text{Schmidt - rank}(|v\rangle) \leq k, \text{Schmidt - rank}(|w\rangle) \leq k \Big\}\]

Since computing the exact value of S(k)-norm is in the general case an intractable problem, this function tries to find some good lower and upper bounds. You can control the amount of computation you want to devote to computing the bounds by effort input argument. Note that if the input matrix is not positive semidefinite the output bounds might be quite pooor.

This function was adapted from QETLAB.

Examples

The \(S(1)\)-norm of a Werner state \(\rho_a \in M_n \otimes M_n\) is

\[\big|\big| \rho_a \big|\big|_{S(1)} = \frac{1 + |min\{a, 0\}|}{n (n - a)}\]
>>> from toqito.states import werner
>>> from toqito.matrix_props import sk_operator_norm
>>>
>>> # Werner state.
>>> n = 4; a = 0
>>> rho = werner(4, 0.)
>>> sk_operator_norm(rho)
(0.0625, 0.0625)

References

Raises:

ValueError – If dimension of the input matrix is not specified.

Parameters:
  • mat – A matrix.

  • k – The “index” of the norm – that is, it is the Schmidt rank of the vectors that are multiplying X on the left and right in the definition of the norm.

  • dim – The dimension of the two sub-systems. By default it’s assumed to be equal.

  • target – A target value that you wish to prove that the norm is above or below.

  • effort – An integer value indicating the amount of computation you want to devote to computing the bounds.

Returns:

A lower and an upper bound on S(k)-norm of mat.