matrix_props.sk_norm

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

Module Contents

Functions

sk_operator_norm(mat[, k, dim, target, effort])

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

__target_is_proved(lower_bound, upper_bound, op_norm, ...)

__lower_bound_sk_norm_randomized(mat[, k, dim, tol, ...])

matrix_props.sk_norm.sk_operator_norm(mat, k=1, dim=None, target=None, effort=2)

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 [1] 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

[1]

Nathaniel Johnston. Norms and cones in the theory of quantum entanglement. 2012. arXiv:1207.1479.

[2] (1,2)

Nathaniel Johnston and David W. Kribs. A family of norms with applications in quantum information theory. Journal of Mathematical Physics, Aug 2010. URL: http://dx.doi.org/10.1063/1.3459068, doi:10.1063/1.3459068.

Raises:

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

Parameters:
  • mat (numpy.ndarray) – A matrix.

  • k (int) – 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 (int | list[int]) – The dimension of the two sub-systems. By default it’s assumed to be equal.

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

  • effort (int) – 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.

Return type:

float

matrix_props.sk_norm.__target_is_proved(lower_bound, upper_bound, op_norm, tol, target)
Parameters:
  • lower_bound (float)

  • upper_bound (float)

  • op_norm (float)

  • tol (float)

  • target (float)

Return type:

bool

matrix_props.sk_norm.__lower_bound_sk_norm_randomized(mat, k=1, dim=None, tol=1e-05, start_vec=None)
Parameters:
  • mat (numpy.ndarray)

  • k (int)

  • dim (int | list[int])

  • tol (float)

  • start_vec (numpy.ndarray)

Return type:

float