Re: DynamicModule Pure Function

*To*: mathgroup at smc.vnet.net*Subject*: [mg121926] Re: DynamicModule Pure Function*From*: "David Park" <djmpark at comcast.net>*Date*: Thu, 6 Oct 2011 04:27:02 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <12261069.93191.1317801418077.JavaMail.root@m06>

DynamicModule[ {x1 = 0, x2 = 2}, {Slider[Dynamic[ x1, (x1 = #; x2 = Rescale[x1, {0, 1}, {2, 0}]) &], {0, 1}], Slider[Dynamic[ x2, (x2 = #; x1 = Rescale[x2, {2, 0}, {0, 1}]) &], {0, 2}], Dynamic[x1], Dynamic[x2]} ] David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: Don [mailto:donabc at comcast.net] 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.