email@example.com wrote: > hello, > > I have a system of equations that can be written in matrix vector > notation as follows: > > A(1*n)=B(1*m)*C(m*n) > > In a book i saw that B = A* C' * (C*C')^(-1) > > However, i do not recall how to get to that solution. can anybody help > me with this?
It's the least-squares solution. I'm used to working with column vectors but let me see if I can do this right.
Look for the B that minimizes || A - BC ||^2 = (A-BC)(A-BC)' = AA' - AC'B' - BCA' + BCC'B'
Note: AC'B' is a scalar so equals its transpose BCA', || A - BC ||^2 = A'A - 2AC'B' + BCC'B'
Now take the gradient of this with respect to B and set it =0. -2AC' + 2BCC'
B(CC') = (AC')
This is a full-rank linear system, and its solution is
B = (AC')(CC')^-1
Note that there may be no B which exactly solves your original problem A = BC. This B is the one which minimizes the difference between left and right hand sides in the sense of the Euclidean norm.