L1NormCoherence

From QETLAB
Jump to navigation Jump to search
L1NormCoherence
Computes the ℓ1-norm of coherence of a quantum state

Other toolboxes required none
Related functions RelEntCoherence
RobustnessCoherence
TraceDistanceCoherence
Function category Coherence and incoherence
Usable within CVX? yes (convex)

L1NormCoherence is a function that computes the ℓ1-norm of coherence of a quantum state $\rho$, defined as follows:

\[C_{\ell_1}(\rho) := \sum_{i \neq j} |\rho_{ij}|,\]

where $\rho_{ij}$ is the $(i,j)$-entry of $\rho$ in the standard basis.

Syntax

  • L1C = L1NormCoherence(RHO)

Argument descriptions

  • RHO: A state (either pure or mixed) to have its ℓ1-norm of coherence computed.

Examples

Pure states or mixed states

If $|v\rangle$ is a pure state then its ℓ1-norm of coherence is computed from the density matrix $|v\rangle\langle v|$:

>> v = RandomStateVector(3)

v =

   0.6233 + 0.1633i
  -0.3038 - 0.0142i
   0.6830 + 0.1609i

>> L1NormCoherence(v)

ans =

    1.7229

>> L1NormCoherence(v*v')

ans =

    1.7229

Maximally coherent states

The largest possible value of the ℓ1-norm of coherence on $d$-dimensional states is $d-1$, and is attained exactly by the "maximally coherent states": pure states whose entries all have the same absolute value.

>> v = ones(3,1)/sqrt(3); % this is a maximally coherent state
>> L1NormCoherence(v)

ans =

    2.0000

Can be used within CVX

The ℓ1-norm of coherence is a convex function and can be used in the same way as any other convex function within CVX. Thus you can minimize the ℓ1-norm of coherence or use the ℓ1-norm of coherence in constraints of CVX optimization problems. For example, the following code minimizes the ℓ1-norm of coherence over all density matrices that are within a trace distance of $1/2$ from the maximally coherent state $|v\rangle = (1,1,1,1,1)/\sqrt{5}$:

>> d = 5;
>> v = ones(d,1)/sqrt(d); % this is a maximally coherent state
>> cvx_begin sdp quiet
   variable rho(5,5) hermitian;

   minimize L1NormCoherence(rho)

   subject to
       TraceNorm(rho - v*v') <= 0.5;
       % the next two constraints force rho to be a density matrix
       rho >= 0;
       trace(rho) == 1;
   cvx_end
   cvx_optval

cvx_optval =

    2.7500

>> rho

rho =

   0.2000    0.1375    0.1375    0.1375    0.1375
   0.1375    0.2000    0.1375    0.1375    0.1375
   0.1375    0.1375    0.2000    0.1375    0.1375
   0.1375    0.1375    0.1375    0.2000    0.1375
   0.1375    0.1375    0.1375    0.1375    0.2000

Source code

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