-
Notifications
You must be signed in to change notification settings - Fork 3
Sum‐of‐squares Polynomials
Sum-of-squares polynomials are polynomials that can be written as a sum of squares of other polynomials. They take, a fortiori, nonnegative values when evaluated over the real numbers. The set of all sum-of-squares polynomials forms a cone and is a strict subset of the cone of nonnegative polynomials.
The problem of determining whether a general function is nonnegative, i.e., whether
is a fundamental question in mathematics with wide-ranging applications across various fields. As Parrilo discusses in his influential work,[Par2003] this problem is crucial for many theoretical and practical purposes.
To approach the problem, we reduce the formulation to polynomials, that is,
We write
One potential method to establish the nonnegativity of such a polynomial is to demonstrate that it can be decomposed into a sum of squares. In other words,
where each
If such a decomposition exists, we refer to
Note
Existence of SOS Decompositions: Hilbert proved that not every nonnegative polynomial can be decomposed into an SOS polynomial. This however does not stop us from trying to find them.
Consider a polynomial
in all the monomials of degree less than or equal to
Furthermore,
Consider for example
for which we want to prove nonnegativity. We introduce
and compare coefficients to obtain
As we can see, the solution defines an affine subspace, or hyperplane. Additionally, we require
The solutions we seek are found at the intersection of a hyperplane with the cone of positive semidefinite matrices. This is precisely the type of problem that semidefinite programming is designed to solve.
A semidefinite program is formulated as follows:
The second constraint represents a linear matrix inequality, which allows us to enforce the condition
TODO
TODO
[Par2003] P. A. Parrilo, “Semidefinite programming relaxations for semialgebraic problems,” Mathematical Programming, vol. 96, no. 2, pp. 293–320, May 2003, doi: 10.1007/s10107-003-0387-5.
- Getting started
- Available conic solvers
- Convex and nonconvex sum-of-squares optimization
- Supported vector, matrix, and polynomial cones
- Some practical tipps for sum-of-squares
- Transitioning from other toolboxes
- Example code snippets
If you use CaΣoS, please cite us.