Re: Multiplying a vector over multiple vectors
- To: mathgroup at smc.vnet.net
- Subject: [mg91183] Re: Multiplying a vector over multiple vectors
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Fri, 8 Aug 2008 07:17:10 -0400 (EDT)
On 8/7/08 at 4:42 AM, donabc at comcast.net (Donald DuBois) wrote:
>How does one get a vector to distribute over a list of vectors
>under multiplication?
>For example:
>{{1,2}, {3,4}, {5,6}} times {a,b} should
>equal (under this operation)
>{{a, 2b}, {3a, 4b}, {5a, 6b}}
>If {a,b} is duplicated three times one can use MapThread as in:
>MapThread[Times, {{{1, 2}, {3, 4}, {5, 6}}, {{a, b}, {a, b}, {a,
>b}}}]
>but duplicating {a,b} using Table is very slow when the vectors are
>large (consisting of thousands of elemets).
Try Map instead of MapThread with a pure function. For example,
In[11]:= {a, b} # & /@ {{1, 2}, {3, 4}, {5, 6}}
Out[11]= {{a, 2 b}, {3 a, 4 b}, {5 a, 6 b}}
Something else that works in this case is
In[14]:= List @@@ ({{1, 2}, {3, 4}, {5, 6}}.{a, b})
Out[14]= {{a, 2 b}, {3 a, 4 b}, {5 a, 6 b}}
However, given Mathematica often reorders sums this approach
probably won't give valid results in general