I am interested in solving a least-squares solution of the form $$ \operatorname{argmin}_X \| A - BX - CXD \|_F^2 $$
for large (rank in hundreds to thousands) matrices $A,B,C,D,X$
I know this is possible if I treat $X$ as a vector, but the Kronecker product $\operatorname{kron}(I,B)+\operatorname{kron}(D^T,C)$ is huge.
Is there an easier way?
I am initially interested in a Matlab solution, but one that I can migrate into c++.
edit... So this looks is related to the Sylvester Equation, but I cannot see how to map my problem to AX+XB=C, at least not without assumptions about the Spans of the matrices.
The problem is given by:
$$ \arg \min_{X} f \left( X \right) = \arg \min_{X} \left\| A - B X - C X D \right\|_{F}^{2} = \arg \min_{X} \left\| B X + C X D - A \right\|_{F}^{2} $$
The derivative is given by:
$$ \frac{d}{d X} f \left( X \right) = 2 {B}^{T} \left( B X + C X D - A \right) + 2 {C}^{T} \left( B X + C X D - A \right) {D}^{T} $$
Now you can use Gradient Descent (I'm not sure what's the right way to solve the vanishing point of the gradient directly).