ЖИВЫЕ КИНЕМАТИЧЕСКИЕ СХЕМЫ В MATHCAD
Английский кузнец Томас
Ньюкомен в 1705 году построил паровую машину, которая
использовалась для откачки воды из шахт. С этой машиной связана одна легенда. Мальчик
Хэмфри Поттер в 1712 г.
устроился учеником оператора такого насоса. Для осуществления рабочего цикла
машины он должен был открывать клапан подачи пара в нижнем положении поршня, а клапан
подачи воды – при полном поднятии поршня. Хэмфри
Поттер придумал, как избавить себя от монотонной
работы. Он с помощью палочек и веревочки соединил ручки кранов и шток паровой
машины. Получилось некое подобие кулисного механизма. Теперь кранами управлял сам
поршень, а мальчик мог играть с товарищами во дворе. Так был изобретен золотник паровой машины –
устройство автоматического парораспределения.
Паровую машину «в железе»
сейчас можно увидеть только в музее. В Интернете размещено
много анимации паровой машины самой по себе или установленной на паровозе или
пароходе. Создать анимацию паровой машины вполне реально с помощью
математической программы Mathcad [1]. Об этом пойдет речь в данной статье.
Рис. 1. Mathcad-документ, рисующий паровую машину
На рис. 1 показан Mathcad-документ, рисующий, а
затем анимирующий горизонтальную паровую машину, вернее, ее центральную часть,
состоящую из маховика, шатуна, штока, поршня и цилиндра.
В начале
расчета с помощью оператора присваивания (:=) задаются исходные данные: радиус
маховика R, радиус окружности r,
по которой будет вращаться левый конец шатуна, длина шатуна l1,
длина штока l2 и диаметр поршня D.
После этого устанавливается угол поворота маховика θ.
На рис. 1 эта величина задается двумя операторами θ := FRAME° и θ := 40°. При отладке программы
будет работать второй оператор: можно будет вручную менять угол поворота
маховика в диапазоне от 0° до 360°
и видеть, как меняется взаиморасположение частей паровой машины. При создании
анимации (об этом будет подробно сказано ниже) оператор θ := 40° нужно будет отключить[1]
или стереть совсем, чтобы заработал первый оператор θ := FRAME°.
Системная переменная FRAME по умолчанию равна
нулю, следовательно угол θ
будет иметь нулевое значение. Но при создании анимации пакет Mathcad будет сам менять
значение переменной FRAME (см. ниже),
устанавливая разный угол поворота маховика: 0°, 1°, 2° и т.д. до 360°.
У нашей паровой машины
четыре узловые точки, которые мы пронумеровали 0, 1, 2 и 3[2],
первая из которых неподвижна. В эту точку мы поместим начало координат: y0 := 0m x0 := 0m. Переменные y0 и x0 – это не
нулевые значения векторов y и
x, а переменные с
нижним индексом – переменные с именами y0 и x0, где нули (индексы) опущены
чуть вниз. В среде Mathcad нижние индексы переменных вводятся с помощью точки в
имени переменной – y.0 и x.0. При уводе курсора от
такого имени переменной точка пропадает, а индекс смещается вниз. Система
координат у нас будет декартова. Но некоторые другие механические схемы (модель
колебания маятника, например [2]) лучше «помещать» в полярную систему
координат, которая также поддерживается в среде Mathcad. Правильный выбор
начала и системы координат может существенно упростить решение задачи. Также
очень важно определить узловые точки кинематической схемы и их нумерацию. Наша
задача плоская, но в среде Mathcad есть и трехмерная графика, что позволяет
реализовывать и объемные кинематические схемы с третьей координатой z.
Чтобы получить
изображение паровой машины нужно рассчитать координаты точек 1, 2 и 3 в зависимости
от значения угла
θ.
Это делается в области Mathcad-документа
(рис. 1) с именем Решение[3].
Более-менее сложный расчет требуется провести при определении ординаты точки 2 –
значения переменной x2: аналитически (символьно) решается уравнение длины шатуна. Это нелинейное уравнение,
вытекающее из теоремы Пифагора, имеет
два решения (корня) – шатун с заданными длиной l1
и координатами точки крепления на маховике (x1 и y1)
может находиться слева или справа от маховика. Оператор символьной математики solve, x2
возвращает два решения в виде вектора. Первый элемент этого вектора мы возьмем
в качестве решения нашей задачи – координаты x2.
Операторы l1:= l1,
y1:=y1,
x1:=x1
и y2:=y2,
записанные перед оператором solve, x2,
«глушат» численные значения переменных l1,
y1,
x1
и y2
для того, чтобы оператор solve, x2
вернул выражения, а не численные значения выражений. Операторы символьной
математики (на рис. 1 они прописаны на сером фоне) после их использования можно
убрать из расчета. Но мы их оставили, чтобы пояснить его ход. По правде говоря,
уравнение положения штока можно решить и в уме без привлечения компьютерной
математики аналитических (символьных) преобразований. Но мы эти инструменты
задействовали для того, чтобы показать, как символьная математика может помогать
решать задачи в среде пакета Mathcad.
Паровой цилиндр –
это прямоугольник (замкнутая линия, состоящая из четырех отрезков прямых линий),
который мы будем рисовать по его четырем вершинам. Векторы xc
и yc
будут хранить координаты этих вершин. Переменная Δ –
это значение «зазора» для цилиндра: на величину Δ
цилиндр будет больше крайних точек хода поршня, а диаметр цилиндра будет больше
диаметра поршня на величину 2Δ.
Рис. 2. Форматирование графика – схемы паровой машины
На рис. 2 зафиксирован
процесс вставки, заполнение и форматирования декартового
графика, с помощью которого рисуется паровая машина. У графика семь кривых (а
всего их может быть шестнадцать), описание которых (семь пар выражений) представлено
на осях графика и перечислено в окне форматирования графика:
Размер графика нужно
установить таким, чтобы маховик выглядел круглым (см.
рис. 1)[5].
Изменение размера графика ведется протяжкой мишкой его рамки. Кроме того, при
создании анимации нужно зафиксировать разброс графика по его осям. По умолчанию
пакет Mathcad
сам устанавливает этот разброс, ориентируясь на максимальные и минимальные
значения величин по осям абсцисс и ординат, которые могут меняться. Но в
процессе создания анимации этот разброс должен быть зафиксирован: на концах
графика мы записали -R-Δ и R+Δ
(ось X) и -R-Δ и R+l1+l2+Δ
(ось Y),
где Δ –
это некий зазор не только для цилиндра паровой машины (см. выше)
но и для графика. Если разброс графика не зафиксировать, то анимация будет
«кривая»: окружность будет деформироваться в эллипс и т.д.
До эры кино и
телевидения была популярна такая игрушка – блокнот с картинками человечка
в разных позах на разных страницах блокнота. Если блокнот просто перелистывать,
то движения человечка (анимации) не увидеть. Но если страницы блокнота отогнуть
и быстро опускать по одной, то возникнет анимация – нарисованный человечек
начнет двигаться. То же самое можно наблюдать и с нашим расчетом геометрических
параметров паровой машины. Если вручную менять значение переменной θ
и свернуть область Решение, то можно видеть, как меняется положение поршня,
штока, шатуна и маховика (это делается, повторяем, при отладке программы), но
анимации не получится. Анимация возникнет, когда скорость смены кадров будет,
по крайней мере, равна десяти кадров в секунду. «Перелистывать» наш «блокнот» в
среде Mathcad с изображениями паровой машины в разных фазах движения призваны
специальные инструменты создания
анимации – см. рис. 3.
Рис. 3. Создание анимации паровой машины
Для создания анимации
нужно, во-первых, передать управление независимой переменной анимации (у нас это
переменная θ – угол поворота маховика)
системной переменной FRAME (счетчик кадров
анимации). Это делается, повторяем, отключением оператора θ := 40º. Во-вторых, необходимо
вызвать диалоговое окно создания анимации (рис. 3) и установить в этом окне
нужные параметры анимации, а в-третьих, протяжкой мышкой определить область
анимации. На рис. 3 эта область отмечена пунктиром. При создании анимации она
будет отображаться в окне Запись анимации. Теперь после нажатия кнопки Анимировать (см. рис. 3) пакет Mathcad будет сам через
системную переменную FRAME менять значение угла
поворота маховика паровой машины θ
и запоминать кадры анимации. По завершению создания анимации появится окно с
анимацией – см. рис. 4. Эту анимацию можно запускать в
среде Mathcad, а можно сохранить на диске в виде avi-файла и
запускать уже без Mathcad
в
среде какого-либо проигрывателя (плеера) анимации Windows. Все! Паровая машина
создана, а мы себя почувствовали неким «создателем», «творцом», который может
вдохнуть жизнь в неподвижные виртуальные объекты.
Рис. 4. Анимации паровой машины
Читатель может
усложнить паровую машину – добавить к ней уже упоминавшийся легендарный
золотник, который «мал да дорог». Но если это покажется слишком сложным, то
можно сначала потренироваться на другой кинематической задаче – на задаче о
движении дворников (стеклоочистителей) автомобиля. Паровую машину мы, повторяем,
можем видеть только в музее или Интернете, но с автомобильными дворниками мы сталкиваемся чуть ли не каждый день.
Дворники автомобиля
также окружены легендами. Рассказывают, как один дирижер во время дождя возвращался
после концерта на такси домой. Шоферу приходилось часто останавливать машину,
чтобы протереть ветровое стекло. А дирижер в это время еще «жил» своим
концертом, отбивал в уме музыкальные такты и видел перед собой «метроном» –
руку, смахивающей со стекла дождевые капли. На следующий день настоящий, а не
воображаемый метроном с прикрепленной к нему щеткой был установлен на капоте
машины. Так, говорят, были изобретены автомобильные дворники.
В эпоху паровых машин
стояла задача преобразования поступательного движения во вращательное.
Решая задачу о паровой машине (рис. 1-4) мы немного схитрили – преобразовывали
не поступательное движение поршня во вращательное маховика, а решали другую
задачу – преобразовывали вращательное движение маховика в поступательное
движение поршня. Мы фактически реализовали не паровую машину, а поршневой
компрессор, приводимый в движение электромотором или двигателем внутреннего
сгорания. Тем не менее, анимация у нас получилась, и разбираться, «кто кого
движет», не так уж важно.
В настоящее время в
связи с повсеместным распространением электромоторов более актуальной стала
проблема передачи вращательного движения в поступательное.
Дворники автомобиля – это типичный пример такого преобразования.
Рис. 5. Задача о дворниках автомобиля
На рис. 5 помещен
расчет с помощью пакета Mathcad
узловых
точек кинематической схемы автомобильных дворников (параллелограмм, одну из
вершин которого «шевелит» криыошип) в зависимости от
угла поворота электродвигателя. Сердцевиной расчета является определение
координат точки 2. Здесь уже нужно будет решать не одиночное уравнение, как это
было в случае с паровой машиной (рис. 1), а систему двух нелинейных алгебраических уравнений. И решать эту
систему мы будем не аналитически (символьно[6]),
а численно через блок Given-Find (Дано-Найти),
встроенного в Mathcad (см. рис. 5). Численное решение системы
уравнений требует первого приближения к решению, которое задается операторами x2 := b и
y2 := h. Тут очень важно задать правильное
первое приближение, чтобы блок Given-Find выдавал «правильное» решение во
всем диапазоне изменения угла θ от 0° до 360°.
Ведь, опять же «шатун» дворника (линия 1-2) при ошибочном первом приближении
может оказаться на «ошибочной» стороне от точки 5[7].
Точка 6 лежит на прямой
линии с точками 3 и 4. Тут приходится сначала с помощью функции lsolve[8]
решать систему двух линейных алгебраических уравнений
y3 = A + B∙x3
y4 = A + B∙x4
и определять значения
коэффициентов А и В,
а затем решить еще одну систему двух уравнений, одно из которых нелинейно, и аходить координаты точки 6. Когда координаты всех точек
определены, легко можно создать анимацию движения дворников автомобиля по
методике, описанной выше для паровой машины – см.
рис. 2 и 3.
В конце
XIX
века на Всемирной выставке в Париже золотую медаль получила стопоходящая машина
нашего соотечественника математика П.Л. Чебышева[9].
В ней вращательное движение превращалось в движение, похожее на движение ноги
при ходьбе по ровной поверхности.
Рис. 6. Стопоходящая машина Чебышева
На рис. 6 показана кинематическая схема
одной «ноги» стопоходящей машины Чебышева, траектория движения ее точки 5 и распечатка
векторов x и y –
координат ее шести узловых точек, две из которых (1 и 2) неподвижны
относительно начала координат, лежащей на второй точке[10].
Отрезок прямой 2-3 совершает круговое движение вокруг точки 2. Координаты точки
0 можно найти, решив систему двух алгебраических уравнений, как мы это делали в
задаче о дворниках автомобиля (рис. 5). Предлагаем читателю самому
написать Mathcad-документ
создания анимации движения «ноги Чебышева» по методикам, описанным выше.
Расстояния между точками мы не указываем – их можно просто измерить,
прикладывая линейку к рис. 6. Наиболее сложно
будет заставить Mathcad
рисовать траекторию движения точки 5 (точки 4 – линия 4-5 строго вертикальна и ее
можно совсем убрать из задачи). Есть разные способы
рисования этой замкнутой пунктирной кривой. Можно, например, вручную протабулировать эту функцию: изменять значения угла θ
от 0° до 360° с шагом 10°, например, записывать в два вектора с 37 элементами,
получающиеся значения координат точки 5, а затем нарисовать эти точки на
графике, соединив их пунктиром. Точка 4 движется синхронно с точкой 5, точка 0
описывает дугу окружности[11],
точка 3 совершает круговое движение, а точки 1 и 2 неподвижны. В данной задаче главное так подобрать длины
рычагов, чтобы траектория движения точек 4 и 5 на некотором участке была
наиболее близка горизонтальной линии, а вся стопоходящая машина (а у нее две
пары таких ног, движущихся со сдвигом на 180°) передвигалась без ощутимых
вертикальных колебаний.
У Чебышева было много
последователей в плане создания стопоходящих машин[12],
переводящих вращательное движение в плавное
горизонтальное. Наиболее знаменитым из них является датчанин Тео Янсен (Theo
Jansen),
который сконструировал и построил машину, схема которой показана на рис. 7.
В этой машине так же можно менять длины между точками (суставами «ноги»), чтобы
перемещение опорной точки «стопы» было по возможности горизонтальным. У
стопоходящей машины Янсена только точки 0 и 1
неподвижны, остальные находятся либо в круговом, либо в более сложном (см. пунктирные линии на рис. 7) движении.
Рис. 7. Стопоходящая машина Янсена
На рис. 7 показаны две
«ноги» Янсена, одна из которых двигается с запаздыванием
на 180º. Тео Янсен построил такую машину из
дерева с десятком ног, которые приводятся в движение ветряным двигателем и «со
скрипом», но двигаются по пляжу. Это видео можно скачать из Интернета.
Данные и другие
кинематические схемы собраны на сайте http://communities.ptc.com/groups/kinematic-models-in-mathcad.
Несколько слов об этом
сайте. Этот сайт создан и поддерживается компанией PTC (www.ptc.com) –
владельцем пакета Mathcad.
Часть этого сайта отдана сообществу (communities) пользователям
пакета Mathcad для того, чтобы они могли общаться между собой, задавать
вопросы, вести блоги, обмениваться полезной
информацией и т.д. На этом сайте можно создавать так называемые группы (groups) по отдельным темам. Одна из таких «групп» имеет
название, совпадающее с названием данной статьи. С этого же сайта можно скачать
бесплатную пробную версию пакета Mathcad 15.
Читатель может сам по
ключевым словам «паровая машина», «стопоходящая машина Чебышева», «Theo Jansen» и др. найти в Интернете анимации,
описанные в статье. Но одно дело искать и запускать
анимации Интернета, а другое дело создавать их самому в виртуальном или
реальном виде!
При создании анимации в
среде Mathcad с его богатым математическим аппаратом можно решать не только
алгебраические уравнения (об этом было рассказано в статье), но и дифференциальные уравнения и системы. В этом случае допустимо учитывать не только кинематику моделей, но и их динамику. Узловые точки таких моделей
будут двигаться не только вследствие жестких связей, показанных на рисунках
статьи, но и под действием силы тяжести, силы инерции и других реальных
физических сил. Так в статье [2] описано, как можно
моделировать и анимировать в среде Mathcad движение планет и их спутников под
действием силы инерции и силы всемирного тяготения, а в статье [3] – движение
маятника под действием той же силы инерции, силы земного притяжения, силы
натяжения нити (жесткой или эластичной) и силы сопротивления вязкой среды, где
маятник качается.
Литература:
[1] Это делается с помощью специального переключателя, появляющегося после нажатия правой кнопки мыши, когда курсор находится на данном операторе. У выключенного из расчета оператора справа появляется метка – черный квадратик с правой стороны.
[2] В программировании счет, как правило, начинается не с единицы, а с нуля.
[3] Решение задачи заключено в область для того, чтобы ее, эту область можно было свертывать и видеть рисунок паровой машины сразу после операторов задания угла поворота маховика θ. Это упрощает процесс отладки программы: не нужно будет менять значение θ, а потом прокручивать экран дисплея по вертикали, чтобы увидеть рисунок. Свертывается область командой из списка, выпадающего при нажатии правой кнопки мыши (см. сноску 1). Вставляется область в расчет командой из меню Вставка. Область можно также защитить (с паролем или без пароля) от редактирования.
[4] Если переменная θ1
будет хранить дискретные данные не всей окружности, а только ее части (θ1 := 40°, 41°.. 90°, например), то будет нарисована
не вся окружность, а только ее часть – дуга. Такие пунктирные дуги можно
видеть на рис. 5 ниже.
[5] На рис. 2 маховик выглядит овальным из-за того, что пропорции графика несколько искажаются при его форматировании.
[6] Можно попытаться решить и аналитически, но решение
будет уж очень громоздким.
[7] В этом случае движение
автомобильных дворников может сопровождаться «судорогами» – шатун будет
появляться то справа, то слева от точки крепления. В принципе
первое приближение к решению должно быть не константой, а переменной величиной,
зависящей от переменной анимации θ.
[8] У функции lsolve два аргумента – матрица коэффициентов при неизвестных и вектор свободных членов системы линейных алгебраических уравнений. Матрица коэффициентов может быть и неквадратной. Это бывает тогда, когда решаются недоопределенные или переопределенные системы линейных алгебраических уравнений.
[9] В среде Mathcad, кстати, есть встроенная
функция, носящая имя этого знаменитого математика – Tcheb.
[10] Нумерация точек у нас опять же начинается с нуля и
идет в таком порядке, чтобы «ногу» стопоходящей машины Чебышева можно было нарисовать,
не отрывая карандаша от бумаги и не проводя одну линию дважды. Это позволяет
рисовать на графике ломаную кривую с помощью пары векторов x и y.
[11] Эту дугу можно также прорисовать пунктиром – см. сноску 4.
[12] У Чебышева было также много и предшественников в плане создания стопоходящих машин, но П.Л. Чебышев был первым, кто при конструировании таких механизмов стал использовать сложный математический аппарат. На рис. 6 показано устройство, «рисующее» некий сплюснутый с одного бока овал. Но математики доказали, что можно создать более сложное подобное механическое устройство, которое, например, может воспроизвести подпись любого человека…