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.
Contents
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:
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 on "expand" to the right to view the MATLAB source code for this function.
%% KYFANNORM Computes the Ky Fan k-norm of an operator
% This function has two required arguments:
% X: an operator
% K: a positive integer
%
% NRM = KyFanNorm(X,K) is the Ky Fan K-norm of X.
%
% URL: http://www.qetlab.com/KyFanNorm
% requires: kpNorm.m
% author: Nathaniel Johnston (nathaniel@njohnston.ca)
% package: QETLAB
% last updated: December 1, 2012
function nrm = KyFanNorm(X,k)
nrm = kpNorm(X,k,1);