$A $, $ C$ $(n,n)$ are symmetric PSD matrices, $B$ is PD symmetric matrix, and $H_i$ $\; $ $(i=[1,m])$ represent $ m $ complex matrices. $H_i$ are all one rank matrix

Our objectif is to find PSD matrix X that enable:

$A\sum\limits_{i = 1}^{m - 1} {{H_i}(B + X){H_i} + A(X + B) + {H_m}(B + X) = C}$


1 Answer 1


The matrix variable $X$ only appears linearly (affinely), so this can be formulated and solved as a (convex) Linear Semidefinite optimization feasibility problem. Unless the solver runs into numerical difficulties (if problem is badly conditioned), it should either return a solution, or state that the problem is infeasible (no solution) exists, within the solver tolerances.

Here is how to formulate it under YALMIP under MATLAB, and send it to the solver MOSEK (other SDP solvers such as SeDuMi or SDPT3 could be called instead).

% Code assumes the matrices H_i are in a 3-D array, with 3rd dimension being index i
X = sdpvar(n,n) % declares X as a symmetric n by n matrix variable
Constraint = [X >= 0] % constrains X to be PSD
Sum = zeros(n); % initialize Sum to the matrix of zeros
for i 1:m-1
  Sum = Sum + H(:,:,i)*(B+X)*H(:,:,i);
Constraint = [Constraint, A*Sum + A*(X+B)+H(:,:,m)*(B+X) == C]; % appends the matrix equality constraint
optimize(Constraint,[],sdpsettings('solver','mosek')) % Sends the problem to the solver
value(X) % The matrix X returned by the solver which solves the problem

The code in CVX (under MATLAB) would be similar. And CVXPY (under Python) not all that different.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.