Re: Alternative to defining 'operator' function?
- To: mathgroup at smc.vnet.net
- Subject: [mg47554] Re: Alternative to defining 'operator' function?
- From: bobhanlon at aol.com (Bob Hanlon)
- Date: Fri, 16 Apr 2004 05:20:19 -0400 (EDT)
- References: <c5leel$bit$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Rest[FoldList[#2.#1&, v, {R1, R2, R3}]]
{R1.v, R2.R1.v, R3.R2.R1.v}
Bob Hanlon
In article <c5leel$bit$1 at smc.vnet.net>, "Owen, HL (Hywel)" <H.L.Owen at dl.ac.uk>
wrote:
<< I often have programming problem where I'd like to calculate a set of dot
products, e.g. applying a list of square matrices {R1,R2,R3...} to a vector
v to obtain:
{R1.v,R2.R1.v,R3.R2.R1.v,...}
or other functions like that.
The method I've been using is to define an 'operator' function, e.g.
DotOperator[M_] := Dot[M, #] &
Then we have:
In: DotOperator[R][v]
Out: R.v
as wanted, so that we can define a ComposeList as
In: Rest[ComposeList[DotOperator[#] & /@ {R1, R2, R3}, v]]
Out: {R1.v, R2.R1.v, R3.R2.R1.v}
to obtain the result we want.
Is there a simpler way than this that doesn't involve defining functions
like DotOperator?