2010-10-08 51 views
4

是否可以使用Mathematica的操作來更改已聲明的變量?Mathematica操作已定義的變量

例子:

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

的基本想法是,我想使具有一定多變值的陰謀,但外界宣告它的操縱。

任何想法?

回答

6

一個選項是使用Dynamic []和LocalizeVariables - > False。

例子:

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 *) 
} 

的操縱動作將保留最後的操縱價值評估後, 「changeme」。

HTH!

+1

你可以使控制器顯示變量的值:例如操作[p [changeme],{{changeme,8,Dynamic [changeme]},2,9}, LocalizeVariables - > False] – Simon 2010-10-08 21:16:59

+0

@Simon是的,謝謝。我選擇在控制器外顯示值,因爲它似乎與OP請求一致。 – 2010-10-08 21:48:04

2

如果您想要任何合理的複雜或靈活的東西,最好使用DynamicDynamicModule而不是Manipulate。唯一的例外是如果你正在寫一個demonstration

例如 - 做你想要什麼樣的一個非常基本的方法是 (事實上,你甚至都不需要和Slider如果你想手工只是改變changeme。)

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

我經常把滑塊放在行的開始位置,因爲當動態變量的位數變化時,會產生難看的視覺效果。 – 2010-10-08 22:09:46