Decompositions
Moment optimization programs can be used to compute decomposition of different forms.
Sum of Square Decompositions
MomentPolynomialOpt.sos_decompose — Function
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 isMPO[:optimizer]- if
exact = truethen an exact decomposition with rational coefficients is computed. - if the option
round = pis provided, then a round of at mostpdigits 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
MomentPolynomialOpt.w_cholesky — Function
w, L = w_cholesky(A)Compute the weighted Cholesky factorisation so that 'L^tdiagm(w)L = A`
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_decomp — Function
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 variablesl: Relaxation order for the moment problemF: Homogeneous polynomial to decomposerescaling: 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::realfor signed weights or:positivefor positive-only weights (default::real)
Returns
w: Vector of weightsXi: Matrix of decomposition points (each column is a point)