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