RE: Alternative to defining 'operator' function?
- To: mathgroup at smc.vnet.net
- Subject: [mg47559] RE: [mg47505] Alternative to defining 'operator' function?
- From: "David Park" <djmp at earthlink.net>
- Date: Fri, 16 Apr 2004 05:20:24 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hywel, What about... Rest@FoldList[Dot[#2, #1] &, v, {R1, R2, R3, R4}] {R1.v, R2.R1.v, R3.R2.R1.v, R4.R3.R2.R1.v} David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Owen, HL (Hywel) [mailto:H.L.Owen at dl.ac.uk] To: mathgroup at smc.vnet.net Hi folks, 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? Thanks, Hywel