SchattenNorm: Difference between revisions

From QETLAB
Jump to navigation Jump to search
Expanded intro, added CVX example
No edit summary
 
(One intermediate revision by the same user not shown)
Line 2: Line 2:
|name=SchattenNorm
|name=SchattenNorm
|desc=Computes the Schatten p-norm of an operator
|desc=Computes the Schatten p-norm of an operator
|rel=[[kpNorm]]<br />[[KyFanNorm]]<br />[[TraceNorm]]
|rel=[[InducedSchattenNorm]]<br />[[kpNorm]]<br />[[KyFanNorm]]<br />[[TraceNorm]]
|cat=[[List of functions#Norms|Norms]]
|cat=[[List of functions#Norms|Norms]]
|upd=December 1, 2012
|upd=December 1, 2012
Line 32: Line 32:


===Can be used within CVX===
===Can be used within CVX===
Like all norms, Schatten norms are convex, and this function can be used within CVX just like any other convex function. For example, the following code finds the smallest Schatten 3-norm of any density matrix whose (1,2)-entry equals 1/8:
Like all norms, Schatten norms are convex, and this function can be used within CVX just like any other convex function. For example, the following code finds the smallest Schatten 3-norm of any 4-by-4 density matrix whose (1,2)-entry equals 1/8:
<syntaxhighlight>
<syntaxhighlight>
>> cvx_begin sdp quiet
>> cvx_begin sdp quiet

Latest revision as of 00:22, 12 January 2016

SchattenNorm
Computes the Schatten p-norm of an operator

Other toolboxes required none
Related functions InducedSchattenNorm
kpNorm
KyFanNorm
TraceNorm
Function category Norms
Usable within CVX? yes (convex)

SchattenNorm is a function that computes the Schatten p-norm of an operator (i.e., the p-norm of its vector of singular values): $$ \|X\|_p := \left(\sum_i \sigma_i^\downarrow(X)^p\right)^{1/p}, $$ where $\sigma_1^\downarrow(X) \geq \sigma_2^\downarrow(X) \geq \cdots$ are the singular values of $X$ in non-increasing order. This function works with both full and sparse matrices, and it can be used within CVX.

Syntax

  • NRM = SchattenNorm(X,P)

Argument descriptions

  • X: An operator to have its Schatten P-norm computed.
  • P: A real number ≥ 1, or Inf.

Examples

Equals the Frobenius norm when P = 2

The Shatten 2-norm is simply the Frobenius norm:

>> X = rand(2500);
>> [norm(X,'fro'), SchattenNorm(X,2)]

ans =

       1443.6       1443.6

Can be used within CVX

Like all norms, Schatten norms are convex, and this function can be used within CVX just like any other convex function. For example, the following code finds the smallest Schatten 3-norm of any 4-by-4 density matrix whose (1,2)-entry equals 1/8:

>> cvx_begin sdp quiet
       variable rho(4,4) hermitian
       minimize SchattenNorm(rho,3)
       subject to
           trace(rho) == 1;
           rho >= 0;
           rho(1,2) == 1/8;
   cvx_end
>> cvx_optval

cvx_optval =

    0.4400

>> rho

rho =

   0.2344 + 0.0000i   0.1250 + 0.0000i  -0.0000 - 0.0000i  -0.0000 - 0.0000i
   0.1250 + 0.0000i   0.2344 + 0.0000i  -0.0000 - 0.0000i  -0.0000 - 0.0000i
  -0.0000 + 0.0000i  -0.0000 + 0.0000i   0.2656 + 0.0000i   0.0000 - 0.0000i
  -0.0000 + 0.0000i  -0.0000 + 0.0000i   0.0000 + 0.0000i   0.2656 + 0.0000i

>> SchattenNorm(rho,3)

ans =

    0.4400

Source code

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