Лабораторные работы проводятся с целью приобретения студентами навыков по моделированию и исследованию динамических систем на основе применения пакета MATLAB.

ЛАБОРАТОРННАЯ РАБОТА №1

Методы решения обыкновенных дифференциальных уравнений движения механических систем

1.1. M-файлы

Файлы, которые содержат коды языка MATLAB, называются М-файлами. Для создания М-файла используется текстовый редактор, который входит в состав системы MATLAB. Он называется M-file Editor/Debugger и может быть вызван из командной строки MATLAB командами edit или edit <имя файла>. Вызову М-файла предшествует присваивание значений входным аргументам; ре­зультатом является значение выходной переменной. Таким образом, вся процедура включает две операции:

• создать М-файл, используя текстовый редактор

function y=F1(x, d)

y=(d^3)*cot(x)*sqrt(sin(x).^4-cos(x).^4);

• вызвать М-файл из командной строки или из другого М-файла и ввести команду

>> y=F1(0.8,2)

Получим такой результат:

y = 1.3277.

Типы М-файлов. Существует два типа М-файлов: М-сценарии и М-функции со следующими характеристиками:

Сценарии являются самым простым типом М-файла - у них нет вход­ных и выходных аргументов. Они используются для автоматизации много­кратно выполняемых вычислений. Сценарии оперируют данными из рабо­чей области и могут генерировать новые данные для последующей обработки в этом же файле. Данные, которые используются в сценарии, сохраня­ются в рабочей области после завершения сценария и могут быть использо­ваны для дальнейших вычислений.

НЕ нашли? Не то? Что вы ищете?

1. 2. МАТLAB –инструмент для реализации машинных моделей.

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

В качестве независимой переменной в динамических системах обычно выступает время, от которого зависят неизвестные искомой функции, определяющие поведения объекта. Математическое описание модели в общем виде

,

где – n-мерные векторы и непрерывна.

Для решения систем обыкновенных дифференциальных уравнений (ОДУ) в MATLAB поддерживаются различные методы, которые носят обобщенное название solver («решатель»):

• ode45 – одношаговые явные методы Рунге-Кутта 4-го и 5-го порядков. Это классические методы решения, рекомендуемые в качестве первого шага. Во многих случаях они дают хорошие результаты.

• ode23 – одношаговые явные методы Рунге-Кутта 2-го и 4-го порядка. При умеренных требованиях к жесткости системы ОДУ и к точности решения эти методы могут дать выигрыш в скорости решения.

• ode113 – многошаговый метод Адамса-Башворта-Мултона переменного порядка. Это адаптивный метод, который может обеспечить высокую точность решения.

• ode15s – многошаговый метод переменного порядка (от 1-го до 5-го по умолчанию), использующий формулы численного дифференцирования. Это адаптивный метод, его стоит применять, если метод ode45 не обеспечивает решение.

• ode23s – одношаговый метод, использующий модифицированную формулу Розенброка 2-го порядка. Может обеспечить высокую скорость вычислений при низкой точности.

• ode23t – метод трапеций с интерполяцией. Этот метод дает хорошие результаты при решении задач, описывающих осцилляторы с почти гармоническим выходным сигналом.

• ode23tb – неявный метод Рунге-Кутта в начале решения и метод, использующий формулы обратного дифференцирования 2-го порядка, в последующем. При низкой точности этот метод может оказаться более эффективным, чем ode15s.

Все указанные методы позволяют решать системы уравнений явного вида . Методы ode15s, ode23s, ode23t и ode23tb обеспечивают решение уравнений неявного вида . И, наконец, все методы, за исключением ode23s, позволяют решить уравнения вида .

Для решения систем дифференциальных уравнений можно использовать следующие функции:

•[T, Y] = solver(‘F’,tspan, y0).

Эта функция с tspan = [t0 tfinal] интегрирует систему дифференциальных уравнений вида от времени t0 до tfinal с начальными условиями y0, где ‘F’ – строка, содержащая имя ODE-файла. Функция F(t, y) должна возвращать вектор-столбец. Каждая строка в массиве решений y соответствует времени, возвращаемому в векторе-столбце t. Для получения решений в конкретных точках t0, t1, …, tfinal (расположенных в порядке уменьшения или увеличения) нужно использовать tspan = [t0 t1 … tfinal].

• [T, Y] = solver(‘F’,tspan, y0,options).

Функция дает решение, подобное описанному выше, но с параметрами, определяемыми значениями аргумента options, созданного функцией odeset. Обычно используемые параметры включают допустимое значение относительной погрешности RelTol (1e-3 по умолчанию) и вектор допустимых значений абсолютной погрешности AbsTol (все компоненты равны 1e-6 по умолчанию).

• [T, Y] = solver(‘F’,tspan, y0,options, p1,p2...).

Функция дает решение, подобное описанному, помещая дополнительные параметры p1, p2… в m-файл F всякий раз, когда он вызывается. Используйте options = [ ], если никаких параметров не установлено.

• [T, Y,TE, YE, IE] = solver(‘F’,tspan, y0,options).

В дополнение к описанному решению содержит свойства Events, установленные в структуре options в положение ‘on’. ODE-файл должен быть кодирован так, чтобы функция F(t, y,’events’) возвращала соответствующую информацию. Выходной аргумент TE – вектор-столбец времен, в которые происходят события (events), строки YE являются соответствующими решениями, и индексы в векторе IE определяют, какое событие (event) произошло. Когда происходит вызов функции без выходных аргументов, по умолчанию вызывается выходная функция odeplot для построения вычисленного решения.

Параметры интегрирования (options) могут быть определены и в ODE-файле, и в командной строке. Если параметры определены в обоих местах, определение в командной строке имеет приоритет.

1.3. Решение систем дифференциальных уравнений движения динамических систем.

Общий порядок программирования решения системы ОДУ:

1) создается M-функция с описанием правых частей дифференциальных уравнений;

2) создается M-сценарий с выбранным решателем.

Пример.

Исследовать движение точки в вертикальной плоскости, брошенной с поверхности земли с заданной скоростью, при действии на неё силы сопротивления, пропорциональной скорости движения.

Дифференциальные уравнения движения точки имеют вид:

(1.3.1)

Эти уравнения сводятся к следующей системе уравнений:

(1), (3),

(1) = (1), (3)(3). (1.3.2)

Примем = 0.03 и создадим M-функцию с именем examp. m.

function dx1=examp(t, x);

dx1=[-0.03*x(1);x(1);-0.03*x(3)-9.81;x(3)]

Тогда решение системы с помощью решателя ode45 реализуется командами:

[t, x]=ode45('examp',[0 87],[600; 0; 600; 0]);

plot(x(:,2),x(:,4),'-').

Здесь время движения задано от 0 до 87c.;

Начальные условия: ==600 м/с., =0.

Вид полученной траектории движения точки показан на рис. 1.3.1.

 

Рис. 1.3.1. Траектория движения точки.

2.1 Применение операционной среды SIMULINK к задачам динамики машин

SIMULINK – пакет для моделирования и анализа динамических систем. Графический интерфейс SIMULINK используется на всех стадиях моделирования и значительно облегчает работу. Этап подготовки модели заключается в сборке схемы процесса из готовых, заложенных в SIMULINK элементов и настройке параметров системы. Чтобы упростить подготовку модели применяются блочные диаграммы. Для введенной модели можно проводить собственную симуляцию, исследовать равновесия и выводить результаты в графическом и цифровом виде.

Для моделирования необходимо подготовить систему. После открытия

После открытия командного окна системы MATLAB нажать кнопку (Simulink) на панели инструментов. В результате появится окно Simulink Library Browser; в нём представлены по группам элементы и блоки, из которых составляется модель. Модель формируется в специальном окне, см. рис 2.1, и работа происходит следующим образом: из окна Simulink Library Browser перетаскиваются нужные элементы и соединяются друг с другом.

На рис. 2.1.1 представлена модель, отвечающая уравнениям:

Рис. 2.1.1. Окно подготовки модели.

Для данного примера принято: /=0.03, =9.81.

Для запуска симуляции использовать команду Simulation ‌| Start.

Построим модель автоколебательной системы. Рассмотрим случай, когда при силе сопротивления, изменяющейся по нелинейному закону, дифференциальное уравнение движения имеет вид

= 0, где<0, а > 0.

Окно модели и результаты моделирования показаны на рис. 2.1.2.

Рис. 2.1.2. Схема модели, график колебаний, фазовая траектория.

2.2. Редактор динамических систем.

Для системы обыкновенных дифференциальных уравнений можно подготовить модель при помощи специального блока Differential Equation Editor (Редактор дифференциальных уравнений). В этом случае диаграмма состоит из специального блока DEE, в котором содержится описание модели в виде системы дифференциальных уравнений первого порядка и начальных данных, и блока вывода. Вызов редактора реализуется вводом команды dee в командном окне системы MATLAB.

 

Рис. 2.2.1

На рис. 2.2.1 показаны окно редактора для задачи, описываемой уравнениями (1.3.1), схема модели и результаты моделирования.