# KyFanNorm

KyFanNorm | |

Computes the Ky Fan norm | |

Other toolboxes required | none |
---|---|

Related functions | kpNorm SchattenNorm TraceNorm |

Function category | Norms |

Usable within CVX? | yes (convex) |

` KyFanNorm` is a function that computes the Ky Fan k-norm of an operator (i.e., the sum of its k largest singular values):
\[\|X\|_{(k)} := \sum_{j=1}^k \sigma_j^{\downarrow}(X).\]
This function works with both full and sparse matrices, and can be used in the objective function or constraints of a CVX optimization problem.

## Syntax

`NRM = KyFanNorm(X,K)`

## Argument descriptions

`X`: An operator to have its Ky Fan`K`-norm computed.`K`: A positive integer.

## Examples

### Equals the operator norm when `K = 1` (but faster!)

The Ky Fan 1-norm is just the operator norm, which is implemented in MATLAB by the `norm` function. However, the `KyFanNorm` function is typically much faster than the `norm` function:

```
>> X = rand(2500);
>> tic; KyFanNorm(X,1)
toc
ans =
1250.2
Elapsed time is 0.861377 seconds.
>> tic; norm(X)
toc
ans =
1250.2
Elapsed time is 4.288788 seconds.
```

### Can be used with CVX

This function can be used directly in constraints or the objective function of CVX problems. The following code snippet computes the minimum value of $\mathrm{Tr}(S\rho)$ over all density matrices $\rho$ satisfying $\|\rho\|_{(2)} \leq 3/4$, where $S$ is the swap operator.

```
>> cvx_begin sdp quiet
variable rho(4,4) hermitian;
minimize trace(rho*SwapOperator(2));
subject to
trace(rho) == 1;
rho >= 0;
KyFanNorm(rho,2) <= 3/4;
cvx_end
cvx_optval
cvx_optval =
-0.2500
>> rho
rho =
0.1250 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i
-0.0000 - 0.0000i 0.3750 + 0.0000i -0.2500 + 0.0000i -0.0000 + 0.0000i
-0.0000 - 0.0000i -0.2500 - 0.0000i 0.3750 + 0.0000i -0.0000 + 0.0000i
-0.0000 - 0.0000i -0.0000 - 0.0000i -0.0000 - 0.0000i 0.1250 + 0.0000i
```

## Source code

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