# find a PSD matrix that that verify matrices sum of equality

$$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}$$

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);
end
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.