Re: How to define a localized indexed object in Manipulate?
- To: mathgroup at smc.vnet.net
- Subject: [mg123777] Re: How to define a localized indexed object in Manipulate?
- From: Armand Tamzarian <mike.honeychurch at gmail.com>
- Date: Mon, 19 Dec 2011 07:15:13 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jckcdj$1mc$1@smc.vnet.net>
On Dec 18, 8:40 pm, "Nasser M. Abbasi" <n... at 12000.org> wrote: > Hello, > > Any one knows how to define and use an indexed object in Manipulate? > > Looking at the example below, p@x is an indexed object used by > Manipulate. > > -------------------------------- > Manipulate[ > p@x=p@x+1; > n; > Row[{"p@x=",p@x}], > > Button["click to update p@x",n++], > {{n,0},None}, > TrackedSymbols:>{n}, > > Initialization:> > { > p@x=0 > } > ] > -------------------------------- > > But in the above, I had to put p@x in the Initialization section > because I did not know how to make a Manipulate Dynamic. This > makes p@x become global, and will not be localized when one makes > a new copy of the Manipulate snapshot, causing a problem. > > The obvious solution, which is to add > > {{p@x,0},None} > > to make p@x become a Manipulate own Dynamic, does not work for > indexed object. So, I could not do the following: > > -------------------------------- > Manipulate[ > p@x=p@x+1; > n; > Row[{"p@x=",p@x}], > > Button["click to update p@x",n++], > {{n,0},None}, > {{p@x,0},None}, (* DOES NOT WORK, what is the synatx to use= ?*) > TrackedSymbols:>{n} > ] > -------------------------------- > > Any tick or hint how to do this will be great. > > Thank you, > --Nasser You appear to be asking for the following: 1. keep all symbols local; and 2. have p[x] update incrementally when n changes; and 3. the solution must be a Manipulate. One possible solution that fits that criteria is this: Manipulate[ DynamicModule[{p, x}, p@x = 0; Column[{ Dynamic[p@x += 1; n, TrackedSymbols :> {n}], Dynamic@Row[{"p@x=",p@x}] }], {{n, 0, "n"}, 0, 10, 1}] Mike