Re: Multiplying Elements of arrays: Inner product

• To: mathgroup at smc.vnet.net
• Subject: [mg68518] Re: [mg68497] Multiplying Elements of arrays: Inner product
• From: Sseziwa Mukasa <mukasa at jeol.com>
• Date: Wed, 9 Aug 2006 04:18:05 -0400 (EDT)
• References: <200608081028.GAA29602@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```On Aug 8, 2006, at 6:28 AM, 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}];

Your problem is in the following line

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

cd[[i,k]] and ab[[k]] are scalars but you are trying to take their
inner product with .

The following would work

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

but it is a lot easier just to use Mathematica's inner product

In[26]:=
ab={1,2,3};
cd={{1,2,3},{b[2,1],1,b[2,3]},{b[3,1],b[3,2],1}};
ef=cd.ab

Out[28]=
{14,2+b[2,1]+3 b[2,3],3+b[3,1]+2 b[3,2]}

Regards,

Ssezi

```

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