PolynomialSumOfSquaresList
PolynomialSumOfSquaresList[f,vars]
attempts to find polynomials with real coefficients {f1,…,fn} such that f==f12+…+fn2.
Details

- PolynomialSumOfSquaresList is typically used to show that a real polynomial is non-negative.
- f should be a polynomial in vars with real numeric coefficients.
Examples
open allclose allBasic Examples (1)
Scope (6)
Find a sum-of-squares representation of a polynomial:
The polynomial is non-negative:
Find a sum-of-squares representation of a polynomial with exact real numeric coefficients:
Find a sum-of-squares representation of a polynomial with machine-precision real coefficients:
The difference of and the sum of squares has small coefficients:
Find a sum-of-squares representation of a polynomial with arbitrary-precision real coefficients:
The difference of and the sum of squares has arbitrary-precision zero coefficients:
A polynomial may not be representable as a sum of squares:

The polynomial attains negative values, hence it cannot be a sum of squares:
PolynomialSumOfSquaresList may fail even if a sum-of-squares representation exists:

Applications (1)
Prove non-negativity of a large polynomial:
Compute a sum-of-squares representation:
is a sum of squares, hence it is non-negative:
FindInstance uses a method based on sum-of-squares representation here:
Deciding non-negativity of f using CylindricalDecomposition takes much more time:
Properties & Relations (3)
A polynomial that has a sum-of-squares representation is non-negative:
Use FindInstance to show that is non-negative:
The Motzkin polynomial is non-negative, but is not a sum of squares:

Use Resolve to show that is non-negative:
Use MinValue to find the infimum of values of a polynomial:
PolynomialSumOfSquaresList fails for the non-negative polynomial :

PolynomialSumOfSquaresList succeeds for the strictly positive polynomial :
Possible Issues (1)
PolynomialSumOfSquaresList may fail even if a sum-of-squares representation exists:

Text
Wolfram Research (2021), PolynomialSumOfSquaresList, Wolfram Language function, https://reference.wolfram.com/language/ref/PolynomialSumOfSquaresList.html.
CMS
Wolfram Language. 2021. "PolynomialSumOfSquaresList." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PolynomialSumOfSquaresList.html.
APA
Wolfram Language. (2021). PolynomialSumOfSquaresList. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PolynomialSumOfSquaresList.html