Re: NestListEffects function not working in 6.0
- To: mathgroup at smc.vnet.net
- Subject: [mg77109] Re: [mg77042] NestListEffects function not working in 6.0
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Mon, 4 Jun 2007 03:44:31 -0400 (EDT)
- References: <7485188.1180896207467.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
An example would be nice. What kind of inputs and outputs demonstrate the
problem?
Bobby
On Fri, 01 Jun 2007 01:46:24 -0500, Jon Davis <jdavis at bus.wisc.edu> wrote:
> I'm coming back to Mathematica after a couple of years and I just
> upgraded to 6.0. I have relied on a function for quite awhile that I
> got from a book by Richard Gaylord and Louis D'Andria titled
> "Simulating Society". The function is very useful for agent-based
> simulations and for some reason, it doesn't seem to work in version
> 6.0... No incompatibilities are identified by the version advisory
> scanner, so I'm not sure what to do. Can anyone help? Functions follow .
> Any help is deeply appreciated!!! I can provide a notebook with example
> usage on request.
>
> NestListEffects::usage = "NestListEffects[f, expr, n, ReturnValues
> =E2=86=
> =92
> {g, k}] returns a list of every kth element of NestList[f, expr, n]
> after the application of g. NestListEffects[f, expr, n, SideEffects
> =E2=86=
> =92
> {{g1, k1}, {g2, k2},...}] applies gi after every ki steps, but does not
> effect return values.";
>
> ReturnValues::usage = "ReturnValues is an option to NestListEffects
> that determines what is returned and how often.";
>
> SideEffects::usage = "SideEffects is an option to NestListEffects that
> applies functions without effecting return values. The option
> SideEffects does not affect return values";
>
> Options[NestListEffects]={ReturnValues-> {#&, 1}, SideEffects-> {}};
>
> NestListEffects[f_, expr_, n_, opts___]:= If[({ReturnValues,
> SideEffects} /. {opts} /. Options[NestListEffects]) === {{#&, 1}, {
> }},
> NestList[f, expr, n],
> (* else *)
> Module[{c = 0, lis = {}, side, ret}, {ret, side} = {ReturnValues
> ,
> SideEffects} /. {opts} /. Options[NestListEffects];
> If[side === {}, side = {{Null, Infinity}}];
> Nest[( If[Mod[c, ret[[-1]]] === 0, lis = Join[lis, {First[ret
> ][#, c]}]];
> Table[If[Mod[c, side[[i, -1]]] === 0, side[[i, 1]][#, c]],
> {i,
> Length[side]}];
> c++;
> #)&[f[#]]&, expr, n];
> lis]
> ];
>
>
--
DrMajorBob at bigfoot.com