Re: DynamicModule Pure Function
- To: mathgroup at smc.vnet.net
- Subject: [mg121896] Re: DynamicModule Pure Function
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Thu, 6 Oct 2011 04:21:19 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201110050758.DAA06856@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
In the first example, 1 - x happens to be its own inverse, so the two arguments of Dynamic in the first slider looked the same (1 - x and 1 - #&)... but most functions are NOT their own inverse. In this case, the code is: ap = Appearance -> "Labeled"; DynamicModule[{x = 0}, {Slider[Dynamic[x], ap], Slider[Dynamic[2 - 2 x, (x = 1 - #/2) &], {0, 2}, ap]}] If 2 - 2 x and 1 - # /2& are not obvious to you, Mathematica can help as follows: Fit[{{0, 2}, {1, 0}}, {1, x}, x] // Rationalize 2 - 2 x Fit[Reverse /@ {{0, 2}, {1, 0}}, {1, x}, x] // Rationalize 1 - x/2 The second is inverse function to the first: Solve[2 - 2 x == y, x] // Expand {{x -> 1 - y/2}} The functions are even easier to see from: Rescale[x, {0, 1}, {2, 0}] 2 - 2 x Rescale[x, {0, 2}, {1, 0}] 1 - x/2 Bobby On Wed, 05 Oct 2011 02:58:13 -0500, Don <donabc at comcast.net> wrote: > Thank you all for instructive insights into this problem of why the > pure function works the way it does. > > To see if I understood the points made in the emails, I changed > the original problem very slightly and tried to find > a similar solution to the new problem using a modified pure function > from the original problem. > > The new problem is exactly the same as the original problem except > that the range for Slider #2 goes from 0 to 2 instead of 0 to 1. > That is the only modification to the original problem. > The problem is to find an inverse function that will allow Slider #1 to > control Slider #2 throughout its range and vice versa. > > To define this modified problem completely: > > (1) The starting position of Slider #1 with range 0 to 1 is 0. > > (2) The starting position of Slider #2 with range 0 to 2 is 2. > > (3) When Slider #1 in moved to the right, over its range from 0 to 1, > Slider #2 > should go to the left from 2 to 0. > > (4) When Slider #2 is moved to the left, over its range from 2 to 0, > Slider #1 > should go to the right from 0 to 1. > > I was not able to solve this problem. > > The closest I was able to do is to break up the problem > into component parts, hoping to synthesize a solution > from the parts. > > The code below works when Slider #1 is controlling both Sliders. That is > to say, > it satisfies the requirements 1, 2 and 3 above: > the starting positions are 0 for Slider #1 and 2 for Slider #2 and when > Slider #1 is moved to the right over its range of 0 to 1, Slider #2 goes > to the left > from 2 to 0. > > ap = Appearance->"Labeled"; > > DynamicModule[{x = 0}, {Slider[Dynamic[x], ap], > Slider[Dynamic[2 - 2 x, (x = 2 - 2 #) &], {0, 2}, ap]}] > > > > But, I was not able to find a function that would satisfy requirements > 1, 2 and 4 above > where Slider #2 is controlling the action. > > In addition, to solve the problem completely, there would have to be a > synthesis > of both component solutions. > > Is there a way to do this? > > Thank you in advance. > -- DrMajorBob at yahoo.com
- References:
- Re: DynamicModule Pure Function
- From: Don <donabc@comcast.net>
- Re: DynamicModule Pure Function