Иллюстрированный самоучитель по Maple 9

Нахождение функции Лагранжа системы и частоты малых колебаний

Для отображения динамики системы во времени необходимо знать закон движения. Для этого решим исходную систему дифференциальных уравнений (Eq1, Eq2). Решение будем искать в численном виде, для чего результат выполнения процедуры dsolve() указывается аргументом процедуры преобразования в формат числа с плавающей точкой evalf ().

Система уравнений решается для случая, когда в начальный момент времени брусок отклоняется от положения равновесия на расстояние 0.2, а стержень – на угол π/16. Начальные скорости шарика и бруска равны нулю.

Иллюстрированный самоучитель по Maple 9 › Задачи физики › Нахождение функции Лагранжа системы и частоты малых колебаний

Внимание!
Указывать индексы в последних двух командах следует крайне осторожно! От сеанса к сеансу решения системы дифференциальных уравнений выводятся в разной последовательности, поэтому приходится соответствующим образом менять и индексы
.

После этого формируем кадры анимации. Динамику системы будем отслеживать на протяжении 2.5 секунд с интервалом 0.1 секунды. Каждый кадр будем записывать в массив о. Ниже приведен соответствующий код.

Иллюстрированный самоучитель по Maple 9 › Задачи физики › Нахождение функции Лагранжа системы и частоты малых колебаний

Момент времени последовательно, с шагом 0.1, изменяется от 0 до 2. Положение равновесия бруска взято равным 0.5, а чтобы было лучше ориентироваться в ситуации, отображается, кроме картинки, еще и момент времени (процедура textplot()). Отображаемый текст формируется процедуре объединения cat().

Наконец, в процедуре display(), помимо первого аргумента – списка (это важно!) кадров, указывается еще и опция insequence=true.

Иллюстрированный самоучитель по Maple 9 › Задачи физики › Нахождение функции Лагранжа системы и частоты малых колебаний

В данной главе для отображения анимации использовалась процедура display(). В отличие от процедуры animate(), рассмотренной в предыдущей главе, процедура display() более удобна в том смысле, что позволяет отображать последовательность, по большому счету, произвольных картинок. Например, если при отображении динамики системы с помощью процедуры animate () интервал времени разбивается на равные промежутки, то при использовании процедуры display() имеется возможность отображать состояние системы через промежутки времени разной протяженности. Это иногда бывает полезно.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.