Re: How to define a localized indexed object in Manipulate?
- To: mathgroup at smc.vnet.net
- Subject: [mg123816] Re: How to define a localized indexed object in Manipulate?
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Tue, 20 Dec 2011 03:07:07 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201112180937.EAA01710@smc.vnet.net>
I forgot that you wanted p localized. You can use Module to keep p out
of the global context.
Clear[p]
Module[{p},
Manipulate[
p@n = n;
StringForm["p@`1` = `1`; Sum = `2`", n, Sum[p[k], {k, n}]],
Button["Click to update p@n", n++],
{{n, 0}, None}]]
?? p
Bob Hanlon
On Mon, Dec 19, 2011 at 8:34 AM, Bob Hanlon <hanlonr357 at gmail.com> wrote:
> Clear[p]
>
> Manipulate[
> p@n = n;
> StringForm["p@`1` = `1`", n],
> Button["Click to update p@n", n++],
> {{n, 0}, None}]
>
> ?? p
>
>
> Bob Hanlon
>
> On Mon, Dec 19, 2011 at 7:16 AM, Nasser M. Abbasi <nma at 12000.org> wrote:
>> On 12/18/2011 11:57 AM, DrMajorBob wrote:
>>> p@x is not an "indexed object", whatever that means.
>>>
>>
>> "Making Definitions for Indexed Objects"
>>
>> http://reference.wolfram.com/mathematica/tutorial/MakingDefinitionsForIndexedObjects.html
>>
>>> p is a function, and p@x is p at the argument x, or p[x].
>>>
>>
>> p[x] = whatever
>>
>> is an indexed object not a function. I use indexed objects all
>> the time. I just do not know how to use them inside Manipulate
>> as a Manipulate Control->None type.
>>
>> --Nasser
>>
>>> p@x also is not a variable, so it can't be treated as a variable in the
>>> second argument of Manipulate.
>>>
>>> Bobby
>>>
>>> On Sun, 18 Dec 2011 03:37:46 -0600, Nasser M. Abbasi<nma 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
>>>>
- References:
- How to define a localized indexed object in Manipulate?
- From: "Nasser M. Abbasi" <nma@12000.org>
- How to define a localized indexed object in Manipulate?