MathGroup Archive 2013

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

Search the Archive

Manipulate and Initialization

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130224] Manipulate and Initialization
  • From: Fred Simons <f.h.simons at tue.nl>
  • Date: Sat, 23 Mar 2013 03:24:31 -0400 (EDT)
  • 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

I want to create a rather complicated Manipulate, in which I do not know 
the limits for the parameter beforehand; they depend on the result of an 
initialization. Here is a highly simplfied example:

Clear[nn];
Manipulate[n, {n,1,nn,1}, 
Initialization:>(nn=RandomInteger[{5,15}];Print[nn])]

This works fine. The slider can be used in the range from 1 to the 
printed value.

However, when nn already has a value, the behaviour is different. When 
we execute

nn=23;
Manipulate[n, {n,1,nn,1}, 
Initialization:>(nn=RandomInteger[{5,15}];Print[nn])]

a value between 5 and 15 for nn is printed, but that value is not used 
in the result; the slider now runs from 1 to 23.

So, whether nn has a value or not, just before the box structure is 
printed, the frontend asks the kernel to evaluate the initialization. 
But the returned value of nn is used in Manipulate only when nn did not 
have a value before. That embarasses me. Any explanation is highly 
apprectiated.

Fred Simons
Eindhoven University of Technology



  • Prev by Date: Re: Teleprompter Code
  • Next by Date: Re: RegionPlot and Show
  • Previous by thread: Re: Teleprompter Code
  • Next by thread: Re: Manipulate and Initialization