Элементы управления и динамика
Функция Manipulate[]
Эта функция позволяет визуализировать зависимость выражения от параметров. Вот некоторые форматы этой команды. Отметим, что Mathematica по умолчанию сама выбирает удобный, на ее взгляд, способ управления параметрами.
- Manipulate[expr,{u,umin,umax}] - параметр u меняется на отрезке от umin до umax (управляется ползунком Slider );
- Manipulate[expr,{u,{xmin,ymin},{xmax,ymax}}] - параметр u меняется в прямоугольнике, с нижним левым углом в {xmin,ymin} и верхним правым углом в {xmax,ymax} (двумерный ползунок Slider2D );
- Manipulate[expr,{u,umin,umax,du}] - параметр u меняется ползунком с шагом du ;
- Manipulate[expr,{{u,uinit},umin,umax}] - параметру u присваивается начальное значение uinit ;
- Manipulate[expr,{{u,uinit},umin,umax,du}] - параметру u присваивается начальное значение uinit и он меняется с шагом du ;
- Manipulate[expr,{u,{u1,u2,...}}] параметр u пробегает дискретный набор значений {u1, u2,...} ; при этом если список значений короткий, то u управляется строкой кнопок ( Setter Bar ), а если список длинный - то выпадающим меню ( Popup Menu );
- Manipulate[expr,{u,color}] - параметр u задается с помощью цветового ползунка;
- Manipulate[expr,{u,{True,False}}] - параметр u задается с помощью флаговой кнопки CheckBox ;
- Manipulate[expr,{u,Locator}] - параметр u задается с помощью локатора Locator ;
- Manipulate[expr,{{u,uinit},Locator}] - начальное положение локатора равно uinit.
Можно также задавать не один параметр, а несколько:
In[79]: = Manipulate[ Plot [λ f [a (x - loc[[1]]) + b] n g [x - loc[[l]] ] + loc[[2]] , {x, 0, [[1]]}, PlotRange -> {{0, pt [[1]]}, {-pt[[1]], pt[[2]]}}, PlotStyle -> {color} , Axes -> axes] , {λ , 1, 2}, {pt, {2 π, 1}, {4 π 2}}, {n, 1, 5, 1}, {{a, 1}, 0, 2}, {{b, 1}, 0, 2, 0.2}, {f, {Sin, Cos, Tan, Cot}}, {g, {Sin, Cos, Tan, Cot, Sqrt, Log}}, {color, Red} , {axes, {True, False}}, {{loc, {0, 0}}, Locator} ]
Управление скоростью движения ползунка. Если при смещении ползунка удерживать клавишу Alt, изменение параметра замедлится в 20 раз.
Если к Alt добавить Ctrl или Shift, движение замедлится еще в 20 раз (проделайте это на примере, приведенном выше).
Редактируемая визуализация текущего значения параметра, задаваемого ползунком, изменение этого значения, автоматизация процесса изменения, последовательное изменение всех параметров ( Autorun ). Если кликнуть на значок "+" справа от ползунка, то под ползунком возникнет окошко с текущим значением параметра, а также шесть кнопок справа от этого окошка. Окошко можно редактировать, изменяя тем самым значение параметра. Шесть кнопок позволяют задавать автоматическое изменение параметра (поэкспериментируйте с этими кнопками и разберитесь, за что они отвечают). Чтобы посмотреть зависимость от всех параметров, можно кликнуть на значок "+" в правом верхнем углу панели Manipulate и в появившемся меню выбрать Autorun. Появится управляющее окошко Autorun и параметры начнут последовательно менять свои значения. В управляющем окошке можно менять параметры демонстрации Autorun. Чтобы остановить процесс, нажмите в этом окошке на Close.
Нередактируемая визуализация значения параметра, задаваемого ползунком. Чтобы вывести справа от ползунка текущее нередактируемое значение параметра, добавьте в список описания параметра опцию :
In[80]: = Manipulate[Plot[Sin[a x + b] , {x, 0, 2 π } , PlotRange -> {{0, 2 π } , {-1, 1}}], {{a, 1}, 0, 2}, {b, 0, 2, Appearance -> "Labeled"\} ]
Замена имен параметров на метки. Для этого после обязательного задания начального значения нужно указать название параметра:
In[81]: = Manipulate[Plot[Sin[ax + b] , {x, 0, 2 π }, PlotRange -> {{ 0 , 2 π } , {-1,1}}], {{a, 1, "Частота"}, 0, 2}, {{b, 0, "Фаза"}, 0, 2, Appearance -> "Labeled"} ]
Визуализация дискретных значений параметра метками. Для этого после задания дискретного значения нужно поставить стрелочку и указать метку (типа String ):
In[82]: = Manipulate[Plot[f [ах + b] g[х] , {х, 0, 2 π }, PlotRange -> {{0, 2 π } , {-1, 1}}] , {{а, 1}, 0, 2}, {{b, 1}, 0, 2, 0.2}, {{f, Sin}, {Sin -> "Синус", Cos, Tan -> "Тангенс", Cot -> "Котангенс"}} , {{g, Sin}, {Sin -> "Синус", Cos -> "Косинус", Tan, Cot -> "Котангенс" , Sqrt -> "Квадратный корень", Log -> "Логарифм"}} ]