Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика_домашние_задания.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
287.74 Кб
Скачать

Алматинский университет энергетики и связи

Кафедра «Инженерная кибернетика»

Практические задания

для самостоятельного выполнения

по дисциплине «Моделирование и идентификация объектов управления»

для студентов специальности 5В070200 – Автоматизация и управление

Разработала: профессор Ибраева Л.К.

Алматы 2013

Рабочая программа дисциплины «Моделирование и идентификация объектов управления» предусматривает на изучение дисциплины 135 часов. Из них: 32 часа – лекции, 8 часов – практические занятия, 16 часов – лабораторные занятия, курсовая и самостоятельная работа студента.

Лабораторные занятия и выполнение курсовой работы по дисциплине «Моделирование и идентификация объектов управления» предполагают использование системы моделирования динамических объектов MatLab. Работа в этой системе может выполняться в различных режимах. Для эффективного использования системы студенту необходимо их освоить. Задания на практические занятия нацелены на поэтапное изучение студентами этих режимов.

Практические занятия включают следующие темы:

  1. Тема 1 - MatLab научный калькулятор и

Тема 2 - Программирование в среде MatLab – 2 часа

Освоенные навыки используются при выполнении лабораторных работ №1, 6, 7.

2 Тема 3 - Моделирование в системе Simulink – 2 часа

Освоенные навыки используются при выполнении лабораторных работ №2,3,4,5.

3. Тема 4 - Подсистема Statefiow пакета Simulink - 2 часа

Освоенные навыки используются при выполнении лабораторной работы №3.

  1. Тема 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 – Схема цифрового устройства, синтезированного на основе структурной формулы в СДНФ