[isConvex,g,sohs] = NCisConvex0(f,precision) checks if the polynomial f is convex, i.e., if its second directional derivative is a sum of hermitian squares.


f is an NCpoly representing a polynomial.

With precision we can set the smallest value that is considered to be nonzero in numerical calculations; if the command is called without it, we assume the precision set with the command NCsetPrecision or the value set in NCparam.m.


isConvex equals 1 if the polynomial f is convex and 0 otherwise

g is an NCpoly representing the second derivative of the polynomial f

sohs is a SOHS decomposition for the polynomial g if the polynomial f is convex

possible usage:

NCisConvex0(f), NCIsConvex0(f,precision)


>> [isConvex,g,sohs]=NCisConvex0(2*x^2-x*y-y*x+y^2)

isConvex = 1

g = 4*h1^2-2*h1*h2-2*h2*h1+2*h2^2

sohs = 2*h1-h2