Message Boards Message Boards

GROUPS:

How to get the result of a multiplication between a matrix and a vector?

Posted 5 years ago
24968 Views
|
8 Replies
|
6 Total Likes
|

I want to get the result of a multiplication between a matrix and a vector, basically I want to do a change of reference frame of a vector, so I cannot perform this operation in mathematica.

A = {{2, 4}, {2, 1}} // MatrixForm
C2 = {{6}, {5}} // MatrixForm
A.C2 (*This does not work*)

I want to get something like this:

{{2, 4}, {2, 1}}.{{6}, {5}} // MatrixForm

Actually I have something more complex, but this is enough to show my problem.

Do you have any suggestion?

8 Replies
Posted 5 years ago

Frank makes an important point. In Mathematica the dot operator is overloaded, and can be matrix multiplication, matrix-vector multiplication,vector-matrix multiplication, or the scalar dot product of vectors, depending on context. If possible, Mathematica also conforms the vectors as needed. For example, a nxm matrix can multiply a m-wide row vector without objection.

I find it helpful to use MatrixForm as follows:

(A={{2,4},{2,1}})//MatrixForm
(C2={{6},{5}})//MatrixForm
(A.C2 )//MatrixForm

In this way, the MatrixForm is applied to the output of the Set (=) function rather than the second argument of Set.

It's also important to recognize that the dot product operator is also the operator for multiplying matrices, which allows some things which are not standard linear algebra.

More simply

In[20]:= {{2, 4}, {2, 1}}.{6, 5}


Out[20]= {32, 17}
Posted 5 years ago

MatrixForm is a print wrapper for display purposes. Don't use it in the definitions, only to display results. Also, it is best to not begin user-defined symbols with upper case, since that can conflict with built-in names.

In[1]:= a = {{2, 4}, {2, 1}};
c2 = {{6}, {5}};
a.c2

Out[3]= {{32}, {17}}

Thanks for your response David Keith, it is very helpful.

Thanks for your explanation. Frank Kampas

If you want to have the result in the form for input to Mathematica functions that expect points to be lists of coordinates, you'd have to do an additional conversion.

Not sure if I'm doing this correctly, but something like this is needed. Here, I just convert column vectors with 2 components. This would have to be extended to the case of row vectors, and generalized to any number of dimensions.

Would it be possible to Mathematica to automatically interpret row and column vectors as simple lists when they were used to pass points to a function, or would this lead to complications?

enter image description here

Attachments:
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract