Implements NuclearNorm.


class picos.expressions.exp_nucnorm.NuclearNorm(x)[source]

Bases: picos.expressions.expression.Expression

The nuclear norm of a matrix.

This class can represent the nuclear norm of a matrix-affine expression (real- or complex valued). The nuclear norm is convex, so we can form expressions of the form NuclearNorm(X) <= t which are typically reformulated as LMIs that can be handled by SDP solvers.


If the normed expression is a matrix X, then its nuclear norm is

\|X\|_* =  \operatorname{trace}\ (X^*X)^{1/2}
        = \sum_{i=1}^{\min(n,m)} \sigma_i(X)

where the \sigma_i(X) denote the singular values of a X, and X^* denotes the adjoint matrix of X (i.e., the transposed matrix X^T if X is real-valued).

Special cases:

  • If X is scalar, then \|X\|_* reduces to the the absolute value (or modulus) |X|.

  • If X is scalar, then \|X\|_* coincides with the Euclidean norm of X.


Construct a NuclearNorm.


x (ComplexAffineExpression) – The affine expression to take the norm of.


Return a constraint that the expression is upper-bounded.


Denote multiplication with another expression on the right.


Denote multiplication with another expression on the left.

property x

Real expression whose norm equals that of the original expression.