MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: updating a simulation within Manipulate.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130089] Re: updating a simulation within Manipulate.
  • From: W Craig Carter <ccarter at MIT.EDU>
  • Date: Fri, 8 Mar 2013 16:46:28 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <20130308035142.51AD66799@smc.vnet.net> <5139E091.8000909@idi.ntnu.no>

Thanks Waclwaw,
That is informative; I'm going to have to read the docs about ScheduledTask[]s.

My "real" example is quite a bit more involved---I have a Manipulate buried inside a Manipulate.  I am not looking at random walks per se, but that was an example I cooked up which was simple enough to illustrate my question.  I think this is the preferred method for asking questions in the group? (As long as one doesn't make the silly typos that I am prone to..).

Thanks, Craig


W Craig Carter
Professor of Materials Science, MIT



On Mar 8, 13, at 7:58 AM, Waclaw Kusnierczyk wrote:

> Hi Craig,
>
> Looks like you want to dynamically show the progress of a random walk. Rather than directly modify your solution, I'd suggest to have a look at an alternative using scheduled tasks and buttons.
>
> An example of random walk code:
>
> step[bias_] :=
> Through[{Cos, Sin}[RandomVariate[NormalDistribution[bias, 1]]]]
> next[state_, bias_] :=
> state + step[bias]
> extend[path_, bias_] :=
> Append[path, next[Last@path, bias]]
>
> An example of random walk plot code:
>
> show[path_] :=
> Show[
>  ListLinePlot[path,
>   PlotMarkers -> {Graphics[Circle[{0, 0}, 1]], 0.015},
>   Axes -> None,
>   AspectRatio -> 1,
>   PlotRange -> {{-10, 10}, {-10, 10}}],
>  Graphics[{Red, Point[Last@path]}]]
>
> An example of dynamic random walk plot:
>
> Module[{path = {{0, 0}}, walk, bias = 0},
> Manipulate[
>  show[path],
>  Column@{
>    Row@{
>      Button["start", Quiet@RemoveScheduledTask@walk;
>       walk = RunScheduledTask[path = extend[path, bias], 0.5]],
>      Button["stop", StopScheduledTask[walk]],
>      Button["reset", path = {{0, 0}}]},
>    AngularGauge[Dynamic@bias, {-\[Pi], \[Pi]},
>     ScaleOrigin -> {-\[Pi], \[Pi]}]}]]
>
> Best,
> vQ
>
>
> On 03/08/2013 04:51 AM, W Craig Carter wrote:
>>
>> I *think* I've asked this question before, but I can't find it on mathgroup. In any case, I don't know the answer now.
>>
>> Here is a simple example of a Manipulate that updates a graphic as long as a boolean is true.  This method seems like a kludge to me---is it? If so, what would be a better way to do this.
>>
>> This is a constructed example, the real case I am looking at is much more involved; but kudos to anyone who can make a reasonable facsimile of their signature by adjusting the random walker's bias....
>>
>> randomStep[bias_, stepList_] :=
>>  Module[{angle = RandomVariate[NormalDistribution[bias, 1]]},
>>   Join[stepList, {Last[stepList] + {Cos[angle], Sin[angle]}}]]
>>
>> walkerGraphic[stepList_, range_] :=
>>  Graphics[GraphicsComplex[stepList, Disk /@ Range[Length[stepList]]],
>>   PlotRange -> range {{-1, 1}, {-1, 1}}]
>>
>> DynamicModule[
>>  {walkerPath = {{0, 0}}},
>>  Manipulate[
>>   If[keepWalking,  (*  kludge warning---testing for If[True...] seems inefficient   *)
>>    walkerPath = randomStep[bias, walkerPath]
>>    ];
>>   If[reset,
>>    reset = False; keepWalking = False;
>>    walkerPath = {{0, 0}}
>>    ];
>>   walkerGraphic[walkerPath, range],
>>   {{keepWalking, False}, {True, False}},
>>   {{reset, False}, {True, False}},
>>   Delimiter,
>>   {{range, 20}, 0, 100},
>>   {{a, 0}, -Pi, Pi,
>>    AngularGauge[##, ImageSize -> 160 ,
>>      ScaleOrigin -> {{-4 Pi, 4 Pi}, 1}] &}
>>   ]
>>  ]
>>
>>
>>
>> W Craig Carter
>> Professor of Materials Science, MIT
>





  • Prev by Date: Re: Fixed Typo in Code---> Re: updating a simulation
  • Next by Date: Re: updating a simulation within Manipulate.
  • Previous by thread: Re: updating a simulation within Manipulate.
  • Next by thread: Re: updating a simulation within Manipulate.