Revision as of 13:18, 24 June 2015 by Nathaniel (talk | contribs) (CVX info in side box)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Computes the negativity of a bipartite density matrix

Other toolboxes required none
Related functions PartialTranspose
Function category Entanglement measures
Usable within CVX? yes (convex)

Negativity is a function that computes the negativity of a bipartite density matrix, which is defined as follows: \[\mathcal{N}(\rho) := \frac{1}{2}\big( \|\rho^\Gamma\|_1 - 1 \big),\] where $\rho^\Gamma$ is the partial transpose of $\rho$ and $\|\cdot\|_1$ is the trace norm. Equivalently, the negativity of $\rho$ is the absolute value of the sum of the negative eigenvalues of $\rho^\Gamma$.


  • NEG = Negativity(RHO)
  • NEG = Negativity(RHO,DIM)

Argument descriptions

  • RHO: A bipartite density matrix.
  • DIM (optional, by default has both subsystems of equal dimension): A specification of the dimensions of the subsystems that RHO acts on. DIM can be provided in one of two ways:
    • If DIM is a scalar, it is assumed that the first subsystem has dimension DIM and the second subsystem has dimension length(RHO)/DIM.
    • If $X \in M_{n_1} \otimes M_{n_2}$ then DIM should be a row vector containing the dimensions (i.e., DIM = [n_1, n_2]).


PPT states have zero negativity

States with positive partial transpose have zero negativity. The following code verifies this fact for one particular Chessboard state:

>> rho = ChessboardState(1,2,3,4,5,6);
>> Negativity(rho)

ans =


Can be used with CVX

This function is convex and can be used in the objective function or constraints of a CVX optimization problem. For example, the following code finds the maximum overlap of a density matrix $\rho$ with the maximally-entangled pure state, subject to the constraint that its negativity is no larger than 1/2:

>> d = 3;
>> phi = MaxEntangled(d);
>> phi = phi*phi'; % the maximally-entangled pure state, represented as a rank-1 density matrix
>> cvx_begin sdp quiet
   variable rho(d^2,d^2) hermitian;
   maximize trace(phi*rho);
   subject to
       trace(rho) == 1;
       rho >= 0;
       Negativity(rho) <= 1/2;

cvx_optval =


Source code

Click here to view this function's source code on github.