Solving a linear system of the form C .* (BX) = AX

74 Views Asked by At

I have formed the above problem, which involves a mix between element-wise (Hadamard) multiplication (indicated by ".*") and ordinary matrix multiplication. In this problem I know all of A, B and C but I still have no idea how to solve for X.

Dimensions, if this helps:

  • A = N x N (sparse)
  • B = N x N (sparse)
  • C = N x 1 (not sparse)
  • X = N x 1 (not sparse)

The sparse matrices above are populated only with either 0 (of course), +1, or -1.

Alternatively, the problem can also be stated in the form:

log(C) + log(BX) = log(AX)

In a simpler form of the problem, A and B were so sparse that they had only one entry (+1) per row. I found (clumsily) that I was able to go like this:

log(C) + B * log(X) = A * log(X)

... which is easy enough to solve, and gave the correct solution (I am just doing some modelling, so can check against whatever X I use). However, in the "real" problem, my clumsy attempt to pull A and B outside the log operator does not work out.

Does anyone have any ideas on how I can go about solving this problem? It seems I need either

  • Some fancy method to combine Hadamard and ordinary matrix multiplication
  • Some fancy method to express the logarithm of ordinary matrix multiplication
  • Something else I have no idea about (likely)

Many thanks in advance!

1

There are 1 best solutions below

1
On BEST ANSWER

The Hadamard product of two vectors is the same as the matrix product of one vector with the diagonal matrix of the other vector. Namely $$ C.*(BX) = D_CBX $$ where $$ D_C = \begin{bmatrix} c_1&0&\dots&0\\ 0&c_2&&\vdots\\ \vdots&&\ddots&0\\ 0&\dots&0&c_N \end{bmatrix} $$

Then the equation reduces to $$(D_CB-A)X = 0$$