MathGroup Archive 2013

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

Search the Archive

Re: Fixed Typo in Code---> Re: updating a simulation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130081] Re: Fixed Typo in Code---> Re: updating a simulation
  • From: Bob Hanlon <hanlonr357 at gmail.com>
  • Date: Fri, 8 Mar 2013 06:22:43 -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: <9C229A0A-D12F-4D3E-9B5F-7FA8B918CFE6@mit.edu>

Use of If structure seems reasonable. Recommend that you use a
separate color for the latest point/disk so that the current position
is evident. Other minor changes made.

randomStep[bias_, stepList_] :=
  Module[
   {angle = RandomVariate[
      NormalDistribution[bias, 1]]},
   Join[stepList,
    {Last[stepList] + {Cos[angle], Sin[angle]}}]];

walkerGraphic[stepList_, range_] :=
  Graphics[{
    Gray,
    PointSize[.04],
    Point@Most@stepList,
    Blue,
    Point@Last@stepList},
   PlotRange -> range {{-1, 1}, {-1, 1}}];

DynamicModule[{walkerPath = {{0, 0}}},
 Manipulate[
  If[keepWalking,
   walkerPath = randomStep[bias, walkerPath]];
  walkerGraphic[walkerPath, range],
  Row[{
    Control[
     {{keepWalking, False, "Keep Walking"},
      {True, False}}],
    Spacer[20],
    Button["Reset",
     reset = False;
     keepWalking = False;
     walkerPath = {{0, 0}},
     ImageSize -> Tiny,
     BaseStyle -> {8}]
    }],
  Delimiter,
  {{range, 20, "Range"}, 0, 100},
  {{bias, 0, "Bias"}, -Pi, Pi,
   AngularGauge[##, ImageSize -> 160,
     ScaleOrigin -> {{-4 Pi, 4 Pi}, 1}] &}]]


Bob Hanlon


On Thu, Mar 7, 2013 at 10:47 PM, W Craig Carter <ccarter at mit.edu> wrote:
> On previous message, there is a typo in the example code, please use this instead:
>
> 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},
>   {{bias, 0}, -Pi, Pi,
>    AngularGauge[##, ImageSize -> 160,
>      ScaleOrigin -> {{-4 Pi, 4 Pi}, 1}] &}]]
>
>
>
> W Craig Carter
> Professor of Materials Science, MIT
>
>
>
> On Mar 7, 13, at 17:16 PM, 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: Mathematica 9 install
  • Next by Date: Re: Plot3D Axes Labels overlap plot axes and ticks?
  • Previous by thread: Re: updating a simulation within Manipulate.
  • Next by thread: Re: Fixed Typo in Code---> Re: updating a simulation