2010-10-08 9 views
4

Est-il possible d'utiliser le manipulateur de Mathematica pour modifier les variables qui ont déjà été déclarées?Mathematica manipule les variables déjà définies

Exemple:

changeme = 8; 
p = SomeSortOfPlot[changeme]; 
manipulate[Show[p],{changeme,1,10}] 

L'idée de base est que je veux faire une parcelle avec une certaine valeur changable mais déclarer en dehors de la manipuler.

Des idées?

Répondre

6

Une option consiste à utiliser Dynamic [] et LocalizeVariables -> False.

Exemple:

changeme = 8; 
p[x_] := Plot[Sin[t], {t, 1, x}]; 

{ 
Manipulate[p[changeme], {changeme, 2, 9}, LocalizeVariables -> False], 
Dynamic[changeme] (* This line is NOT needed, inserted just to see the value *) 
} 

évaluation "changeme" après l'action Manipulez conservera la dernière valeur Manipulez.

HTH!

+1

Vous pouvez faire le contrôleur montrer la valeur de la variable: par exemple Manipuler [p [changeme], {{changeme, 8, Dynamic [changeme]}, 2, 9}, LocalizeVariables -> Faux] – Simon

+0

@Simon Oui, merci. J'ai choisi de montrer la valeur en dehors du contrôleur parce qu'elle semblait alignée avec la demande OP. –

2

Si vous voulez quelque chose raisonnablement compliqué ou flexible, il est préférable d'utiliser Dynamic et DynamicModule au lieu de Manipulate. La seule exception est si vous écrivez un demonstration.

Par exemple - un moyen très basique de faire ce que vous voulez est (en fait, vous n'avez même pas besoin de la et Slider si vous voulez juste changer changeme main.)

changeme=8; 
p[x_]:=Plot[Sin[t],{t,1,x}]; 
Row[{"x \[Element] (1, ",Dynamic[changeme],") ",Slider[Dynamic[changeme],{2,9}]}] 
Dynamic[p[changeme]] 
+0

Je place souvent le curseur au début de la ligne, car lorsque le nombre de chiffres de la variable dynamique change, produit un effet visuel laid. –