 The Museum of HP Calculators

HP Forum Archive 15

 HP-49G Vector-Matirx MultiplicationMessage #1 Posted by William on 8 Feb 2006, 10:25 a.m. Can someone please tell me why my HP-49G will not multiply a vector [nx1] times a matrix [nxn], but it will multiply a matrix [nxn] times a vector [nx1]? Vector-matrix multiplication is a perfectly valid mathematical operation, but the HP-49G gives me an "Invalid Dimension" error. I know that I can overcome this error by placing the vector in the last row of an [nxn] matrix, but I perform this operation many times for my some of my engineering courses and this process becomes cumbersome, especially during an exam.

 Re: HP-49G Vector-Matrix MultiplicationMessage #2 Posted by Marcus von Cube, Germany on 8 Feb 2006, 10:38 a.m.,in response to message #1 by William William, you need a "horizontal" vector on the left side of a matrix. To create it, just enclose a vector in another pair of brackets. ```2:[ [ 1 2 3 ] ] 1:[ [ 1 0 0 ] [ 0 1 0 ] [ 0 0 1 ] ] ``` This multiplies fine. Marcus Edited: 8 Feb 2006, 11:01 a.m.

 Re: HP-49G Vector-Matirx MultiplicationMessage #3 Posted by Namir on 8 Feb 2006, 2:46 p.m.,in response to message #1 by William When you multiple a vector and a matrix you are really multiplying a row/column matrix with a matrix. Therefore the rule regarding the matrices' dimensions must be obayed. Namir

 Re: HP-49G Vector-Matirx MultiplicationMessage #4 Posted by Chris Dean on 8 Feb 2006, 3:54 p.m.,in response to message #3 by Namir ```You can only multiply matrices A and B if the number columns of A is the same as the number of rows of B. Consider C=AxB then if A is MxN and B is NxP then resultant matrix C is MxP. Cij=sum(Aik*Bkj) where k = 1 to N ```

 Re: HP-49G Vector-Matirx MultiplicationMessage #5 Posted by Karl Schneider on 8 Feb 2006, 9:51 p.m.,in response to message #1 by William William -- As others explained previously, the result of matrix multiplication A*B includes the set of all dot products of the rows of A with the columns of B. The matrices must be dimensioned accoringly: the number of columns of A must equal the number of rows of B. A column vector is a matrix with only one column; a row vector is a matrix with only one row. Also: In general, matrix multiplication is not commutative, even if both orders of multiplication are defined under the rules. If one wants to left-multiply a column vector by a matrix, the column vector must usually be transposed as a row vector. The result will be dimensioned as a row vector. There is a built-in function ATB on the HP-15C for that purpose. In Matlab, it would be A'*B. A useful theorem: (A*B)T = BT*AT Regards, -- KS

 Re: HP-49G Vector-Matirx MultiplicationMessage #6 Posted by William on 9 Feb 2006, 2:27 p.m.,in response to message #5 by Karl Schneider Thank you all for your input. I may not have made my problem clear in my previous message. So, I will try again. This is what I am doing. [1 2 3] A (1 row x 3 columns) [[1 2 3] [1 2 3] [1 2 3]] B (3 rows x 3 columns) The number of columns in A i equal to the number of rows in B. I am defining these matrices via MTRW. The operation AxB should yield...[6 12 18]...however, my HP-49G says..."Invalid Dimension". The calculator will calculate BxA = [14 14 14]; THIS operation should give me an error message. Isn't this the opposite of what I should be getting? Do I have some obscure flag un-checked? Thank you, William

 Re: HP-49G Vector-Matrix MultiplicationMessage #7 Posted by Karl Schneider on 10 Feb 2006, 1:05 a.m.,in response to message #6 by William William -- You're in luck -- I also happen to have an HP-49G, so was able to try your example. (I should point out that in RPL, it's {data} 'A' STO, not {data} STO 'A'...) I follow the example -- it looks to me like a row-vector A and a square matrix B. The vector entered with a single set of brackets on one line even looks like a row vector in the Matrix Editor. But, when multiplying them with 'A' above 'B' in the stack, I get the same dimension error. Marcus von Cube's post has the fix: Make 'A' a true row vector by enclosing it within an extra set of brackets. ("TRAN" will also transpose a matrix or vector on the 49G.) I noticed that, for whatever reason, the transpose made no difference in the vector's layout in Matrix Editor. [14 14 14]T is the product B*AT -- i.e., the matrix times the column vector. I struggled to get my 48G to do what I wanted in this example, also. How counterintuitive! This deepens my appreciation for the HP-15C and HP-42S, both of which I would trust far more than any RPL model to use on an important exam. -- KS

 Re: HP-49G Vector-Matrix MultiplicationMessage #8 Posted by Marcus von Cube, Germany on 10 Feb 2006, 3:17 a.m.,in response to message #7 by Karl Schneider ```[ 1 2 3 ] ``` is a column vector, while ```[[ 1 2 3 ]] ``` is a row vector. The strange thing is that matrix editor doesn't seem to know the difference. Or does he? Function key F2 toggles the vector mode. I checked it on the 48S, 48G and 49G+, all three have this toggle. The 49G+ uses a single boldface pair of brackets in stack display to denote a row vector while the older calculators keep the double pair of brackets. I assume the RPL designers on the 28C/S wanted the more common vector type (column vector) to have the simpler notation. The matrix editor came into play much later. Marcus Go back to the main exhibit hall