# NCcycOpt

description:

[A_new,f_min]=NCcycOpt(f) computes trace minimizers and the trace minimum of the polynomial f whenever the tracial moment matrix corresponding to the polynomial f is flat.

arguments:

f is an NCpoly representing a polynomial.

output:

A_new is a matrix each of whose rows represent a square matrix A_i that is a trace minimizer for f. The matrices A_i are simultaneously block diagonal.

f_min represents the trace minimum of f. Each element in this vector equals the trace of the evaluation of f in equally positioned diagonal blocks consisting of matrices A_i.

possible usage:

NCcycOpt(f)

example:

>> f = 3 + x^2 + 2*x^3 + 2*x^4 + x^6 - 4*x^4*y + x^4*y^2 + 4*x^3*y + 2*x^3*y^2 - 2*x^3*y^3 + 2*x^2*y - x^2*y^2 + 2*x^2*y^3 - 4*x*y + 8*x*y*x*y + 4*x*y^2 + 6*x*y^4 - 2*y + y^2 - 4*y^3 +  2*y^4 + 2*y^6;

>> [A_new,f_min]=NCcycOpt(f)

***** Polynomial has a flat extension *****

A_new =

Columns 1 through 8

-1.0623   -0.0000    0.0902    0.6111   -0.0000   -1.0623   -0.6111    0.0902

-0.3933    0.0000   -0.1295   -0.8770    0.0000   -0.3933    0.8770   -0.1295

Columns 9 through 16

0.0902   -0.6111    0.4582   -0.0000    0.6111    0.0902   -0.0000    0.4582

-0.1295    0.8770    0.6718    0.0000   -0.8770   -0.1295    0.0000    0.6718

f_min = 0.28421477