#1
|
|||
|
|||
Matrix help needed
Im pretty rusty when it comes to matrices, and I was wondering if someone could help me with the following problem... I need it for some code Im writing
given that A*B = C where, A, B and C are all matrices of dimensions in the form: A: (m X n) B: (n X 1) C: (m X 1) (with m, n > 1) is there a QUICK method of determining B, given A and C? Also, it might be important to note that the sum of each of the columns of A is 1, which also means that sum(B) == sum(C). So, take, for example: [0.8 0.6 0.4] X [0.4]..=..[0.48] [0.2 0.4 0.6] .. [0.2]......[0.22] .....................[0.1] Is there a quick way to go from (0.48; 0.22), to (0.4, 0.2, 0.1), given that you also know the first matrix Im not really sure how to define 'quick', but assume that what I want to do means that the above operation is carried out thousands of times. Bascially, I dont want to have to row reduce / solve the equation each time. thanks EDIT: m != n |
#2
|
|||
|
|||
Re: Matrix help needed
In general, if n > m as in your example, the problem is underdetermined. You have m equations and n unknowns. In your example, the vector (0.3, 0.4, 0) is also a solution.
On the other hand, if n < m the problem is overdetermined. It may not have a solution. In either case, you must have some criteria for choosing the "best" solution. The methods for solving problems of this type are somewhat complex. Try looking up singular value decomposition. |
#3
|
|||
|
|||
Re: Matrix help needed
Row reduction is the only way to do this kind of operation. I recommend using a TI89 because you can enter the matrix in standard form:
[A|C] and just tell it to perform row reduction. |
#4
|
|||
|
|||
Re: Matrix help needed
if A*B = C, then
A^-1 * A * B = A^-1 * C so B = A^-1 * C |
#5
|
|||
|
|||
Re: Matrix help needed
inverting a matrix is certainly not any easier than row reduction.
|
#6
|
|||
|
|||
Re: Matrix help needed
is it even possible to invert a non square matrix?
I didnt think it was.. but, like I said, Im not that knowledgeable of matrices (also... yeah, it does seem like the only way is to RR it) |
#7
|
|||
|
|||
Re: Matrix help needed
I like Danny's response on this one.
In general non-square matrices do not have inverses. |
#8
|
|||
|
|||
Re: Matrix help needed
sorry I neglected to notice your edit. The fact the matrix is nonsquare makes a great deal of difference, and the answer to your question now mostly depends on how this is being applied.
When m>n there will be a single solution (null being possible), when n>m there will be infinite solutions. For most real applications in the former case (m>n) a row reduction will find B. There is no easy way to row reduce without using a computational device. |
#9
|
|||
|
|||
Re: Matrix help needed
[ QUOTE ]
is it even possible to invert a non square matrix? I didnt think it was.. but, like I said, Im not that knowledgeable of matrices (also... yeah, it does seem like the only way is to RR it) [/ QUOTE ] http://en.wikipedia.org/wiki/Pseudoinverse This problem is generally not solvable when n>m. If m>n, and A has full column rank, you can use a least-squares method where norm(C-AB) is minimized. For a well-conditioned A you can probably just solve the normal equation, but most likely you'll need to use a QR or SVD decomposition. It's pretty easy to automate with python. |
|
|