0
$\begingroup$

How to calculate $G^{-1}$ efficiently when $G$ is a large matrix knowing that:

\begin{eqnarray} G=I⊗A + A⊗I \end{eqnarray}

Or since i'm using $G^{-1}$ to multiply by some other matrix, how to find $X$ from $G.X = B$.

Of course we can just solve the standard equation $A.x = b$ what I was wondering is if there is a way to exploit the special structure that come from the kronecker multiplication with the identity matrices to solve it more efficiently.

\begin{eqnarray} (G_1 + G_2).X =B \end{eqnarray}

Where $G_1 = I⊗A$ and $G_2 = A⊗I$

If you have any ideas please let me know, thanks.

$\endgroup$
3
  • 1
    $\begingroup$ $GX = B$ is equivalent to the Lyapunov equation, see, e.g. siam.org/books/textbooks/OT91sample.pdf $\endgroup$ Commented Oct 25, 2016 at 14:36
  • $\begingroup$ $GX=B$ is also a finite difference discretization of Poisson's equation, so if there were a simple way, it would be known to this community. I doubt, there is… Probably ask on scicomp.stackexchange. $\endgroup$
    – Dirk
    Commented Oct 25, 2016 at 14:50
  • $\begingroup$ just to add another search keyword to this, $G=A\oplus A$ is a nice looking Kronecker sum $\endgroup$
    – rych
    Commented Oct 30, 2016 at 6:18

1 Answer 1

1
$\begingroup$

Thanks for the help, indeed it is similar to the Lyapunov equation. Although for my case, the dimensions of $X$ and $B$ can be different from those of $G$ (that is: not square matrices, but of compatible dimensions).

But I can just solve the Lyapunov equation for each column of $B$ at a time and build my solution in that way (inside a loop). As such I don't even need to build the full matrix $G$ and can work with only the smaller ones $A$ and $B$.


\begin{eqnarray} (I⊗A+A⊗I).X = B \end{eqnarray}

$X,B \in \Re^{m \times n}$ and $(I⊗A+A⊗I) \in \Re^{m.m \times m.m}$

let $y = X(:,j)$ and $b = B(:,j)$ with $j = 1, 2 ... n$ (i.e. the columns of $X$ and $B$)

$v = (I⊗A+A⊗I).y \Leftrightarrow v = (I⊗A+A⊗I).vec(y)$

Knowing that: $(A⊗B).vec(X) = vec(BXA^T)$, the previous expression can be transformed into $v = vec(AY + YA^T) $ or $V = AY + YA^T$

Thus we obtain the Lyapunov equation $AY + YA^T - V = 0$ or $AY + YA^T + \widetilde V = 0$

Now we set $\widetilde V = reshape(-b, m, m)$ (i.e. we change the vector $b$ into a matrix of dimensions $m \times m$) and solve the previous Lyapunov equation.

Finally $X(:,j) = vec(Y)$


Maybe there is a more straightforward way but this seems to work well for me now.

$\endgroup$
2
  • 2
    $\begingroup$ This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - From Review $\endgroup$ Commented Oct 25, 2016 at 16:16
  • $\begingroup$ I edited the previous comment Dag $\endgroup$
    – ffar
    Commented Oct 25, 2016 at 17:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .