MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Multiplying Elements of arrays: Inner product

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68525] Re: Multiplying Elements of arrays: Inner product
  • From: "Norbert Marxer" <marxer at mec.li>
  • Date: Wed, 9 Aug 2006 04:18:26 -0400 (EDT)
  • References: <eb9p9g$t1m$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi

Your last line does not work, because the Dot (.) operator works on
vectors, matrices and tensors but not on numbers. Use your vectors and
matrix to do what you want: e.g.

     ef + cd.ab

Or if you want to use your Do loop, replace the Dot (.) operator by the
Times operator (empty space or *): e.g.

     Do[ef[[i]] = ef[[i]] + cd[[i, k]] ab[[k]], {i, 1, 3}, {k, 1, 3}]

Best Regards
Norbert Marxer
www.mec.li


Gopinath Venkatesan wrote:
> I have to dot multiply cd (3x3 matrix) by ab (3x1 column vector). Also I defined values for the first row and the diagonal elements of cd matrix, as well as defined the column vector ab with values. Now ab = {1, 2, 3}, and cd = {{1, 2, 3}, {b[2,1], 1, b[2,3]}, {b[3,1], b[3,2], 1}}.
>
> I expect the ef to be {14, 2+b[2,1]+3b[2,3], 3+b[3,1]+2b[3,2]} column vector. But it returns the first element in unevaluated form as 1.1+2.2+3.3. Why is this so? How to make it evaluate them? Thanks for the suggestions. Please see below for my example.
>
> ab = Array[a, 3];
> cd = Array[b, {3, 3}];
> ef = Array[c, 3];
> Do[cd[[i, i]] = 1, {i, 1, 3}];
> cd[[1, 2]] = 2;
> cd[[1, 3]] = 3;
> Do[ab[[i]] = i, {i, 1, 3}];
> Do[ef[[i]] = 0, {i, 1, 3}];
> Do[ef[[i]] = ef[[i]] + cd[[i, k]].ab[[k]], {i, 1, 3}, {k, 1, 3}];
> 
> Gopinath


  • Prev by Date: Re: Multiplying Elements of arrays: Inner product
  • Next by Date: Re: Multiplying Elements of arrays: Inner product
  • Previous by thread: RE: Multiplying Elements of arrays: Inner product
  • Next by thread: Re: Multiplying Elements of arrays: Inner product