NCSOStoolsdemo - Nonnegativity on nc ball and nc polydisc and extracting corresponding minimizers
%**************************************************************************
% Nonnegativity on nc ball and nc polydisc and extracting corresponding *
% minimizers *
%**************************************************************************
% -------------------------------------------------------------------------
% First we construct some symbolic noncommuting variables and some
% polynomial
% -------------------------------------------------------------------------
>> NCvars x y
>> f = 2 - x^2 + x*y^2*x - y^2;
% -------------------------------------------------------------------------
% We can compute the optimal value on the nc ball
% -------------------------------------------------------------------------
>> NCminBall(f)
***** NCSOStools: module NCminBall started *****
Number of linear constraints: 58.
Starting SDP solver ...
...
Residual norm: 6.3137e-015
ans = 1.0000
% -------------------------------------------------------------------------
% Similarly we can compute the optimal value on the nc polydisc
% -------------------------------------------------------------------------
>> NCminCube(f)
***** NCSOStools: module NCminCube started *****
Number of linear constraints: 67.
Starting SDP solver ...
...
Residual norm: 6.4065e-013
ans = 1.0872e-011
% -------------------------------------------------------------------------
% Together with the optimal value opt we can also return a certificate for
% positivity of f-opt for example on nc ball (and similarly on nc
% polydisc), i.e., a sohs decomposition with weights for f-opt.
% -------------------------------------------------------------------------
>> [opt,g,decom_sohs,decom_ball] = NCminBall(f)
***** NCSOStools: module NCminBall started *****
Number of linear constraints: 58.
Starting SDP solver ...
...
Residual norm: 6.3137e-015
opt = 1.0000
g = 1-x^2-y^2
decom_sohs = 0
0
-2e-008*x^2
-3e-008*x
-5e-008*x*y+1e-008*y^2
-1e-008+1e-008*x*y+5e-008*y^2
y*x
decom_ball = 1
2e-008*x
5e-008*y
% -------------------------------------------------------------------------
% NCminBall (and NCminCube) has many optional parameters. For example we
% can set the smallest value that is considered to be nonzero in numerical
% calculations.
% -------------------------------------------------------------------------
>> params.precision=1e-6;
>> [opt,g,decom_sohs,decom_ball] = NCminBall(f,params)
***** NCSOStools: module NCminBall started *****
Number of linear constraints: 58.
Starting SDP solver ...
...
Residual norm: 6.3137e-015
opt = 1.0000
g = 1-x^2-y^2
decom_sohs = 0
0
0
0
0
0
y*x
decom_ball = 1
0
0
% -------------------------------------------------------------------------
% Let's check the obtained sohs decomposition with weights for f-opt.
% -------------------------------------------------------------------------
>> f-opt
ans = 1-x^2+x*y^2*x-y^2
>> decom_sohs'*decom_sohs + decom_ball'*g*decom_ball
ans = 1-x^2+x*y^2*x-y^2
% -------------------------------------------------------------------------
% We can also compute minimizers to attain optimal value on nc ball.
% -------------------------------------------------------------------------
>> [X,fX,eig_val,eig_vec]=NCoptBall(f)
***** NCSOStools: module NCoptBall started *****
***** NCSOStools: module GNS started *****
found 5 linearly independent vectors ...
using corresponding columns of a matrix ...
using corresponding words in a cell of monomials ...
constructing final matrices ... done.
***** NCSOStools: module GNS completed *****
Evaluating X ..... completed.
*** Minimum eigenvalue for f is 1.000000. ***
WARNING: Optimizers are numerically slightly out of the ball!
Maximal eigenvalue: 1.000000!
***** NCSOStools: module NCoptBall completed with warnings! *****
X = Columns 1 through 8
-0.0000 0.7107 -0.0000 0.0000 0.0000 0.7107 0.0000 -0.0000
-0.0000 0.0000 0.7035 0.0000 0.0000 0.0000 -0.0000 0.0000
Columns 9 through 16
0.3536 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.4946 0.0000
-0.0000 0.0000 0.7035 0.0000 0.0000 -0.3588 0.0000 0.0000
Columns 17 through 24
0.3536 0.0000 0.0000 0.0000 0.0000 -0.0000 0.4946 0.0000
-0.0000 -0.3588 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
Column 25
0.0000
0.0000
fX = 1.0000 -0.0000 -0.0000 0.0011 -0.0000
-0.0000 1.5091 -0.0000 -0.0000 -0.0000
-0.0000 -0.0000 1.1317 -0.0000 -0.0000
0.0011 -0.0000 -0.0000 1.7462 0.0000
-0.0000 -0.0000 -0.0000 0.0000 1.9080
eig_val = 1.0000 0 0 0 0
0 1.1317 0 0 0
0 0 1.5091 0 0
0 0 0 1.7462 0
0 0 0 0 1.9080
eig_vec = -1.0000 -0.0000 -0.0000 -0.0015 -0.0000
-0.0000 0.0000 1.0000 0.0000 -0.0000
-0.0000 1.0000 -0.0000 0.0000 -0.0000
0.0015 0.0000 0.0000 -1.0000 0.0000
-0.0000 0.0000 0.0000 0.0000 1.0000
% It means that with A=reshape(X(1,:),5,5) and B=reshape(X(2,:),5,5) we get
% f(A,B) as fX with minimal eigenvalue eig_val(1,1) (which is also an
% optimal value on nc ball) and corresponding eigenvector eig_vec(:,1).
% -------------------------------------------------------------------------
% Similarly we can also compute minimizers to attain optimal value on nc
% polydisc).
% -------------------------------------------------------------------------
>> [X,fX,eig_val,eig_vec]=NCoptCube(f)
***** NCSOStools: module NCoptCube started *****
***** NCSOStools: module GNS started *****
found 4 linearly independent vectors ...
using corresponding columns of a matrix ...
using corresponding words in a cell of monomials ...
constructing final matrices ... done.
***** NCSOStools: module GNS completed *****
Evaluating X ..... completed.
*** Minimum eigenvalue for f is 0.000000. ***
***** NCSOStools: module NCoptCube completed *****
X = Columns 1 through 8
-0.0000 1.0000 0.0000 0.0000 1.0000 0.0000 -0.0000 -0.0000
0.0000 -0.0000 1.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000
Columns 9 through 16
0.0000 -0.0000 -0.0000 0.7343 0.0000 -0.0000 0.7343 0.0000
1.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
fX = 0.0000 -0.0000 0.0000 -0.0000
-0.0000 2.0000 0.0000 -0.0000
0.0000 0.0000 0.4608 -0.0000
-0.0000 -0.0000 -0.0000 2.0000
eig_val = 0.0000 0 0 0
0 0.4608 0 0
0 0 2.0000 0
0 0 0 2.0000
eig_vec = 1.0000 0.0000 0.0000 0.0000
0.0000 -0.0000 -1.0000 0.0000
-0.0000 1.0000 -0.0000 0.0000
0.0000 0.0000 -0.0000 -1.0000
% It means that with A=reshape(X(1,:),5,5) and B=reshape(X(2,:),5,5) we get
% f(A,B) as fX with minimal eigenvalue eig_val(1,1) (which is also an
% optimal value on nc polydisc) and corresponding eigenvector eig_vec(:,1).