УДК 51-74 В.Ф. Очков
ВАК 05.13.00 РИНЦ 20.01.00
Живые кинематические схемы в Mathcad
Рассмотрены возможности математического пакета Mathcad в плане создания анимаций различных кинематических устройств (паровая машина, стеклоочистители («дворники») автомобиля, стопоходящие машины и др.). Описаны математические инструменты пакета Mathcad, позволяющие решать алгебраические уравнения и их системы.
Ключевые слова: Mathcad, кинематика, анимация, решение алгебраических уравнений и систем.
LIVE KINEMATIC MODELS IN MATHCAD
The paper considers creating animation of different kinematical devices in mathematical package Mathcad (steam engine, windscreen wipers, walking machine). Mathematical tools for solving algebraic equations and their systems are described.
Keywords: Mathcad, kinematic, animation, solving of system of algebraic equations.
Английский кузнец Томас Ньюкомен в 1705 г. построил паровую машину, которая использовалась для откачки воды из шахт. С этой машиной связана одна легенда. Мальчик Хэмфри Поттер в 1712 г. устроился учеником оператора такого насоса. Для осуществления рабочего цикла машины он должен был открывать клапан подачи пара в нижнем положении поршня, а клапан подачи воды -при полном поднятии поршня. Хэмфри Поттер придумал, как избавить себя от монотонной работы. Он с помощью палочек и веревочки соединил ручки кранов и шток паровой машины. Получилось некое подобие кулисного механизма. Теперь кранами управлял сам поршень, а мальчик мог играть с товарищами во дворе. Так был изобретен золотник паровой машины - устройство автоматического парораспределения.
Паровую машину «в железе» сейчас можно увидеть только в музее. В интернете размещено много анимаций паровой машины самой по себе или установленной на паровозе или пароходе. Создать анимацию паровой машины вполне реально с помощью математичес-
Рис. 1. Mathcad-документ, рисующий паровую машину
Валерий Федорович Очков,
д.т.н., профессор Национального исследовательского университета «Московский энергетический институт» Тел.: 8 (495) 362-71-71 Эл. почта: [email protected]
Valery F Ochkov,
Doctor of Engineering Science, Professor, National research university "Moscow Power Engineering Institute" Tel.: 8 (495) 362-71-71 E-mail: [email protected]
кой программы Mathcad [1]. Об этом пойдет речь в данной статье.
На рис. 1 показан Mathcad-до-кумент, рисующий, а затем аними-рующий горизонтальную паровую машину, вернее, ее центральную часть, состоящую (см. слева направо) из маховика, шатуна, штока, цилиндра и поршня.
В начале расчета с помощью оператора присваивания (:=) задаются исходные данные: радиус маховика R, радиус окружности r, по которой будет вращаться левый конец шатуна, длина шатуна li, длина штока I2 и диаметр поршня D. После этого устанавливается угол поворота маховика 0. На рис. 1 эта величина задается двумя операторами 0 := FRAME° и 0 := 40°. При отладке программы будет работать второй оператор, который позволит вручную изменить угол поворота маховика в диапазоне от 0° до 360° и видеть, как меняется взаиморасположение частей паровой машины. При создании анимации (об этом будет подробно сказано ниже) оператор 0 := 40° нужно будет отключить или стереть совсем, чтобы заработал первый оператор 0 := FRAME°. Отключается оператор с помощью специального переключателя, появляющегося после нажатия правой кнопки мыши, когда курсор находится на данном операторе. У выключенного из расчета оператора справа появляется метка - черный квадратик с правой стороны. Системная переменная FRAME по умолчанию равна нулю, следовательно, угол 0 будет иметь нулевое значение. Но при создании анимации пакет Mathcad будет сам менять значение переменной FRAME (см. ниже), устанавливая разный угол поворота маховика: 0°, 1°, 2° и т.д. до 360°.
У нашей паровой машины четыре узловые точки, которые мы пронумеровали числами 0, 1, 2 и 3, первая из которых неподвижна. В эту точку мы поместим начало координат: yo := 0m xo := 0m. Переменные yo и Х0 - это не нулевые значения векторов y и x, а переменные с нижним индексом - переменные с именами y0 и x0, где нули (индексы) опущены чуть вниз. В среде Mathcad нижние индексы
переменных вводятся с помощью точки в имени переменной - y.0 и x.0. При уводе курсора от такого имени переменной точка пропадает, а индекс смещается вниз. Система координат у нас будет декартова. Но некоторые другие механические схемы (модель колебания маятника, например [2]) лучше «помещать» в полярную систему координат, которая также поддерживается в среде Mathcad. Правильный выбор начала и системы координат может существенно упростить решение задачи. Также очень важно определить узловые точки кинематической схемы и их нумерацию. Наша задача плоская, но в среде Mathcad есть и трехмерная графика, что позволяет реализовывать и объемные кинематические схемы с третьей координатой z.
Чтобы получить изображение паровой машины, нужно рассчитать координаты точек 1, 2 и 3 в зависимости от значения угла 0. Это делается в области Mathcad-доку-мента (см. рис. 1) с именем «Решение». Решение задачи заключено в область для того, чтобы ее можно было сворачивать и видеть рисунок паровой машины сразу после операторов задания угла поворота маховика 0. Это упрощает процесс отладки программы: не нужно будет менять значение 0, а потом прокручивать экран дисплея по вертикали, чтобы увидеть рисунок. Свертывается область командой из списка, выпадающего при нажатии правой кнопки мыши. Вставляется область в расчет командой из меню Вставка. Область можно также защитить (с паролем или без пароля) от редактирования.
Более-менее сложный расчет потребуется провести при определении ординаты точки 2 - значения переменной Х2: аналитически (символьно) решается уравнение длины шатуна. Это нелинейное уравнение, вытекающее из теоремы Пифагора, имеет два решения (корня) - шатун с заданными длиной li и координатами точки крепления на маховике (xi и yi) может находиться слева или справа от маховика. Оператор символьной математики solve, Х2 возвращает два решения в виде вектора. Первый элемент этого век-
Рис. 2. Форматирование графика - схемы паровой машины
тора мы возьмем в качестве решения нашей задачи - координаты Х2. Операторы li:= li, yi:=yi, xi:=xi и y2:=y2, записанные перед оператором solve, Х2, «глушат» численные значения переменных li, yi, xi и y2 для того, чтобы оператор solve, Х2 вернул выражения, а не численные значения выражений. Операторы символьной математики (на рис. 1 они прописаны на сером фоне) после их использования можно убрать из расчета. Но мы их оставили, чтобы пояснить его ход. По правде говоря, уравнение положения штока можно решить и в уме без привлечения компьютерной математики аналитических (символьных) преобразований. Но мы эти инструменты задействовали для того, чтобы показать, как символьная математика помогает решать задачи в среде пакета Mathcad.
Паровой цилиндр - это прямоугольник (замкнутая линия, состоящая из четырех отрезков прямых линий), который мы будем рисовать по его четырем вершинам. Векторы xc и yc будут хранить координаты этих вершин. Переменная Л - это значение «зазора» для цилиндра: на величину Л цилиндр будет больше крайних точек хода поршня, а диаметр цилиндра будет больше диаметра поршня на величину 2Л.
На рис. 2 зафиксирован процесс вставки, заполнения и форматирования декартового графика, с помощью которого рисуется паровая машина. У графика семь кривых (а всего их может быть шестнадцать), описание которых (семь пар выражений) представлено на осях графика и перечислено в окне форматирования графика:
• Кривая 1. Окружность маховика паровой машины рисуется так. Задается переменная 01, хранящая не скалярное значение, а дискретные значения угла от 0° до 360° с шагом 1° (см. оператор в нижней части области Решение на рис. 1). На графике (рис. 2) строится так называемая параметрическая кривая с выражениями R•sin(01) на оси Y и R•cos(01) на оси X, что и позволяет нарисовать окружность с радиусом R. Если переменная 01 будет хранить дискретные данные не по всей окружности, а только по ее части (01 := 40°, 41°.. 90°, например), то будет нарисована не вся окружность, а только ее часть - дуга. Такие пунктирные дуги можно видеть на рис. 5 ниже.
• Кривая 2. Окружность движения точки крепления шатуна на маховике (точка 1) строится так же, как и окружность маховика, с той лишь разницей, что эта окружность меньшего размера и прорисована не сплошной толстой линией, а тонким пунктиром. Центры наших двух окружностей с радиусами R и г находятся в начале координат. Но если к выражениям R• sin(01) и R• cos(01) прибавить константы, то окружность будет рисоваться со смещением относительно начала координат. Если же к выражениям R• sin(01) и R• cos(01) прибавлять не константы, а величины, зависящие от переменной 0 (переменная анимации), то окружность будет двигаться. Так, например, можно анимировать катящееся колесо.
• Кривые 3-7. Спицы маховика паровой машины рисуются для того, чтобы «закрепить» шатун на маховике и показать вращение
маховика при анимации. Мы ограничились четырьмя спицами (двумя диаметрами), но спиц можно нарисовать и больше. Спицы, как и другие отрезки прямых и ломаные линии, состоящие из отрезков прямых, рисуются заданием пары векторов, хранящих координаты точек: две точки для спиц и поршня, три точки для шатуна и штока поршня (точки 1, 2 и 3) и пять точек для парового цилиндра. Формирование пары векторов для цилиндра мы перенесли из области графика в область Решение, чтобы не загромождать график.
Размер графика нужно установить таким, чтобы маховик выглядел круглым (см. рис. 1; на рис. 2 маховик выглядит овальным из-за того, что пропорции графика несколько искажаются при его форматировании). Изменение размера графика ведется протяжкой мышкой его рамки. Кроме того, при создании анимации нужно зафиксировать разброс графика по его осям. По умолчанию пакет Mathcad сам устанавливает этот разброс, ориентируясь на максимальные и минимальные значения величин по осям абсцисс и ординат, которые могут меняться. Но в процессе создания анимации этот разброс должен быть зафиксирован: на концах графика мы записали -Я - Д и R + Д (ось X) и -Я - Д и Я + 11 + 12 + Д (ось Y), где Д - это некий зазор не только для цилиндра паровой машины (см. выше), но и для графика. Если разброс графика не зафиксировать, то анимация будет «кривая»: окружность будет деформироваться в эллипс и т.д.
До эры кино и телевидения была популярна такая игрушка -блокнот с картинками человечка в разных позах на разных страницах блокнота. Если блокнот просто перелистывать, то движения человечка (анимации) не увидеть. Но если страницы блокнота отогнуть и быстро отпускать по одной, то возникнет анимация - нарисованный человечек начнет двигаться. То же самое можно наблюдать и с нашим расчетом геометрических параметров паровой машины. Если вручную менять значение переменной 0 и свернуть область
Рис. 3. Создание анимации паровой машины
Решение, то можно видеть, как меняется положение поршня, штока, шатуна и маховика (это делается, повторяем, при отладке программы), но анимации не получится. Анимация возникнет, когда скорость смены кадров будет по крайней мере равна десяти кадрам в секунду. «Перелистывать» наш «блокнот» в среде Mathcad с изображениями паровой машины в разных фазах движения призваны специальные инструменты создания анимации (рис. 3).
Для создания анимации нужно, во-первых, передать управление независимой переменной анимации (у нас это переменная 9 - угол поворота маховика) системной переменной FRAME (счетчик кадров анимации). Это делается, повторяем, отключением оператора 9 := 40°. Во-вторых, необходимо вызвать диалоговое окно создания анимации (см. рис. 3) и установить в этом окне нужные параметры анимации, а в-третьих, протяжкой мышкой определить область анимации. На рис. 3 эта область отмечена пунктиром. При создании анимации она будет отображаться в окне Запись анимации. Теперь после нажатия кнопки Анимировать (см. рис. 3) пакет Mathcad будет сам через системную переменную FRAME менять значение угла поворота маховика паровой машины 9 и запоминать кадры анимации. По завершении создания анимации появится окно с анимацией (рис. 4). Эту анимацию можно запускать в среде Mathcad, а можно сохранить на диске в виде avi-файла и запускать уже без Mathcad в среде какого-либо проигрывателя (плеера) анимации Windows. Все! Паровая машина создана, а мы себя почувствовали неким «создателем», «творцом», который может вдох-
нуть жизнь в неподвижные виртуальные объекты.
Читатель может усложнить паровую машину - добавить к ней уже упоминавшийся легендарный золотник, который «мал да дорог». Но если это покажется слишком сложным, то можно сначала потренироваться на другой кинематической задаче - на задаче о движении дворников (стеклоочистителей) автомобиля. Паровую машину мы, повторяем, можем видеть только в музее или интернете, но с автомобильными дворниками мы сталкиваемся чуть ли не каждый день.
Дворники автомобиля также окружены легендами. Рассказывают, как один дирижер во время дождя возвращался после концерта на такси домой. Шоферу приходилось часто останавливать машину, чтобы протереть ветровое стекло. А дирижер в это время еще «жил» своим концертом, отбивал в уме музыкальные такты и видел перед собой «метроном» - руку, смахивающую со стекла дождевые капли. На следующий день настоящий, а не воображаемый метроном с
прикрепленной к нему щеткой был установлен на капоте машины. Так, говорят, были изобретены автомобильные дворники.
В эпоху паровых машин стояла задача преобразования поступательного движения во вращательное. Решая задачу о паровой машине (см. рис. 1-4), мы немного схитрили - преобразовывали не поступательное движение поршня во вращательное маховика, а решали другую задачу - преобразовывали вращательное движение маховика в поступательное движение поршня. Мы фактически реализовали не паровую машину, а поршневой компрессор, приводимый в движение электромотором или двигателем внутреннего сгорания. Тем не менее анимация у нас получилась, и разбираться, «кто кого движет», не так уж важно.
В настоящее время в связи с повсеместным распространением электромоторов более актуальной стала проблема передачи вращательного движения в поступательное. Дворники автомобиля - это типичный пример такого преобразования.
На рис. 5 помещен расчет с помощью пакета Mathcad узловых точек кинематической схемы автомобильных дворников (параллелограмм, одну из вершин которого «шевелит» кривошип) в зависимости от угла поворота электродвигателя. Сердцевиной расчета является определение координат точки 2. Здесь уже нужно будет решать
Рис. 4. Анимации паровой машины
Рис. 5. Задача о дворниках автомобиля
не одиночное уравнение, как это было в случае с паровой машиной (см. рис. 1), а систему двух нелинейных алгебраических уравнений. И решать эту систему мы будем не аналитически (символьно; можно попытаться решить и аналитически, но решение будет уж очень громоздким), а численно через блок Given-Find (Дано-Найти), встроенный в Mathcad (рис. 5). Численное решение системы уравнений требует первого приближения к решению, которое задается операторами Х2 := b и y2 := h. Тут очень важно задать правильное первое приближение, чтобы блок Given-Find выдавал «правильное» решение во всем диапазоне изменения угла 0 от 0° до 360°. Ведь опять же «шатун» дворника (линия 1-2) при ошибочном первом приближении может оказаться на «ошибочной» стороне от точки 5. В этом случае движение автомобильных дворников может сопровождаться «судорогами» -шатун будет появляться то справа, то слева от точки крепления. В принципе первое приближение к решению должно быть не константой, а переменной величиной, зависящей от переменной анимации 0.
Точка 6 лежит на прямой линии с точками 3 и 4. Тут приходится
сначала с помощью функции ко^е решать систему двух линейных алгебраических уравнений: уз = А + Вхз, У4 = А + ВХ4, и определять значения коэффициентов А и В, а затем решить еще одну систему двух уравнений, одно из которых нелинейно, и находить координаты точки 6. Когда координаты всех точек определены, легко создать анимацию движения дворников автомобиля по методике, описанной выше для паровой машины (см. рис. 2 и 3). У функции ко^е два аргумента - матрица коэффициентов при неизвестных и вектор свободных членов системы линейных алгебраических уравнений. Матрица коэффициентов может быть и неквадратной. Это бывает тогда, когда решаются недо-определенные или переопределенные системы линейных алгебраических уравнений.
В конце XIX в. на Всемирной выставке в Париже золотую медаль получила стопоходящая машина нашего соотечественника математика П.Л. Чебышева (в среде Mathcad, кстати, есть встроенная функция, носящая имя этого знаменитого математика, - ТЛеЬ). В стопоходящей машине Чебышева вращательное
движение превращалось в движение, похожее на движение ноги при ходьбе по ровной поверхности.
На рис. 6 показана кинематическая схема одной «ноги» стопоходящей машины Чебышева, траектория движения ее точки 5 и распечатка векторов х и у - координат ее шести узловых точек, две из которых (1 и 2) неподвижны относительно начала координат, лежащей на второй точке. Нумерация точек у нас опять же начинается с нуля и идет в таком порядке, чтобы «ногу» стопоходящей машины Чебышева можно было нарисовать, не отрывая карандаша от бумаги и не проводя одну линию дважды. Это позволяет рисовать на графике ломаную кривую с помощью пары векторов х и у. Отрезок прямой 2-3 совершает круговое движение вокруг точки 2. Координаты точки 0 можно найти, решив систему двух алгебраических уравнений, как мы это делали в задаче о дворниках автомобиля (см. рис. 5). Предлагаем читателю самому написать Mathcad-документ создания анимации движения «ноги Чебышева» по методикам, описанным выше. Расстояния между точками мы не указываем - их можно просто измерить, прикладывая линейку к
Рис. 6. Стопоходящая машина Чебышева
рис. 6. Наиболее сложно будет заставить Mathcad рисовать траекторию движения точки 5 (и точки 4 -линия 4-5 строго вертикальна). Есть разные способы рисования этой замкнутой пунктирной кривой. Можно, например, вручную протабулировать эту функцию: изменять значения угла 0 от 0° до 360° с шагом 10°, например, записывать в два вектора с 37 элементами - координатами точки 5, а затем нарисовать эти точки на графике, соединив их пунктиром. Точка 4 движется синхронно с точкой 5, точка 0 описывает дугу окружности, точка 3 совершает круговое движение, а точки 1 и 2 неподвижны. В данной задаче главное так подобрать длины рычагов, чтобы траектория движения точек 4 и 5 на некотором участке была наиболее близка горизонтальной линии, а вся стопоходящая машина (а у нее две пары таких ног, движущихся со сдвигом на 180°) передвигалась без ощутимых вертикальных колебаний.
У Чебышева было много последователей в плане создания стопоходящих машин, переводящих вращательное движение в плавное
горизонтальное. Наиболее знаменитым из них является датчанин Тео Янсен (Theo Jansen), который сконструировал и построил машину, схема которой показана на рис. 7. В этой машине также можно менять длины между точками (суставами «ноги»), чтобы перемещение опорной точки «стопы» было по возможности горизонтальным. У стопоходящей машины Янсена только точки 0 и 1 неподвижны, остальные находятся либо в круговом, либо в более сложном (см. пунктирные линии на рис. 7) движении. У Чебышева было также много и предшественников в плане создания стопоходящих машин, но он был первым, кто при конструировании таких механизмов стал использовать сложный математический аппарат. На рис. 6 показано устройство, «рисующее» некий сплюснутый с одного бока овал. Но математики доказали, что можно создать более сложное подобное механическое устройство, которое, например, может воспроизвести подпись любого человека...
На рис. 7 показаны две «ноги» Янсена, одна из которых двигается
с запаздыванием на 180°. Тео Янсен построил такую машину из дерева с десятком ног, которые приводятся в движение ветряным двигателем и «со скрипом», но двигаются по пляжу. Это видео можно скачать из интернета.
Данные и другие кинематические схемы собраны на сайте http://communities.ptc.com/groups/ kinematic-models-in-mathcad.
Несколько слов об этом сайте. Этот сайт создан и поддерживается компанией PTC (www.ptc. com) - владельцем пакета Mathcad. Часть этого сайта отдана сообществу (communities) пользователей пакета Mathcad для того, чтобы они могли общаться между собой, задавать вопросы, вести блоги, обмениваться полезной информацией и т.д. На этом сайте можно создавать так называемые группы (groups) по отдельным темам. Одна из таких «групп» имеет название, совпадающее с названием данной статьи. С этого же сайта можно скачать бесплатную пробную версию пакета Mathcad.
Читатель может сам по ключевым словам «паровая машина», «стопоходящая машина Чебыше-ва», «Theo Jansen» и др. найти в интернете анимации, описанные в статье. Но одно дело искать и запускать анимации интернета, а другое дело создавать их самому в виртуальном или реальном виде!
Рис. 7. Стопоходящая машина Янсена
При создании анимации в среде Mathcad с его богатым математическим аппаратом можно решать не только алгебраические уравнения (об этом было рассказано в статье), но и дифференциальные уравнения и системы. В этом случае допустимо учитывать не только кинематику моделей, но и их динамику. Узловые точки таких моделей будут двигаться не только вследствие жестких связей, показанных на
рисунках статьи, но и под действием силы тяжести, силы инерции и других реальных физических сил. Так, в статье [2] описано, как можно моделировать и анимировать в среде Mathcad движение планет и их спутников под действием силы инерции и силы всемирного тяготения, а в статье [3] - движение маятника под действием той же силы инерции, силы земного притяжения, силы натяжения нити (жесткой
или эластичной) и силы сопротивления вязкой среды, где маятник качается.
Выводы
Создание в среде Mathcad анимаций кинетических и динамических моделей - это эффективный и приятный способ изучения такой важной темы математики, как решение алгебраических и дифференциальных уравнений и систем.
Литература
1. Очков В.Ф. Mathcad 14 для студентов и инженеров: русская версия. - СПб.: БХВ-Петербург, 2009. Режим доступа: http://twt.mpei.ac.ru/ochkov/Mathcad_14/RusIndex.html
2. Очков В.Ф. MCS на занятиях по математике, физике, информатике... // Компьютерные учебные программы и инновации. - 2008. - № 3. - С. 187-194. Режим доступа: http://twt.mpei.ac.ru/ochkov/Pendulum/index.html
3. Очков В.Ф. MAS на занятиях по математике, физике, информатике. // Компьютерные учебные программы и инновации. - 2006. - № 2. - С. 73-80. Режим доступа: http://twt.mpei.ac.ru/ochkov/Mathcad_12/Planet/index. html