Написание скриптов в математическом пакете MatLab

Лабораторная работа № 1

«Исследование динамики линейных систем, описываемых обыкновенными дифференциальными уравнениями»

Цель работы

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

Краткие теоретические сведения

Поведение динамической линейной системы автоматического управления может быть описано скалярным дифференциальным уравнением порядка Написание скриптов в математическом пакете MatLab - student2.ru

Написание скриптов в математическом пакете MatLab - student2.ru (1.1)

где Написание скриптов в математическом пакете MatLab - student2.ru – входной сигнал;

Написание скриптов в математическом пакете MatLab - student2.ru – выходной сигнал;

Написание скриптов в математическом пакете MatLab - student2.ru – порядок производной входного сигнала;

Написание скриптов в математическом пакете MatLab - student2.ru , Написание скриптов в математическом пакете MatLab - student2.ru и Написание скриптов в математическом пакете MatLab - student2.ru – постоянные коэффициенты.

При условии, что Написание скриптов в математическом пакете MatLab - student2.ru (требуется для физической реализуемости системы), уравнение (1.1) можно записать в виде системы уравнений первого порядка в нормальной форме Коши. Для этого вводятся в рассмотрение новые переменные состояния

Написание скриптов в математическом пакете MatLab - student2.ru (1.2)

С учетом введенных обозначений (1.2) уравнение (1.1) может быть переписано в следующем виде

Написание скриптов в математическом пакете MatLab - student2.ru (1.3)

Из уравнения (1.3) требуется найти выражение для старшей производной Написание скриптов в математическом пакете MatLab - student2.ru . Для этого необходимо перенести все остальные слагаемые в правую часть и поделить обе стороны уравнения на коэффициент Написание скриптов в математическом пакете MatLab - student2.ru . Тогда справедливо следующее уравнение

Написание скриптов в математическом пакете MatLab - student2.ru (1.4)

Систему (1.2) можно привести к следующему виду

Написание скриптов в математическом пакете MatLab - student2.ru (1.5)

Тогда система (1.5) и уравнение (1.4) формируют систему обыкновенных дифференциальных уравнений порядка Написание скриптов в математическом пакете MatLab - student2.ru , где в левой части каждого уравнения записывается лишь первая производная переменной состояния системы Написание скриптов в математическом пакете MatLab - student2.ru , а в правой части уравнений не присутствуют производные переменных состояния

Написание скриптов в математическом пакете MatLab - student2.ru (1.6)

Пример 1.1. Получить по заданному дифференциальному уравнению систему в нормальной форме Коши

Написание скриптов в математическом пакете MatLab - student2.ru . (1.7)

На основе (1.6) и (1.7) можно записать следующую систему уравнений

Написание скриптов в математическом пакете MatLab - student2.ru (1.8)

Далее необходимо полученную систему дифференциальных уравнений решить при помощи математического пакета MatLab.

Внимание! Типовые ошибки

1) Дробная часть в пакете MatLab, как и в большинстве языков программирования, отделяется от целой при помощи точки, а не запятой.

2) Имя функции начинается с символа английского алфавита, кроме букв содержит цифры, нижнее подчеркивание, не содержит кириллицы.

3) Имя вызываемой функции совпадает с названием m-файла MatLab.

4) Переменные в MatLab чувствительны к регистру вводимых символов, например, x и X – это две разные переменные.

5) Размерность системы Написание скриптов в математическом пакете MatLab - student2.ru совпадает с размерностями вектора параметров интегрирования, а также вектора начальных условий.

6) Без сохранения вызываемой функции после редактирования будет исполняться ранее сохраненный вариант.

Написание скриптов в математическом пакете MatLab

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

В меню MatLab выбрать пункт File®New®Script.

В открывшемся окне написать код в соответствии с листингом 1.1.

Листинг 1.1.

function dx=model1(t,x)

dx=zeros(3,1);

y=1;

dx(1)=x(2);

dx(2)=x(3);

dx(3)=1/2*(6*y-3*x(3)-4*x(2)-5*x(1));

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

В листинге 1.1 реализуется модель системы в соответствии с системой (1.8) из примера 1.1. Первая строка листинга начинается со служебного слова, определяющего данный скрипт в качестве вызываемой функции с именем model1, возвращающей вектор значений производных переменных состояния dx. В качестве входных параметров в данной функции заданы время t и переменные состояния x.

Вторая строка листинга 1.1 инициализирует размерность вектора dx, в данном случае используется вектор-столбец из трех значений (матрица размерностью Написание скриптов в математическом пакете MatLab - student2.ru ). В третьей строке задан вид входного воздействия, сначала это единичный сигнал.

Последние строки листинга 1.1 реализуют систему (1.8). Индексы переменных состояния записаны в круглых скобках.

Завершение строки точкой с запятой препятствует выводу рассчитанных значений в командное окно (Command Window) MatLab.

Открыть новый скрипт, выбрав пункт меню File®New®Script.

В открывшемся окне написать код в соответствии с листингом 1.2.

Листинг 1.2.

T=30;

X0=[0,0,0];

options=odeset('AbsTol',[1e-5,1e-5,1e-5],'RelTol',1e-5);

[t,x]=ode45('model1',[0,T],X0,options);

plot(t,x(:,1),'b-',t,x(:,2),'g--','LineWidth',2);

legend('x_1(t)','x_2(t)');

grid on;

xlabel('t, c');

ylabel('x_i(t)');

title('Реакция системы на входной сигнал y=1 при начальных условиях [0,0,0]');

annotation('arrow',[0.13 0.13],[0.13 0.95], 'HeadStyle', 'plain')

annotation('arrow',[0.11 0.92],[0.11 0.11], 'HeadStyle', 'plain')

Полученный листинг сохранить в файл, например, с именем lab1.m в той же самой папке.

В первой строке задана длительность времени, в течение которого будет осуществляться моделирование системы. Во второй строке задан вектор начальных условий на моделирование системы. В переменной options заданы условия на решение системы дифференциальных уравнений, значения абсолютной погрешности для каждой из переменных состояния и значение относительной погрешности на интегрирование, в данном случае равные Написание скриптов в математическом пакете MatLab - student2.ru , записанные по мантиссе.

Следующая строка кода возвращает значение времени и соответствующие значения переменных состояния в результате интегрирования функцией ode45, реализующей метод Рунге-Кутта 4-5 порядка точности. Параметрами этой функции являются название функции с моделью системы, интервал времени и начальные условия. В результате выполнения данной команды функция возвращает вектор моментов времени и матрицу переменных состояния в соответствующие моменты времени. Их значения можно увидеть после выполнения скрипта в окне Workspace пакета MatLab, двойным щелчком открыв их на просмотр. Другим способом является введение в командном окне имен переменных без точки с запятой в конце строки. Например, приведенные ниже команды позволят получить значения соответствующих переменных в командном окне

t

x

Размерность матрицы переменных состояния можно оценить командой

size(x)

Вектор времени будет иметь ту же длину, что и переменные состояния.

Команда plot позволит построить график функции Написание скриптов в математическом пакете MatLab - student2.ru сплошной кривой синего цвета (маркер ‘b-‘) и функции Написание скриптов в математическом пакете MatLab - student2.ru штриховой кривой зеленого цвета (маркер ‘g--‘). Для того, чтобы график был лучше виден при печати, в команде также задана толщина линии размером в 2 пункта.

Оставшиеся команды в листинге используются для оформления графика. Команда legend позволяет отобразить подписи к типу линий на графике. Команда grid on формирует координатную сетку на графике. Команды xlabel и ylabel позволяют настроить подписи к осям абсцисс и ординат соответственно. Команда title позволяет задать заголовок к рисунку с указанной подписью. Две последние команды выводят стрелки на осях системы координат.

После реализации данного кода необходимо запустить данный файл на исполнение, для этого нажать на клавишу F5 клавиатуры или нажать на кнопку с зеленым треугольником Run на панели инструментов MatLab. Подтвердить изменение пути к файлам.

Если код реализован правильно, в результате будет получен график с искомыми сигналами. Если же возникают ошибки, MatLab укажет в командном окне на строки, в которых они присутствуют в коде. Необходимо их устранить, сохранить файл и повторно запустить код на исполнение.

После построения графика его необходимо скопировать в отчет. Для этого перейти в окне с графиком в пункт меню Edit®Copy Options. Установить настройки копирования в буфер обмена в формате метафайла с сохранением данных Clipboard format®Preserve information (metafile if possible) и настройка прозрачного фона рисунка Figure background color®Transparent background.

Скопировать рисунок в буфер обмена Edit®Copy Figure и вставить в документ текстового редактора, например, Microsoft Word, в котором будет находиться отчет по лабораторной работе.

Исходные данные по вариантам

Таблица 1.1

Варианты параметров моделей

Вариант
порядок модели Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru 0,5 0,5
Написание скриптов в математическом пакете MatLab - student2.ru 0,5
Написание скриптов в математическом пакете MatLab - student2.ru - - - -
Написание скриптов в математическом пакете MatLab - student2.ru 2,5 7,5
Вариант
порядок модели Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru 0,5 0,5
Написание скриптов в математическом пакете MatLab - student2.ru 0,5
Написание скриптов в математическом пакете MatLab - student2.ru - - - -
Написание скриптов в математическом пакете MatLab - student2.ru
Вариант
порядок модели Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru 0,5 0,5
Написание скриптов в математическом пакете MatLab - student2.ru 0,5
Написание скриптов в математическом пакете MatLab - student2.ru - - - -
Написание скриптов в математическом пакете MatLab - student2.ru 2,5 7,5

Таблица 1.2

Варианты начальных условий

Вариант
Порядок модели Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru 0,5 -0,2 -0,5 0,3 -0,5 0,5 0,4 1,5 -0,5 0,5
Написание скриптов в математическом пакете MatLab - student2.ru 0,2 0,5 -0,5 - - - -
Вариант
Порядок модели Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru -1 1,5 1,5 -1 -1 1,5
Написание скриптов в математическом пакете MatLab - student2.ru -2 -1 0,5 -0,5 0,5 0,5 -1 0,5 -0,5
Написание скриптов в математическом пакете MatLab - student2.ru 0,5 0,2 0,4 -1 0,5 - - - -
Вариант
Порядок модели Написание скриптов в математическом пакете MatLab - student2.ru
Написание скриптов в математическом пакете MatLab - student2.ru 0,5 0,5 0,5 -0,5 -0,5 -0,5 0,5 0,5 -0,5 -0,5
Написание скриптов в математическом пакете MatLab - student2.ru -0,5 -0,5 -1 -0,5 0,5 1,5 -1 -0,5 1,5
Написание скриптов в математическом пакете MatLab - student2.ru -1 1,5 - - - -

Порядок выполнения работы

1.5.1. Ознакомиться с пакетом прикладных программ MATLAB (см. Приложение А).

1.5.2. В соответствии с вариантом задания (см. табл. 1.1) записать дифференциальное уравнение по аналогии с (1.1).

1.5.3. Получить систему в нормальной форме Коши в соответствии с (1.6).

1.5.4. Осуществить моделирование системы дифференциальных уравнений в математическом пакете MatLab, для чего реализовать два m-файла в соответствии с 1.3 (листинги 1.1 и 1.2).

1.5.5. Осуществить моделирование системы при следующих условиях:

а) Написание скриптов в математическом пакете MatLab - student2.ru . Начальные условия нулевые. Продолжительности интервалов моделирования подобрать самостоятельно. На монитор выводить графики сигналов Написание скриптов в математическом пакете MatLab - student2.ru и Написание скриптов в математическом пакете MatLab - student2.ru . При этом график функции Написание скриптов в математическом пакете MatLab - student2.ru будет являться графиком переходной характеристики Написание скриптов в математическом пакете MatLab - student2.ru , а график функции Написание скриптов в математическом пакете MatLab - student2.ru будет являться графиком импульсной переходной функции Написание скриптов в математическом пакете MatLab - student2.ru . Скопировать результаты в отчет. Оценить время переходного процесса и перерегулирование, а также установившееся значение переходной характеристики.

б) Написание скриптов в математическом пакете MatLab - student2.ru . Начальные условия ненулевые в соответствие с табл. 1.2. (внести соответствующие изменения в листинг второго скрипта в команде ode45, а также в названии рисунка title). На монитор выводить графики сигналов Написание скриптов в математическом пакете MatLab - student2.ru и Написание скриптов в математическом пакете MatLab - student2.ru . Скопировать результаты в отчет.

в) Написание скриптов в математическом пакете MatLab - student2.ru (внести изменение в первый скрипт, заменив строку кода y=1; на строку y=sin(t);). Начальные условия нулевые (внести соответствующие изменения в листинг второго скрипта в команде ode45, а также в названии рисунка title). Продолжительности интервалов моделирования подобрать самостоятельно. На монитор выводить графики сигналов Написание скриптов в математическом пакете MatLab - student2.ru и Написание скриптов в математическом пакете MatLab - student2.ru . Скопировать результаты в отчет.

г) Написание скриптов в математическом пакете MatLab - student2.ru . Начальные условия ненулевые (внести соответствующие изменения в листинг второго скрипта в команде ode45, а также в названии рисунка title). Продолжительности интервалов моделирования подобрать самостоятельно. На монитор выводить графики сигналов Написание скриптов в математическом пакете MatLab - student2.ru и Написание скриптов в математическом пакете MatLab - student2.ru . Скопировать результаты в отчет.

1.5.6. Оформить отчет в соответствии с 1.6.

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

Содержание отчета

Отчет должен содержать следующие разделы:

1.6.1. Титульный лист установленного образца, содержащий номер и название лабораторной работы, Ф.И.О. автора, учебную группу, Ф.И.О. и должность преподавателя, номер варианта, место и год выполнения работы

1.6.2. Цель работы.

1.6.3. Исходные данные в соответствии с вариантом задания.

1.6.4. Математическая модель динамической системы в форме обыкновенного дифференциального уравнения.

1.6.5. Полученная система дифференциальных уравнений в нормальной форме Коши.

1.6.6. Результаты моделирования системы.

1.6.7. Значение перерегулирования, установившегося значения и времени переходного процесса.

1.6.8. Выводы.

Вопросы для самоконтроля

1.7.1. Каким образом можно получить из обыкновенного дифференциального уравнения систему уравнений в нормальной форме Коши? Сколько уравнений будет в этой системе?

1.7.2. Назовите виды математических моделей системы?

1.7.3. Какой численный метод интегрирования реализует функция ode45?

1.7.4. Поясните принцип составления модели вход – выход?

1.7.5. На каких графиках построены переходная характеристика и импульсная переходная функция? Почему?

1.7.6. Как связаны между собой переходная характеристика и импульсная переходная функция системы?

1.7.7. Как связаны между собой сигналы Написание скриптов в математическом пакете MatLab - student2.ru и Написание скриптов в математическом пакете MatLab - student2.ru ? Почему?

1.7.8. Почему переходную характеристику и импульсную переходную функцию называют временными характеристиками?

Лабораторная работа № 2

«Типовые динамические звенья систем

автоматического управления»

Цель работы

Исследование динамических свойств временных и частотных характеристик типовых звеньев систем автоматического управления.

Наши рекомендации