HP Forums

Full Version: HP-49G Vector-Matirx Multiplication
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

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.


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.


Edited: 8 Feb 2006, 11:01 a.m.

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.


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

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


-- KS

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] <sto> A (1 row x 3 columns)

[[1 2 3]
[1 2 3]
[1 2 3]] <sto> 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 --

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

[ 1 2 3 ]
is a column vector,


[[ 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.