
- •Тема 1 - MatLab научный калькулятор и
- •Тема 2 - Программирование в среде MatLab – 2 часа
- •Тема 5 - Регрессионный анализ статистических данных - 2 часа
- •3.2 Контрольные вопросы
- •Тема 4 Подсистема Statefiow пакета Simulink
- •4.4 Контрольные вопросы
- •5.2 Выполнение регрессии с данными пользователя
- •5.3 Контрольные вопросы
Алматинский университет энергетики и связи
Кафедра «Инженерная кибернетика»
Практические задания
для самостоятельного выполнения
по дисциплине «Моделирование и идентификация объектов управления»
для студентов специальности 5В070200 – Автоматизация и управление
Разработала: профессор Ибраева Л.К.
Алматы 2013
Рабочая программа дисциплины «Моделирование и идентификация объектов управления» предусматривает на изучение дисциплины 135 часов. Из них: 32 часа – лекции, 8 часов – практические занятия, 16 часов – лабораторные занятия, курсовая и самостоятельная работа студента.
Лабораторные занятия и выполнение курсовой работы по дисциплине «Моделирование и идентификация объектов управления» предполагают использование системы моделирования динамических объектов MatLab. Работа в этой системе может выполняться в различных режимах. Для эффективного использования системы студенту необходимо их освоить. Задания на практические занятия нацелены на поэтапное изучение студентами этих режимов.
Практические занятия включают следующие темы:
Тема 1 - MatLab научный калькулятор и
Тема 2 - Программирование в среде MatLab – 2 часа
Освоенные навыки используются при выполнении лабораторных работ №1, 6, 7.
2 Тема 3 - Моделирование в системе Simulink – 2 часа
Освоенные навыки используются при выполнении лабораторных работ №2,3,4,5.
3. Тема 4 - Подсистема Statefiow пакета Simulink - 2 часа
Освоенные навыки используются при выполнении лабораторной работы №3.
Тема 5 - Регрессионный анализ статистических данных - 2 часа
Освоенные навыки используются при выполнении лабораторной работы №7.
Оценивание выполнения практических заданий выполняется в соответствии с системой оценкой знаний, разработанной для данной дисциплины.
Тема №1 MatLab как научный калькулятор
Цель работы: освоение приемов работы в командном окне системы MatLab.
Примеры выполняются в командном окне системы.
>> – приглашение системы
Операции с числами:
Пример 1.1:
>> 25 + 17;
>>ans*7
Пример 1.2:
>> x=1+2i; y = -3+4i;
>>disp(x+y)
Пример 1.3:
>>disp(real(y)
>>disp(imag(y))
>>disp(angle(y))
Операции с векторами:
Пример 1.4:
Введите в командное окно
>>v1[1 2 3]; v2=[4 5 6];
>>v=[v1 v2]
Действия над векторами одинаковой структуры: + и - ; х' ; *;
Поэлементные операции: .* ; ./ ; .^ (перед знаком операции – точка).
Пример 1.5:
Вычисление значений функции Y = a*exp(-k*x)*sin(x) при значениях аргумента x от 0 до 10 с шагом 1можно выполнить при помощи следующих операторов:
>> a=3; k=0.5;
>> x = 0:1:10;
>>y= a*exp(-k*x).*sin(x)
Операции с матрицами:
Пример 1.6:
Введите в командное окно:
>>A=[2 4 5 8 10; 5 6 8 9 7]
Пример 1.7:
>> A = [1,2,3,4,5; -2,3,1,4,8]
>> B = [1,3,5,-2,1;1,8,-3,-1,2]
>> sin(A)
>> A .*B
Пример 1.8:
>> A = [1 2 3 4 5; 6 7 8 9 10]
>>A’
>> B =[ 0 -1 -2 – 3 -4; 5 6 7 8 9]
>> A’*B
>> C=A*B’
>> inv(C)
>> inv(ans) % для проверки обращение применяется к результату
>> A=[1 2;3 4]
>>A^2 % действие эквивалентно умножению матрицы на себя
>>A^(-2) % при отрицательной степени выполняется умножение обратной матрицы на себя
Пример 1.9: Требуется решить систему уравнений:
X1 + 2X2 + 3X3 = 14
2X1 + X2 - 5X3 = -15
X1 - X2 - X3 = -4
Решение:
>> A=[1 2 3;2 1 -5;1 -1 -1]
>> b=[14;-15;-4]
>> x=A\b
>> x= b*inv(A)
Операции с полиномами
Полином хранится в виде вектора, элементами которого являются коэффициенты полинома:
P = [an … a2 a1 a0]
Пример 1.10:
Найдем корни полинома P(x) = x5 + 8x4 + 31x3 + 80x2 + 94x + 20.
>>p=[1,8,31,80,94,20];
>>disp(roots(p))
Вычислим значение полинома при х=2:
>>y=polyval(p,2)
Обработка данных измерений
Пример 1.10а:
>> v=[1, 0.1, 0.5, 0.1, 0.1, 0.4]
>> disp(min(v))
>> disp (mean(v))
>> disp(std(v))
>> disp(sort(v))disp(prod(v))
>> disp(diff(v))
Пример 1.10б:
Вычислить интеграл от функции y = sin(x) в интервале от 0 до π:
>> x=0: pi/100:pi;
>> y=– sin(x);
>> disp (trapz(x,y) )
(точное решение равно 2).
При применении этих функций к матрицам, операции производятся по отношению к столбцам матриц.
Пример 1.10в: Пусть имеем три вектора значений некоторой функции при 5 значениях аргумента (не указанных). Применим рассматриваемые функции.
>> y1 = [5.5 6.3 6.8 8.8 6];
>> y2 = [-1.2 0.5 -0.6 1 0.1];
>> y3 = [3.4 5.6 0 8.4 10.3];
>> A = [y1’, y2’, y3’]
>> max (A)
>> mean(a)
>> std(A)
>> [M, n] = max(A) % M – максимальный элемент, n – номер строки в соответствующем столбце
Пример 1.10г:
>> А = [1 2 3; 5 6 0; -1 2 3]
>> det(A)
Аппроксимация и интерполяция данных
Пример 1.11:
>> x = [1 2 3 4 5 6 7 8];
>> y = [-1.1 0.2 0.5 0.8 0.7 0.6 0.4 0.1];
>> polyfit(x,y,1)
ans = 0.1143 -0.2393
Это означает, что заданная зависимость аппроксимирована прямой:
y(x) = 0.1143x – 0.2393
Построение графиков
Пример 1.12:
Пусть требуется вывести график функции
y=3sin(x+π/3) на промежутке от -3π до +3π
с шагом π/100.
>>x=-3*pi:pi/100:3*pi;
>>y=3*sin(x+pi/3);
>>plot(x,y), grid
Пример 1.13:
>>x=-3*pi:pi/100:3*pi;
>>y=-3*sin(x+pi/3);
>>plot(x,y), grid
>>title(‘Функция y=3sin(x+π/3)”);
>>xlabel(‘x’); ylabel(‘y”)
Пример 1.14: (Дополним пример 1.11). Построим в одном графическом окне графики заданной дискретной функции и графики аппроксимирующих полиномов первого, второго, третьего и четвертого порядков:
>> x = [1 2 3 4 5 6 7 8];
>> y = [-1.1 0.2 0.5 0.8 0.7 0.6 0.4 0.1];
>> P1=polyfit(x,y,1);
>> P1=polyfit(x,y,2);
>> P1=polyfit(x,y,3);
>> P1=polyfit(x,y,4);
>>stem(x,y);
>>hold
>>x=0.5:0.05:8.5;
>>y1=polyval(P1,x);
>>y2=polyval(P2,x);
>>y3=polyval(P3,x);
>>y4=polyval(P4,x);
>>plot(x,y1,x,y2,x,y3,x,y4);
>>grid:
>>title(‘Полиномиальная аппроксимация’);
>>xlabel(‘argument’);
>>ylabel(‘function’)
Пример 1.15: Можно не указывать аргумент функции при построении графика, тогда аргументом будет номер элемента вектора.
>> x= [1 3 2 9 6 8 4 9-6];
>> plot(x)
>> grid
>> title (‘График вектора x')
>> ylabel (‘значения элементов’)
>> xlabel (‘номер элемента’)
Более наглядно представить вектор в виде
столбчатой диаграммы (функция bar):
>> bar(x)
>> title (‘График вектора x')
>> ylabel (‘значения элементов’)
>> xlabel (‘номер элемента’)
Пример 1.16: График функции y=exp(-x^2) в виде столбчатой диаграммы:
>> x= -2.9:0.2:2.9:
>> bar (x, exp(-x.*x))
>>title(‘столбчатая диаграмма функции y=exp(-x^2) ’)
>>xlabel(‘аргумент х’)
>>ylabel(‘значение функции у’)
Пример 1.17: Построение гистограммы случайных величин:
>> x=-2.9:0.1:29;
>>y=randn(10000,1);
>>hist(y,x)
1.18 Контрольные вопросы
1.18.1 Что собой представляет система Matlab?
1.18.2 Назовите основные элементы командного окна системы Matlab.
1.18.3 Что является основным объектом системы?
1.18.5 Как можно ввести в командное окно вектор-строку и вектор-столбец?
1.18.6 Какие зарезервированные переменные в системе Matlab вы знаете?
1.18.7 В чем отличие ввода вектора и матрицы?
1.18.8 Как вводятся комплексные переменные?
1.18.9 Как можно найти обратную матрицу?
1.18.10 Как можно решить систему линейных алгебраических уравнений?
1.18.11 Как находятся корни полинома?
1.18.12 С помощью какой процедуры строятся графики функций?
1.18.13 Как можно найти минимальное, максимальное или среднее значение массива данных.
1.18.14 В чем отличие обычного знака арифметический операции от того же знака с добавленной впереди точкой?
1.18.15 Какие функции используются для аппроксимации данных?
Тема №2 Программирование в среде MatLab
Цель работы: изучить основы создания процедур пользователя.
Программа создается в окне установленного редактора: Файл-Создать-M-файл
Пример 2.1: Составим М-файл для вычисления значения функции: y = f1(x) = a2*ctg(x)*sqrt(sin4(x) – cos4(x). Для этого в окне редактора наберем следующий текст:
function y = f1(x, a)
%Процедура вычисления значения функции
% y = f1(x) = a2*ctg(x)*sqrt(sin(x)^4 – cos(x)^4)
%Обращение y = f1(x,a).
y = (a^2)*cot(x).*sqrt(sin(x).^4 – cos(x).^4);
Сохраним этот текст в файле f1.m.
Введем в командное окно:
>> y = f1(1, 0.1)
Если хотим получить вектор значений функции при различных значениях аргумента, вначале сформируем вектор аргументов:
>> z = 0 : 0.3 : 1.8;
И обратимся к процедуре следующим образом: >> y = f1 (z,1)
Чтобы получить информацию о созданной процедуре, наберем >> help f1
Пример 2.2:
Оформите текст примера 1.14 как файл-функцию, сопроводив ее необходимыми комментариями. Для этой процедуры нет необходимости передавать переменные из командного окна. Поэтому первую строку этой процедуры можно оформить следующим образом: function appr;
Сохраните файл под именем appr.m. Вызовите программу из командного окна. Чтобы получить информацию о созданной процедуре, наберите help appr.
Пример 2.3: Измените процедуру примера 2.2 таким образом, чтобы переменные передавались из командного окна.
Некоторые стандартные функции:
Пример 2.4. Найдем число π как значение локального минимума функции y = cos(x) на отрезке [3,4]:
>> Xmin = fmin(‘cos’,3,4) % минимум функции одной переменной
Пример 2.5: Найдем минимум функции y = (x-1)^2 + 3 на отрезке [0,5]. Вначале сформируем файл-фунцию:
function y = parab (x)
y = (x-1).^2 + 3
plot(x,y)
Сохраним ее в файле parab.m.
Затем в командном окне наберем:
>> x= -5:1:5
>>y=parab(x)
>> xmin = fmin(‘parab’, 0,5)
Пример 2.6. Введите текст файл-функции:
function z=parab1(x)
%минимум функции нескольких переменных
z=(x(1)-1).^2 + (x(2).^2-2*x(2))
Сохраните в файле parab1.m.
Наберите в командном окне:
>>x0=[0 0];
>>xmin=fmins(‘parab1’,x0)
Пример 2.7. Введите текст файл-функции:
function z=koren(x)
%поиск корней функции одного аргумента
я=(x.^2 -3*x+2
Сохраните в файле koren.m.
Наберите в командном окне:
>>x0=1.5;
>>k=fzero(‘koren’,x0,0.001)
%Здесь: х0-нач.знач., 0.001-относит погрешн.
Пример 2.8. Требуется решить дифференциальное уравнение
y’ = -y, с начальным условием y(0)= 1.
Откроем окно редактора системы и запишем в нее текст файл-функции:
function dy=f1(t,y)
dy=-y
Сохраним файл с именем f1.
В командном окне введем:
>>[t,y] = ode45('f1',[0 5],1)
Здесь мы установили интервал решения уравнения - [0 5], начальное значение переменной состояния – 1, параметр options не указывали. Система выдаст в командное окно числовые значения переменных. Чтобы просмотреть график, наберите >>plot(t, y)
Пример 2.9. Рассмотрим следующую систему:
Для решения этой системы создадим М-файл со следующим текстом:
function dy = rigid(t,y)
dy = zeros(3,1); % вектор-столбец
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
Сохраним файл.
Решаем систему на интервале [0 12] с вектором начальных условий [0 1 1]:
>> [t,y] = ode45('rigid',[0 12],[0 1 1]);
Отразим решение на графике: >> plot(t,y)
2.9 Контрольные вопросы
2.9.1 Какие режимы работы в системе Matlab вы изучили?
2.9.2 Как создается процедура пользователя?
2.9.3 Какие стандартные функции в Matlab вы знаете?
Тема №3 Моделирование систем в пакете Simulink
Цель работы: изучение пакета Simulink.
3.1 Работа в Simulink
Запуск пакета: Файл-Создать-Модель или соответствующая кнопка на панели инструментов. Необходимые блоки выбираются из соответствующих разделов библиотеки и с помощью мыши переносятся в окно создаваемой модели (по умолчанию это окно называется Untitled). Блоки соединяются с помощью линий, которые рисуем с помощью мыши (как от входного порта к выходному, так и наоборот). Описание блоков приведено в [2].
Пример 3.1. Необходимо синтезировать комбинационное цифровое устройство (КЦУ) на элементах И-НЕ на три входа, выходной сигнал которого совпадает с большинством входных сигналов. Это словесное описание условий функционирования КЦУ. Ему соответствует таблица истинности:
№ набора |
X3 |
X2 |
X1 |
y |
1 2 3 4 5 6 7 8 |
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
0 0 0 1 0 1 1 1 |
Схему модели можно собрать непосредственно по таблице истинности (рис.1). Здесь используются блоки Mux, Combinatorial Logic. Рядом со схемой представлен блок настройки блока Combinatorial Logic.
Чтобы выполнить условие задачи - синтезировать КЦУ на элементах И-НЕ на три входа, используем для моделирования совершенные нормальные формы (СНФ).
Формула в СДНФ (совершенная нормальная дизъюнктивная форма):
Для создания модели, описывающей работу цифрового устройства на базе этой формулы, используются блоки логических операций (Logical Operator) – рис.2.
Рис.1 –Схема цифрового устройства, синтезированная на основе таблицы истинности
Рис.2 – Схема цифрового устройства, синтезированного на основе структурной формулы в СДНФ