MathGroup Archive 2010

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

Search the Archive

Re: Dynamic function application problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg108240] Re: Dynamic function application problem
  • From: dh <dh at metrohm.com>
  • Date: Thu, 11 Mar 2010 06:37:58 -0500 (EST)
  • References: <hmvq6k$11s$1@smc.vnet.net>

Hi Istvan,
you could try to nest two Manipulates like e.g.:

Manipulate[Clear["x*"];
  it = Table[{Symbol["x" <> ToString[i]], 1, 10}, {i, 1, n}];
  Manipulate0[set = it[[All, 1]]
    , Sequence @@ it, LocalizeVariables -> False] /.
   Manipulate0 -> Manipulate
  , {n, 1, 5}]
Dynamic@set

Note that I clear all variables with a name starting witjh "x".

Daniel

On 07.03.2010 10:04, István wrote:
> Dear All,
>
> every time I construct a simple interface for something like the
> common demonstration "Understanding function x" to get a grip on the
> behaviour of the function, I run into
> some unresolvable problem of Dynamic. I mean: EVERY time. This is the
> newest one.
>
> The interface uses a master slider that controls the length (n) of a
> list (set). Each element in this list has an independent slider to
> control its value. What I want to do is to allow the values in set to
> be saved in some way. That is, if the user increases n from default 2
> to e.g. 4, and then changes the value of set[[2]], and then decides to
> go back to n = 2, the set should keep the changed value. That's why I
> use the 'truncate' function. To conclude:
>
> time1: n = 2, set = {1, 2}
> time2: n = 4, set = {1, 2, 3, 4} (user increased n)
> time3: n = 4, set = {1, 7, 3, 4} (user changed set[[2]])
> time4: n = 2, set = {1, 7} (user decreased n)
>
> And the code is below. Be aware that this is a TOY modell with the
> sole purpose of demonstraing a problem I don't understand, please
> don't ask questions like "your function 'update' is an unnecessary
> intermediate step, why do you use it??".
>
>
> DynamicModule[{
>    n = 2, m = 8, def, set,
>    update, truncate
>    },
>
>   Panel@Column@{
>      Slider[Dynamic[n, (n = #; update[#])&], {1, m, 1},
>       ImageSize ->  110],
>      Dynamic@
>       Column[Slider[Dynamic@set[[#]], {1, 30, 1}, ImageSize ->  110]&  /
> @
>          Range@n],
>      Dynamic@Column@{n, set}
>      },
>
>   Initialization :>  (
>     truncate[set_, n_, def_] :=
>      If[n<= Length@set, Take[set, n],
>       Join[set, Take[def, {n + 1, Length@def}]]];
>
>     update[n_] := (
>       set = truncate[set, n, def];
>       );
>
>     def = Range@m;
>     update@n;
>     )
>   ]
>
>
> At present, the code simply cannot deal with truncate, and crashes
> (with fresh kernel), or at least produces severe errors due to
> recursion problems (with old kernel). Could you please suggest a
> resolution for this matter?
>
> Thank you in advance
>
> Istvan
>


-- 

Daniel Huber
Metrohm Ltd.
Oberdorfstr. 68
CH-9100 Herisau
Tel. +41 71 353 8585, Fax +41 71 353 8907
E-Mail:<mailto:dh at metrohm.com>
Internet:<http://www.metrohm.com>



  • Prev by Date: Re: ZTransform for a non-causal unstable signal. How to make Mathematica
  • Next by Date: Re: ZTransform for a non-causal unstable signal. How to make Mathematica gives correct result?
  • Previous by thread: Re: Dynamic function application problem
  • Next by thread: Solving ODE with discontinuous shock perturbation [was: Modification