2

I have the following system, where I want to find the solution set consisting of real, nonzero, symmetric positive semidefinite matrices $G$ and $DD$ such that the block matrix $X$ defined below is symmetric and positive semidefinite. I am not sure how to really impose these requirements (for example when I use Solve[] or Reduce[]). Any suggestion?

A = {{1/2, 0}, {4/3, 1/2}};
U = {{1, -1/2}, {1, -5/6}};
B = {{19/16, 9/16}, {1/4, 3/4}};
V = {{1, -3/4}, {0, 0}};
DD = {{d11, d12}, {d21, d22}};
G = {{g11, g12}, {g21, g22}};
X11 = DD . A + Transpose[A] . DD - Transpose[B] . G . B;
X12 = DD . U - Transpose[B] . G . V;
X21 = Transpose[U] . DD - Transpose[V] . G . B;
X22 = G - Transpose[V] . G . V;
X = {{X11, X12}, {X21, X22}};

Edit

I tried the following, but it produced a trivial solution. I understand that it solves the problem but how can I get a nontrivial solution?!

A = {{1/2, 0}, {4/3, 1/2}};
U = {{1, -1/2}, {1, -5/6}};
B = {{19/16, 9/16}, {1/4, 3/4}};
V = {{1, -3/4}, {0, 0}};
DD = {{d11, d12}, {d21, d22}};
G = {{g11, g12}, {g21, g22}};
X11 = DD . A + Transpose[A] . DD - Transpose[B] . G . B;
X12 = DD . U - Transpose[B] . G . V;
X21 = Transpose[U] . DD - Transpose[V] . G . B;
X22 = G - Transpose[V] . G . V;
X = {{X11, X12}, {X21, X22}};
Solve[{X == Transpose[X], X >= 0, DD == Transpose[DD], DD >= 0, 
  G == Transpose[G], G >= 0}, {g11, g12, g21, g22, d11, d12, d21, 
  d22}, Reals]

{{g11 -> 0, g12 -> 0, g21 -> 0, g22 -> 0, d11 -> 0, d12 -> 0, d21 -> 0, d22 -> 0}}

Rudinberry
  • 315
  • 1
  • 5
  • 1
    Some algorithms for NNLS are discussed in my answer on https://mathematica.stackexchange.com/questions/269727/nonnegative-least-squares-algorithm-nnls/269787#269787 – Alex Trounev Dec 22 '22 at 02:15
  • @Manx Are you sure X>=0 impose PSD? – Rudinberry Dec 22 '22 at 13:30
  • See Theorem about eigenvalues of PSD matrices. The symmetric matrix A is PSD if and only if the eigenvalues of A are non-negative. – Alex Trounev Dec 22 '22 at 17:43
  • Maybe I could do that, but I tried what @Manax suggested, and it gave the trivial solution. I have added it to the post. – Rudinberry Dec 22 '22 at 21:26
  • 1
    A few things: 1) Regarding your block matrix X = {{X11, X12}, {X21, X22}}; you need to use X = ArrayFlatten[{{X11, X12}, {X21, X22}}] to make it a proper matrix. 2) You can make both DD and G symmetric to begin with e.g replace them with DD = {{d1, d2}, {d2, d3}} and G = {{g1, g2}, {g2, g3}}; 3) If you do this you'll find that X == Transpose[X] is automatically true. So it only remains to prove that the eigenvalues of all three matrices are all non-negative. – flinty Dec 22 '22 at 21:44
  • @Rudinberry Solve has no algorithm to solve optimization problem. Try some of NNLS algorithms linked above. – Alex Trounev Dec 23 '22 at 04:32
  • 2
    It seems as though the maximum of the first eigenvalue of X is zero and it always takes negative values. I can't prove this because the eigenvalues take a very complicated Root form which will not Reduce, but numerically it looks worrying: evalsX=Eigenvalues[X]; NMaximize[evalsX[[1]], vars] - and try the various methods . Having also done hours of FindInstance too I'm going out on a limb and saying your problem has no solution except the trivial one. – flinty Dec 23 '22 at 13:00

1 Answers1

1

Your system is homogenous so DD = G = 0 is a solution, as you have already noticed. It also seems to be the only solution. Indeed

X = ArrayFlatten[{{X11, X12}, {X21, X22}}];
vars = Join[Variables[G], Variables[DD]];
SemidefiniteOptimization[0, 
    VectorGreaterEqual[{X, 0}, {"SemidefiniteCone", 4}] && 
    VectorGreaterEqual[{G, 0}, {"SemidefiniteCone", 2}] && 
    VectorGreaterEqual[{DD, 0}, {"SemidefiniteCone", 2}] && 
    Tr[X] == 1, 
    vars, 
    {"PrimalMinimumValue", "PrimalMinimizer"}
]

detects the problem to be infeasible if you ask for the trace of X to be different from zero. No luck either if you ask for the trace of G or DD to be different from zero instead.

For the above to work change

DD = {{d11, d12}, {d12, d22}};
G = {{g11, g12}, {g12, g22}};

into symmetric matrices.

Mauricio de Oliveira
  • 2,001
  • 13
  • 15