Чтение онлайн

ЖАНРЫ

Maple 9.5/10 в математике, физике и образовании

Дьяконов Владимир Павлович

Шрифт:

Начнем с простого примера. Следующая команда (файл mmp0)

> c:=parse(Maplets[Examples][GetInput]("Введите целое число:", 'type'

= plain));

выводит диалоговое маплет-окно ввода с сообщением «Введите целое число:». Это окно показано на рис. 10.7. В нем можно ввести любое целое положительное или отрицательное число, например 1. Нажатие кнопки OK закрывает окно ввода и задает переменной С значение вводимого числа — в строке вывода будет С=1.

< image l:href="#"/>

Рис. 10.7. Создание кнопки для остановки и запуска вычислений

Строка

> if с>0 then lprint("Число положительно!") fi;

анализирует знак числа и если оно положительно, то выводит сообщение

"Число
положительно!"

Этот пример поясняет возможность диалогового ввода и последующей его обработки, например в составе той или иной процедуры. Более солидное действие производит функция вызова диалогового окна вычисления интегралов (файл mmp1), представленная ниже:

> with(Maplets[Examples]): Integration(sin(х^3)*х^2);

Это функция вначале вызывает появление окна с запросом типа вычисляемого интеграла — определенного или неопределенного. Оно показано на рис. 10.8.

Рис. 10.8. Вызов окна задания интегралов

Задав, к примеру, вычисление неопределенного интеграла можно получить окно с заданным интегралом. Но можно (см. рис. 10.9) задать в панели ввода и любое другое подынтегральное выражение, а также указать переменную интегрирования. Кнопка Clear очищает окно, а кнопка Integrate обеспечивает вычисление интеграла, что и показано на рис. 10.7. Если нажать кнопку OK, то вычисленное значение интеграла будет перенесено в строку вывода. А кнопка Cancel обеспечивает отказ от данной операции.

Рис. 10.9. Вывод окна задания и вычисления неопределенных интегралов

Еще один пример (файл mmp2)

> with(Maplets[Elements]): maplet3d := Maplet([["Enter a function of 'x' and 'y':", TextField['TF3d']], Plotter['PL1'],

[Button("Plot", Evaluate('PL1' = 'plot3d(TF3d, x = 0..10, y=0..10)'} ), Button("OK", Shutdown(['TF3d']))]]): result := Maplets[Display](maplet3d);

обеспечивает вывод диалогового окна построения графиков трехмерных объектов, представленных функций функцией двух переменных. Это окно представлено на рис. 10.10 и позволяет в диалоговом режиме задать построение функции двух переменных х и у и построить график этой функции.

Рис. 10.10. Вызов и применение окна построения трехмерного графика, заданной в его поле функции

10.8.3. Управление цветом

Пакет Maplets можно использовать для эффективного (и эффектного) управления цветом. Для этого достаточно использовать команду:

> with(Maplets[Examples]):

GetColor('title' = "Get Color");

При исполнении этой команды появляется окно задания цвета, показанное на рис. 10.11. В этом окне имеется три вкладки дня установки цвета в одной из трех цветовых систем: Swathes, HSB и RGB. Все они дают разные способы задания цвета в интерактивном режиме. Рис. 10.11 демонстрирует наиболее распространенный способ задания цвета в системе RGB. При этом с помощью ползунковых регуляторов можно задать интенсивность каждой составляющей света. Red — красной, Green — зеленой и Blue — синей. В части окна Preview (Предварительный Просмотр) можно наблюдать за изменением цвета текста, основы и пикселей.

Рис. 10.11. Окно задания цвета

Если после установки подходящего цвета нажать кнопку OK, то будет сформирована строка с командами задания выбранного цвета. Для примера, показанного на рис. 10.11, эта строка имеет вид:

>

Если

использовать эту команду в любой графической функции, то объект (или часть объекта) будет окрашена в заданный цвет.

Разумеется, пакет Maplets предназначен, прежде всего, для создания диалоговых и прочих окон и элементов интерфейса при создании программных модулей. С пакетом пока не все гладко — иногда окна появляются с заметной задержкой, случаются и сбои при работе с ними. Кроме того, пользователь, уже привыкший к простоте и наглядности работы с обычными документами в одном общем для всех объектов окне, может критически оценивать представленные выше возможности. Тем не менее, корпорация MapleSoft явно сделала ставку на широкое применение маплет-средств для разработки обучающих средств с повышенной наглядностью и работой в интерактивном (диалоговом) режиме.

10.9. Моделирование RLC-цепи с применением маплет-интерфейса

10.9.1. Подготовка процедуры моделирования и тестового примера

Теперь рассмотрим пример на моделирование последовательной RLС-цепи, подключенной к источнику напряжения с заданной произвольно временной зависимостью v(t). Наша задача заключается в нахождении тока i(t) из решения системы из двух дифференциальных уравнений заряда:

где q(t) — временная зависимость заряда в конденсаторе С и i(t) — искомая временная зависимость тока в цепи. Полный текст документа, решающего данную задачу представлен в файле RCL_maplets.

Maple-процедура lrc, позволяющая вычислять i(t) по этой системе дифференциальных уравнений представлена ниже:

> restart;

> lrc := proc(L, R, С, q0, i0, tf, v)

 local de, ics, sol, q, i, p;

 de :=L*diff(q(t),t,t)+ R*diff(q(t),t)+(1/C)*q(t)= v;

 ics :=q(0) = q0,D(q)(0)= i0;

 sol :=dsolve({de, ics},q(t), range=0..tf,numeric);

 plots[odeplot](sol, [[t,v,color=red],[t, diff(q(t),t), color=blue]],

 t=0..tf,legend=["v(t)", "i(t)"], numpoints=1000);

end proc:

Подготовим тестовый пример. Пусть L=250 mH, С=500 mF, R=100 mOhm, v(t)=sin(10*t)*exp(t/2) при нулевых начальных условиях и интервале времени от 0 до 5 обращение к процедуре lrc имеет вид

> lrc(.25, .1, .5, 0, 0, 5, sin(10*t)*ехр(-t/2));

и ведет к построению графика переходных процессов — v(t) и i(t), показанного на рис. 10.12.

Рис. 10.12. Временные зависимости v(t) и i(t) при моделировании LCR-цепи

Нетрудно заметить, что переходные процессы достаточно сложны, хотя и вполне понятны читателю, разбирающемуся в радиотехнических цепях.

10.9. 2. Подготовка окна маплет-интерфейса

Теперь зададимся целью построить окно маплет-интерфейса, имеющего следующие детали:

• поле для задания индуктивности L в mH;

• слайдеры для задания резистивности R в mOhm и емкости С в mF;

• поля для задания начальных значений q0 и i0 и конечного времени t;

• поле для задания временной зависимости i(t) по умолчанию sin(10*t);

• кнопки Plot для построения графиков временных зависимостей v(t) и i(t) и Close для закрытия окна;

• подокно для отображения графиков временных зависимостей v(t) и i(t).

Поскольку построение маплет-интерфейса уже было подробно описано, приведем процедуру lrc_maplet, реализующую эти возможности:

Поделиться с друзьями: