Brian_-_Matlab_R2007_s_nulya_33 (771739), страница 30
Текст из файла (страница 30)
Существует два способа решить эту проблему. В любом случае не допускайте использования символа многоточия. (Лучше всего вводить точки через пробел, продолжать ввод, затем вернуться и удалить пробелы. — прим. пер.) Можно отключить функцию автозамены в программе ЧЧого, которая преобразует три точки в специальный символ многоточия. Проще всего это делается с помощью нажатия сочетания клавиш Щ+~~Д после трех точек. Можно также выбрать команду меню Тоо1в э Аиро Соггее! (Сервис + Авто- замена) и изменить настройки. Проблема с символом многоточия, описанная в текущем разделе, является лишь одной из многих проблем такого рода. Различные виды автоматического форматирования, которые предоставляет программа ЧЧоп), конфликтуют с программой МАТЮКАВ.
Вот несколько ярких примеров: дроби (сочетание 1/2 преобразуется в одинарный символ 8); сочетание символов: ) (конструкция, часто используемая для определения строк матрицы) программа ЧЧогб преобразует в улыбающееся лицо (смайлик) О; разнообразие черточек вносит хаос в попытки программы МАТ1.АВ интерпретировать обыкновенный дефис, как знак вычитания. Поэкспериментируйте с командой меню Тоо1э э Ац1о Соггее$ (Сервис э Автозамена) программы ЧЧогб и, если вы регулярно используете М-книги, отключите некоторые изпараметров.
А вот еще более серьезная проблема. Если вы вырезаете и вставляете строки символов в ячейку ввода, символы с оригинальным (исходным) шрифтом могут быть преобразованы в нечто не совсем понятное в ячейке ввода со шрифтом Сонг)ег. Невероятные и маловразумительные сообщения об ошибках при выполнении являются предупреждением об этой проблеме. В общем, вам не следует копировать ячейки для вычисления, если только это не ячейка, которая уже была успешно вычислена; гораздо безопаснее будет ввести новую строку. Наконец, нам встречались примеры, в которых без какой-либо видимой причины прерывалось вычисление ячейки.
Если это происходит и у вас, попробуйте снова нажать сочетание клавиш ~~'Я~Щ. Если это не даст результатов, то вашим единственным выбором будет удалить сбойную ячейку и ввести ее заново. ГЛАВА 8. Программа ЯгпЮп1с 3$ В экой глане мы рассмоарим модуль Ь~пмбпЕ, программу из пакега МА'П.АВ, пред- Глава 8. Программа 3!пзиПпк ь " е"- ц Интегратор е Интегратор! Рис. 8.4. Пфвая стадия модели в гфофаммв $1тидп!с Теперь нам необходимо использовать дифференциальное уравнение, которое можно записать в форме и" и -Зи - 2и'. Нам необходимо добавить другие блоки, чтобы связать и", ввод первого блока 1п1вйга1ог (Интегратор), с и и и ' соответственно этому уравнению, Для этой цели мы добавляем два блока Оа!и (Увеличение), которые выполняют умножение по константе, и один блок Звп (Сумка), используемый для сложения.
Все они выбираются из библиотеки Мв1й Орегайопв (Математические операции) (седьмая сверху на Рис. 8.2 и первая во второй строке на Рис. 8.1). После их извлечения (тем же способом, что и блоки !а!евга1ог (Интегратор)) мы получим окно модели, которое выглядит так (Рис. 8.8). Увелнченне1 Рис. В.5. Вто~ая опадая модели в профамме$!тидп!с Нам необходимо вернугься назад и отредактировать свойства блоков Оа!и (Увеличение), чтобы изменить константы, на которые они умножаются, со значения по умолчанию 1 на -б (блок Оа1п (Увеличение)) и -2 (блок Оа1п1 (Увеличение 1)).
Для этого по очереди щелкните мышью на каждом из блоков Ов!и (Увеличение). Откроется диалог В!оса Рагапге1ега (Параметры блока), в котором можно изменять параметры, как вам требуется. Далее, нам необходимо направить и ', вывод первого блока!и!епга!ог (Интегратор), к порту ввода блока Оа!п1 (Увеличение 1). При этом возникает проблема, так как блок 1п1ейга1ог (Интегратор) имеет только один порт вывода, и он уже присоединен к следующему блоку. Поэтому нам необходимо познакомиться с разветвлением линий.
Поместите указатель мыши на середине стрелки, соединяющей два блока 1п1ейга1ог (Интегратор), нажмите и не отпускайте клавишу Щ одной рукой, одновременно нажмите левую кнопку мыши другой рукой, и перетащите указатель мыши к порту ввода блока Оа1п1 (Увеличение 1). Мы почти закончили, но нам нужен еще блок для просмотра вывода. Откройте библиотеку 3!пкэ (Приемники) и перетащите копию блока Зсорв (Экран) в окно модели. С помощью разветвления линии соедините этот блок с линией, соединяющей блоки 1п!вйга!ог1 (Интегратор 1) и Оа1п (Увеличение). Здесь вам может понадобится переделать названия блоков (путем редактирования Мдт(АВ (52 текста под каждым блоком), а также названия некоторых стрелок.
В результате получится модель, показанная на рисунке ниже (Рис. 8. 6). Увеличение! Рис. 8 6. Модель для уРавнеиияи "= -5и - 2 и о пРозрамме Зови((эл Теперь все готово для запуска процесса симуляции. Сначала следует сохранить модель, используя команду меню Рйв э Зачв вэ... (Файл э Сохранить как). Модели можно присвоить имя Матрос(оэо. (Программа МАТ(.АВ автоматически добавляет расширение файла .пий, предназначенное для моделей.) Чтобы видеть, что происходит во время симуляции, двзжды щелкните мышью на блоке Зсорв (Экран), чтобы открыть экран «осциллографа», на котором и будет изображаться как функция от 5. Разумеется, необходимо также задать начальные условия; это можно сделать, дважды щелкнув мышью на блоках 1п1ейгв1ог (Интегратор) и изменив строку 1и!Зв! Сопбй)оп (Начальное условие) в диалоге В)ос)г Рвгвпе(вгэ (Параметры блока).
Например, предположим, что мы задаем начальное условие для ц' (в первом блоке 1п1вдгв(ог (Интегратор)), как значение 5, и условие для и (во втором блоке 1п(епга(ог( (Интегратор 1) ), как значение 1. Другими словами, мы решаем систему линейных уравнений и" + 2и' + 5ц = 0 ц(0) = 1 ц'(О) 5 которая имеет точное решение и(К) Зе-К вйп(2В) + е-с сов(2с) Перейдите в меню З)пш)вбоп (Симуляция) и выберите команду З(ап' (Запуск).
В окне Зсоре (Экран) вы должны увидеть нечто похожее на то, что изображено на Рис. 8.7. Разумеется, это просто график функции зе-к вйп(2к) + е-к сов(2в). (Кстати, вам может понадобится изменить масштаб на вертикальной оси в окне Зсорв (Экран). Щелчок мышью на значке с изображением бинокля производит автоматическое перемасштабирование, а щелчок правой кнопкой мыши на вертикальной оси открывает меню Ахея Ргорег(!ев... (Свойства осей), которое позволяет вам выбирать вручную минимальные и максимальные значения зависимой переменной.) Если необходимо, то можно легко вернуться обратно, изменить некоторые параметры и снова перезапустить симуляцию.
154 Выходной сигнал этой исправленной модели (со значениями по умолчаник~ О.) для поля (4о1вв рочавг (Мощность щума) и 0.1 для поля Ваптр1е 1нпв (Эталонное время)) показан на рисунке (Рис. 8.9). Эффект пс)ма в системе ясно различим в процессе симуляции. Глава 3. Программа 81лзц11лз Для упрощения допустим, что радиус шкивов и размер контейнера не учитываются и что шкив в верхней правой части может перемещаться горизонтально, гак чтобы оператор крана мог регулировать параметры и (разделение двух шкивов) и 1 (длина троса, удерживающего контейнер) как угодно.
Точку отсчета мы размещаем на зафиксированном шкиве, так, чтобы на основе параметров и, 1и 9 (угол отклонения троса от вертикали) контейнер находился в точке с координатами (х,у) =(и,О)+(1з(пд,— 1созд) =(и+1япд,— 1созд). (8Л) Давайте произведем и дальнейшее упрощение: допустим, что оператор крана перемещает контейнер в три этапа, где на первом этапе контейнер поднимается вертикально вверх, на втором этапе величина 1 (длина троса, соединяющего контейнер с подвижным шкивом) сохраняется постоянной, и на третьем этапе контейнер опускается вниз. Этапы 1 и 3 не особенно интересны, поэтому мы сосредоточимся на этапе 2; это означает допущение, что величина 1 сохраняется постоянной, а величина и является функцией времени, выбираемого оператором крана, с начальным значением и, и конечным значением мд.
Пусть ж будет массой контейнера. Чтобы получить уравнения движения, отметьте, что кинетическая энергия К и потенциальная энергия силы тяжести Ч контейнера задаются следующим образом: К = ™((~)'+(у')' = — ((и/+1(созд)д)'+(1(апд)д')') 2 2 2 = т(( ')'+1'(д')'+21иг(созд)д') Р = т1 у = — ту! соз д. (8.2) В лагранжевой механике уравнение движения выглядит так: дЕ с( дЕ дд сй дд' где функция Лагранжа есть Ь ~ К вЂ” Ч, поэтому (после деления на постоянный множитель ж) мы получаем Нам необходимо смоделировать результат поднятия контейнера с земли в точке (мз,-1э), его перемещения и повторного размещения в точке (и„-1э).
В частности, необходимо контролировать поперечные колебания, так, чтобы качающийся контейнер не ударил что-либо или кого-либо. Для упрощения допустим, что единственными силами, воздействующими на контейнер, являются упругость троса (которая может изменяться во времени) и сила тяжести. (Например, мы не принимаем в расчет сопротивление воздуха.) 156 МАт).А — е[ яп д — Ью'(()(яп д)д' = — (1'д'+ 1н/(() соя д) й = ['д" + [>к"(() сов д — [)к'(()($1П д)д', или (после деления на Ь ) д'+-и/Ясояд+ — 5(пд = О, (8,3) 1 Ы 1 которое представляет собой обыкновенное уравнение маятника (нелинейное уравнение маятника рассматривается в главе 10) с дополнительным элементом, включающим м" (с), горизонтальным ускорением крана.
Теперь мы можем построить модель программы 8)пш!!и!с для нашего крана. Можно поэкспериментировать с различными возможностями для м(К) и посмотреть, какой это окажет эффект на величину колебания троса, 6(к). В качестве единиц измерения воспользуемся метрами и секундами и примем значения и = 9.8] м/с~, 1 = 5 м, мэ = 0 и мз = 10 м. Время, необходимое для перемещения контейнера, должно быть порядка нескольких минут, или, скажем, 200 секунд. Таким образом, нам необходимо, чтобы м была непрерывной функцией, предпочтительно с непрерывной второй производной (так как сила мотора, вращающего шкив, пропорциональна и" и должна быть непрерывной временной функцией), со значениями м(0) = 0 и м(200) = 10.