# RobustnessCoherence

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
 Other toolboxes required RobustnessCoherence Computes the robustness of coherence of a quantum state none L1NormCoherenceRelEntCoherenceTraceDistanceCoherence Coherence and incoherence yes (convex)

RobustnessCoherence is a function that computes the robustness of coherence of a quantum state $\rho$, defined as follows :

$C_{R}(\rho) := \min_{\tau}\left\{s \geq 0 \, \Big| \, \frac{\rho + s\tau}{1+s} \in \mathcal{I}\right\},$

where the minimization is over all density matrices $\tau$ and $\mathcal{I}$ is the set of incoherent density matrices (i.e., the set of density matrices that are diagonal in the computational basis).

## Syntax

• ROC = RobustnessCoherence(RHO)

## Argument descriptions

• RHO: A state (either pure or mixed) to have its robustness of coherence computed.

## Examples

### Pure states

If $|v\rangle$ is a pure state then its robustness of coherence and ℓ1-norm of coherence coincide:

>> v = RandomStateVector(4);
>> L1NormCoherence(v)

ans =

2.5954

>> RobustnessCoherence(v)

ans =

2.5954

### Can be used within CVX

The robustness 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 robustness of coherence or use the robustness of coherence in constraints of CVX optimization problems. For example, the following code minimizes the robustness 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 RobustnessCoherence(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 on "expand" to the right to view the MATLAB source code for this function.

1. %%  RobustnessCoherence    Computes the robustness of coherence of a quantum state
2. %   This function has one required argument:
3. %     RHO: a pure state vector or a density matrix
4. %
5. %   ROC = RobustnessCoherence(RHO) is the robustness of coherence (as
6. %   defined in [1,2]) of the quantum state (density matrix) RHO.
7. %
8. %   References:  C. Napoli, T. R. Bromley, M. Cianciaruso, M. Piani,
9. %                   N. Johnston, G. Adesso. Robustness of coherence: An
10. %                   operational and observable measure of quantum
11. %                   coherence. Preprint submitted to PRL, 2016.
12. %                M. Piani, M. Cianciaruso, T. R. Bromley, C. Napoli,
13. %                   N. Johnston, G. Adesso. Robustness of asymmetry and
14. %                   coherence of quantum states. Preprint submitted to PRA,
15. %                   2016.
16. %
17. %   URL: http://www.qetlab.com/RobustnessCoherence
18. 
19. %   requires: cvx (http://cvxr.com/cvx/), L1NormCoherence.m,
20. %             pure_to_mixed.m
21. %   author: Nathaniel Johnston (nathaniel@njohnston.ca)
22. %   package: QETLAB
23. %   last updated: January 12, 2016
24. 
25. function RoC = RobustnessCoherence(rho)
26. 
27. rho = pure_to_mixed(rho); % Let the user enter either a pure state vector or a density matrix.
28. n = length(rho);
29. 
30. % If the state is pure or single-qubit, we can compute it faster by
31. % recalling that it is equal to the l1-norm of coherence.
32. if(n <= 2 || rank(rho) == 1)
33.     RoC = L1NormCoherence(rho);
34.     return
35. end
36. 
37. % Robustness of coherence is computed by semidefinite programming
38. cvx_begin sdp quiet
39.     cvx_precision best;
40.     variable inc_state(n,1);
41.     variable sig(n,n) hermitian;
42. 
43.     minimize trace(sig);
44. 
45.     subject to
46.         sig >= 0;
47.         rho + sig == diag(inc_state);
48. cvx_end
49. 
50. RoC = real(cvx_optval);