Re: NestListEffects function not working in 6.0
- To: mathgroup at smc.vnet.net
- Subject: [mg77064] Re: NestListEffects function not working in 6.0
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 2 Jun 2007 04:19:03 -0400 (EDT)
- References: <f3ofsh$p6j$1@smc.vnet.net>
Hi,
a) you post code to a news group that is not written by you
and I would expect, that this violate the copyright of the
authors
b) your mail client has corrupted the code listing and
=E2=86=
=92
the inserted = characters have destroyed the code.
c) when you re-post the code, it would be fine, when you can
append an example of the usage, the result you expect and
the result that came out ..
Regards
Jens
Jon Davis 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]
> ];
>