Re: Multiplying Elements of arrays: Inner product
- To: mathgroup at smc.vnet.net
- Subject: [mg68515] Re: Multiplying Elements of arrays: Inner product
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 9 Aug 2006 04:17:58 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <eb9p9g$t1m$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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}];
Why don't you use directly the dot product function?
cd = {{1, 2, 3}, {b[2, 1], 1, b[2, 3]}, {b[3, 1], b[3, 2], 1}};
ab = {1, 2, 3};
cd . ab
-->
/ 14 \
! !
! 2 + b[2, 1] + 3 b[2, 3] !
! !
\ 3 + b[3, 1] + 2 b[3, 2] /
HTH,
Jean-Marc