matrix_props.majorizes

Determine if one vector or matrix majorizes another.

Functions

majorizes(a_var, b_var)

Determine if one vector or matrix majorizes another [1].

Module Contents

matrix_props.majorizes.majorizes(a_var, b_var)

Determine if one vector or matrix majorizes another [1].

Given \(a, b \in \mathbb{R}^d\), we say that \(a\) weakly majorizes (or dominates) \(b\) from below if and only if

\[\sum_{i=1}^k a_i^{\downarrow} \geq \sum_{i=1}^k b_i^{\downarrow}\]

for all \(k \in \{1, \ldots, d\}\).

This function was adapted from the QETLAB package.

Examples

Simple example illustrating that the vector \((3, 0, 0)\) majorizes the vector \((1, 1, 1)\).

>>> from toqito.matrix_props import majorizes
>>> majorizes([3, 0, 0], [1, 1, 1])
True

The majorization criterion says that every separable state \(\rho \in \text{D}(\mathcal{A} \otimes \mathcal{B})\) is such that \(\text{Tr}_{\mathcal{B}}(\rho)\) majorizes \(\text{Tr}_{\mathcal{A}}(\rho)\).

>>> from toqito.matrix_props import majorizes
>>> from toqito.states import max_entangled
>>> from toqito.channels import partial_trace
>>>
>>> v_vec = max_entangled(3)
>>> rho = v_vec @ v_vec.conj().T
>>> majorizes(partial_trace(rho, [1]), rho)
False

References

[1] (1,2)

Wikipedia. Majorization. URL: https://en.wikipedia.org/wiki/Majorization.

Parameters:
  • a_var (numpy.ndarray | list[int]) – Matrix or vector provided as list or np.array.

  • b_var (numpy.ndarray | list[int]) – Matrix or vector provided as list or np.array.

Returns:

Return True if a_var majorizes b_var and False otherwise.

Return type:

bool