Decompositions

Moment optimization programs can be used to compute decomposition of different forms.

Sum of Square Decompositions

MomentPolynomialOpt.sos_decomposeFunction

Decompose f in the truncated quadratic module associated to the constraints H=0, G>=0:

 WS, P, v, M = sos_decompose(f, H, G, X, d, optimizer; exact = false, round = Inf64 )

such that

$f = \sum_k \omega_{0,k} q_{0,k}^2 + \sum_j (\sum_k \omega_{j,k} q_{j,k}^2)*G[j] + \sum_i P[i]*H[i] (+)$

where

  • f is the polynomial to decompose
  • H = [...] are the equality constraints
  • G = [...] are the non-negativity constraints
  • X is the set of variables
  • d is the order of the relaxation
  • optimizer (optional) is the optimizer used to solve the SDP program. The default value is MPO[:optimizer]
  • if exact = true then an exact decomposition with rational coefficients is computed.
  • if the option round = p is provided, then a round of at most pdigits is used.

In the output decomposition,

  • WS[1] = [w0, Q0] where w0 is an array of weights $\omega_{0,k}$ in (+) and Q0 is an array of polynomials (q_{0,k} in (+)) of degree $\le 2d -\deg(G[i])$
  • WS[j+1] as WS[1] for the weights $\omega_{j,k}$ and polynomials $q_j,k$in (+)
  • P[i] is a polynomial of degree $\le 2d - \deg(H[i])$
  • v is the maximal smallest eigenvalue of S0 such that $(X^d)^t S0 (X^d) = \sum_k \omega_{0,k} q_{0,k}^2$ in (*)
  • Mis the JuMP optimization model
source

Tensor Decompositions

Tensor decomposition problems can be seen as Generalized Moment Problems, by apolarity. See e.g. [GM25].

Below are functions, which compute positive and real decompositions of symmetric tensors.

MomentPolynomialOpt.MomentTensorDecomposition.symm_tens_decompFunction
w, Xi = symm_tens_decomp(X, l, F; rescaling=1, use_kernel=true, weight_type=:real)

Decompose a symmetric tensor represented as a homogeneous polynomial F into a weighted sum of rank-1 components. Given a homogeneous polynomial F0 of degree d, find weights w and points Xi such that $F \approx \sum_{i} w_i \langle X_i, x \rangle^d$.

Arguments

  • X: Vector of polynomial variables
  • l: Relaxation order for the moment problem
  • F: Homogeneous polynomial to decompose
  • rescaling: Scaling factor to be set so decomposition points lie in radius 1 sphere (default: 1)
  • use_kernel: Include kernel constraints from Hankel nullspace (default: true)
  • weight_type: :real for signed weights or :positive for positive-only weights (default: :real)

Returns

  • w: Vector of weights
  • Xi: Matrix of decomposition points (each column is a point)
source