Re: Using Intermediate Variables in DynamicModules
- To: mathgroup at smc.vnet.net
- Subject: [mg80290] Re: Using Intermediate Variables in DynamicModules
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 16 Aug 2007 07:23:23 -0400 (EDT)
- Organization: Uni Leipzig
- References: <fa130g$mt7$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi,
try
f[x_] := x^2
DynamicModule[{a = 0.5, b = 0.5, work, fw},
work = Dynamic[a + b];
fw = f[work];
Column[{
Slider[Dynamic[a], {0, 2}],
Slider[Dynamic[b], {0, 2}],
{work, work /. w_NumericQ :> f[w]}
}]
]
Regards
Jens
David Park wrote:
> I am having a lot of trouble with a DynamicModule expression. I believe that
> the following examples get to the heart of the matter.
>
> Here is a DynamicModule that uses an external function f. It has two
> internal variables a and b, which are controlled by sliders. The third
> output line gives a+b and f[a+b].
>
> f[x_] := x^2
> DynamicModule[
> {a = 0.5, b = 0.5},
> Column[{Slider[Dynamic[a], {0, 2}],
> Slider[Dynamic[b], {0, 2}], {Dynamic[a + b], Dynamic[f[a + b]]}}]]
>
>
> Notice that f[a+b] is fully evaluated in the output. Now in my actual case I
> have a long and complicated expression involving a and b that is used in a
> number of different places. So to clarify the entire expression I would like
> to define an intermediate expression that can then be used in the dynamic
> output. Here is my attempt:
>
> f[x_] := x^2
> DynamicModule[
> {a = 0.5, b = 0.5, work},
> work = Dynamic[a + b];
> Column[{Slider[Dynamic[a], {0, 2}],
> Slider[Dynamic[b], {0, 2}], {work, f[work]}}]]
>
> Now, although the output is formally correct, the output, and in particular
> f[work], is not fully evaluated. I think that may be the cause of my
> problem. Why, in the first case does the f expression become fully evaluated
> but not in the second case? Is there a simple way to force kernel evaluation
> when intermediate expressions are used? (I.ve tried many combinations of
> using Dynamic in the output expression and none of them changed the
> behavior.)
>
> Thanks in advanced. I've always gotten great help from this group.
>