Глава 6- среда динамического моделирования Матлаб 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Глава 6- среда динамического моделирования Матлаб



Среда моделирования Matlab

Matlab— одна из систем автоматизации математических расчетов, построенная на расширенном представлении и применении матричных операций. Это нашло отражение в названии системы — MATrix LABoratory — матричная лаборатория. Matlab — это коллекция программ численных методов компьютерной математики, сочетаемое с мощными средствами графической визуализации и анимационной графики.

В области математических вычислений Matlab имеет: - матричные, векторные, логические операторы; элементарные и специальные функции; полиномиальную арифметику; многомерные массивы; массивы записей; массивы ячеек.

В области визуализации и графики:

- возможность создания двумерных и трехмерных графиков;

- осуществление визуального анализа данных;

- функции визуализации: вывод на экран двумерных изображений, поверхностей и объемных фигур в виде прозрачных объектов;

- инструментальная панель Camera для управления перспективой;

- инструменты проектирования графического пользовательского интерфейса;

- обработка (регрессия, интерполяция, аппроксимация и вычисление основных статистических параметров) графических данных прямо из окна графики.

В Matlab задачи расширения системы решаются с помощью специализированных пакетов расширения - наборов инструментов (Toolbox). Многие из них содержат специальные средства для интеграции с другими программами, поддержки объектно-ориентированного и визуального программирования, для генерации различных приложений. Приведем некоторые из Toolbox.

Simulink for Windows- пакет расширения Simulink служит для имитационного моделирования моделей, состоящих из графических блоков с заданными свойствами. Компоненты моделей, в свою очередь, являются графическими блоками, которые содержатся в ряде библиотек и могут переноситься в основное окно и соединяться друг с другом необходимыми связями. В состав моделей могут включаться источники сигналов различного вида, виртуальные регистрирующие приборы, графические средства анимации. Пакет основан на построении блочных схем путем переноса блоков из библиотеки компонентов в окно редактирования создаваемой пользователем модели.

Simulink составляет и решает уравнения состояния модели и позволяет подключать в нужные ее точки разнообразные виртуальные измерительные приборы.

Neural Networks Toolbox - пакет прикладных программ, содержащих средства для построения нейронных сетей, базирующихся на поведении математического аналога нейрона. Пакет обеспечивает эффективную поддержку проектирования, обучения и моделирования множества известных сетевых парадигм, от базовых моделей персептрона до самых современных ассоциативных и самоорганизующихся сетей. Пакет может быть использован для исследования и применения нейронных сетей к таким задачам, как обработка сигналов, нелинейное управление и моделирование в экономике. В пакет включены более 15 известных типов сетей и обучающих правил, позволяющих пользователю выбирать наиболее подходящую для конкретного приложения или исследовательской задачи парадигму.

Stateflow — пакет моделирования событийно-управляемых систем, основанный на теории конечных автоматов. Этот пакет предназначен для использования вместе с пакетом моделирования динамических систем Simulink. В любую Simulink-модель можно вставить Stateflow-диаграмму, которая будет отражать поведение компонентов объекта (или системы) моделирования. Диаграмма является анимационной. По ее выделяющимся цветом блокам и связям можно проследить все стадии работы моделируемой системы или устройства и поставить ее работу в зависимость от тех или иных событий.

LMI Control Toolbox -пакет LMI обеспечивает интегрированную среду для постановки и решения задач линейного программирования. Позволяет решать любые задачи линейного программирования практически в любой сфере деятельности, где такие задачи возникают. Пакет LMI Control содержит современные симп-лексные алгоритмы для решения задач линейного программирования.

Signal Processing Toolbox - пакет Signal Processing обеспечивает создание программ обработки сигналов для современных научных и технических приложений. В пакете используется разнообразная техника фильтрации и алгоритмы спектрального анализа. Пакет содержит модули для разработки линейных систем и анализа временных рядов.

Image Processing Toolbox- пакет Image Processing предоставляет ученым, инженерам и даже художникам широкий спектр средств для цифровой обработки и анализа изображений. Будучи тесно связанным со средой разработки приложений Matlab, пакет Image Processing Toolbox освобождает от выполнения длительных операций кодирования и отладки алгоритмов, позволяя сосредоточить усилия на решении основной научной или практической задачи. Основные функции пакета:

- анализ изображения;

- преобразование изображений;

- обработка изображений и статистика;

- цветовые преобразования;

- преобразование типов изображений и др.

Power System Blockset- пакет моделирования мощных энергетических систем, таких как линии передачи, силовые ключи, регуляторы напряжения и тока, устройства управления электродвигателями различного типа и нагревательными системами.

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

Matlab — расширяемая система, и ее легко приспособить к решению нужных классов задач. Ее огромное достоинство заключается в том, что это расширение достигается естественным путем и реализуется в виде так называемых m- файлов (с расширением.m). Благодаря текстовому формату m-файлов пользователь может ввести в систему любую новую команду, оператор или функцию и затем пользоваться ими столь же просто, как и встроенными операторами или функциями.

Система Matlab имеет входной язык, напоминающий Бейсик (с примесью Фортрана и Паскаля). Запись программ в системе традиционна и потому привычна для большинства пользователей компьютеров. К тому же система дает возможность редактировать программы с помощью любого привычного для пользователя текстового редактора. Имеет она и собственный редактор с отладчиком.

Приведем несколько примеров применения системы Matlab для моделирования некоторых задач.

Аппроксимация по методу по методу наименьших квадратов

Пусть будут даны 4 последовательности данных, характеризующих месячное производство молока: n- порядковый номер месяца, начиная с января, t - среднемесячная температура наружного воздуха, oC; v - среднемесячная скорость ветра, м/с, и надой молока в месяц y, кг. Исходные данные приведены в таблице 6.1.

Предположим, нам необходимо найти связь (математическую модель) между производством молока y, месяцем производства n, температурой наружного воздуха t и скорость ветра v: y(n, t, v). Каждый раз мы будем задавать пару множеств данных как (xi, уi) для i = 1, 2,..., n. Удобно записать их в виде двух векторов:

,

где T- операция транспонирования вектора или матрицы.

 

Таблица 6.1- Исходные данные по производству молока

 

Месяц, n Температура t, °C Скорость ветра v, м/с Производство молока y, кг Месяц, n Температура t, °C Скорость ветра v, м/с Производство молока y, кг
               
  -8,4 2,4     20,6 1,3  
  -4 2,4       1,4  
  2,8 2,6     12,4 1,7  
  11,2 2,2     8,8 1,8  
  13,5 1,7     1,7 2,5  
  16,9 1,5     -3,9 1,9  

 

Первоначально проверим входные параметры этой модели на корреляцию между собой. Для этого сформируем матрицу модели M и получим матрицу коэффициентов корреляции Сr:

M=[n t v y];% Формирование матрицы модели

Cr=corrcoef(M)% Расчет матрицы коэффициентов корреляци

Cr =

 

Параметр n t v y
n 1 0,22 -0,38 0,54
t 0,22 1 -0,81 0,60
v -0,38 -0,81 1 -0,80
y 0,54 0,60 -0,80 1

Между выходной величиной модели y и ее входными параметрами n, t и v имеется достаточна сильная корреляционная связь для c(y,n) =0,54 до почти функциональной для c(y,v)=- 0,80. Между параметрами n, t, v корреляционная связь достаточно умеренная, кроме связи между температурой и скоростью ветра, которая приближается к функциональной. Таким образом, мы имеем два сильно коррелированных входных параметра - t и v. Оставляем параметр с большей корреляцией с выходной величиной- v, скорость ветра.

Приближение прямой линией (по методу наименьших квадратов)

Вероятно, простейшая функция, которую стоит проверить, — это линейная,

,

когда мы пытаемся найти два скаляра b0 и b1 такие, что линейные соотношения

 

дают Yi = yi для всех i=1.2,..,n. Обозначим эту линейную систему через Ас = Y, где

ст = (b0, b1).

Произвольный выбор b0 и b1 даст ошибку величины | yiYi | для каждого i (величина невязок). В методе наименьших квадратов Гаусса находят такое единственное решение b0 и b1, которое миними­зирует сумму квадратов невязок


где для всех i, Yi = b0 + b1xi.

Matlab предлагает несколько методов решения этой задачи.

Первый метод: применение оператора \

Рассмотрим первую модель - зависимость надоя молока от времени, месяца:

.

Пусть В MATLAB'e для заданных х и у можно легко найти наилучшее решение b0 и b1, выполнив:

An=[ones(size(n)) n];% Формирование расчетной матрицы, 1-й столбец которой

%заполнен 1, а 2-ой- вектор n

cn=An\y; % Расчет коэффициентов

cn = [99861 3423]

Аналогично получим вторую модель - зависимость надоя молока от скорости ветра:

,

исполнив следующие операторы:

Av=[ones(size(v)) v];% Формирование расчетной матрицы, 1-й столбец которой

% заполнен 1, а 2-ой- вектор v

cv=Av\y; % Расчет коэффициентов одномерной линейной регрессии

cv =[ 2.0136e+005 -40642]

Здесь А— матрица, приведенная выше, с единицами в первом столб­це и вектором n в качестве второго столбца. Вторая строка находит наилучшее приближение с решения уравнений Ас = у. Как было определено выше, с(1) = b0 и с(2) = b1.

Поскольку b0 и b1 теперь известны, мы можем воспользоваться соотношением (6.1)

чтобы найти любую точку на кривой наилучшего приближения: например, после исполнения операторов:

Yn = cn(1) + cn(2)*n; % Расчет теоретической зависимости, регрессии, для %зависимости надоя от времени

Yv = cv(1) + cv(2)*v; % Расчет теоретической зависимости, регрессии, для %зависимости надоя от скорости ветра

будут получены соответствующие графические зависимости:

% Формирование графиков зависимостей

subplot (2,1,1)

plot(n,y,'k*',n,Yn,'k'), grid,xlabel('n- время, мес.'),ylabel('y-производство молока, кг'),

subplot (2,1,2)

plot(v,y,'k+',v,Yv,'k'), grid,xlabel('v- скорость ветра, м/c'),ylabel('y-производство молока, кг')

На рисунке 6.1 приведены полученные одномерные линейные регрессии Yn и Yv соотвтетственно от времени производства и скорости ветра.

Чтобы найти невязку R2 приближения по методу наименьших квадратов, необходимо набрать:

% Невязки

Yn = An*cn;r = y - Yn;R2n = r' * r% Невязки по месяцу производства

Yv = Av*cv;r = y - Yv;R2v = r' * r% Невязки по скорости ветра

В результате Matlab выведет:

R2n = 4.1379e+009; R2v = 2.064e+009.

Таким образом, можно произвести физическую интерпретацию полученных одномерных линейных регрессий.

 

 

Рисунок 6.1 - Одномерные линейные регрессии Yn и Yv соотвтетственно от времени производства и скорости ветра: отдельные точки- реальное производство, линия- регрессия..

 

 

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

Производство молока существенно зависит от скорости ветра- при увеличении скорости оно снижается.

Второй метод: применение оператора polyfit

Оператор polyval вычисляет значения поли­нома С для значений х из вектора х. Таким образом, он находит точки кривой наилучшего приближения.

Для приведенных выше данных наберите

Сn = polyfit (n, у, 1),

Сv = polyfit (v, у, 1),

чтобы найти наилучшее приближение полиномом порядка 1 (т.е. прямой). Это даст С(2) = b0 и С(1) = b1. Будут получены теже результаты, что и на рисунке 6.1 с теми же невязками.

 

Приближение полиномами

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

.

Как и прежде, нужно коэффициенты b2, b1 и b0 так, чтобы минимизировать невязку

где для всех i

Yi = b2 x2i + b1 xi + b0.

Учитывая, что наибольшие невязки присутствуют в перовй линейной регрессии Yv, заменим ее полиномом 2-ой степени, s=2. В MATLAB'e набрать:

s=2;

Cn=polyfit(n,y,s); Cn

Yn2=polyval(Cn,n);

% Невязки

Yn2 = polyval(Cn,n);

r = y - Yn2;

R2 = r'*r

В результате получится вектор коэффициентов полинома 2-ой степени

Cn = [ -859.83 14601 73780] и невязками R2= 3.1512e+009.

Аналогично, присвоив s=3 можно получить полином 3-ей степени:

s=3;

Cn=polyfit(n,y,s); Cn

Yn3=polyval(Cn,n);

% Невязки

Yn3 = polyval(Cn,n);

r = y - Yn3;

R2 = r'*r

В результате получится вектор коэффициентов полинома 3-ей степени

Cn = [ -301.03 5010.2 -17158 1.1487e+005] и невязками R2= 2.1016e+009.

Регрессионные зависимости помесячного производства молока для s=1 (1-ая степень, линейная), s=2 (2-ая степень, квадратичная) и s=3 (3-ья степень, кубическая) приведены на рисунке 6.2.

 

Рисунок 6.2- Регрессионные зависимости помесячного производства молока.

 

Невязки для 3-ей степени полинома наименьшие, значит этот полином наиболее приближен к реальным данным. Дальнейшее повышение степени полинома будет еще более приближен к отдельным точкам данных, однако при этом необходимо более тщательно подходить к проверке достоверности последних.

Аппроксимация данных функцией нескольких переменных

Используем тот же пример по производству молока. Но часто реалистичнее предположить, что «выходные» данные у зависят одновременно от нескольких независимых «входных» переменных, чем было рассмотрено выше. Предположим, что соотноше­ния являются линейными для двух входных переменных. Итак, обозначим «входные» переменные через n и v, попытаемся найти соотношение вида

y = b0 + b1n+ b2v.

Переменные модели имеют следующий вид:

y: [ y1 y2 … yn ]T;

n: [n 1 n2 … nn ]T;

v: [v 1 v2 … vn ]T.

Рассмотрим случай р = 2 (или двух «входных» факторов). Надо найти

Y = b0 + b1n+ b2v,

т.е. частный случай вектора коэффициентов с, минимизирующий

где с = [ b0 b1 b2 ]T,

Эта задача приближения по методу наименьших квадратов может быть записана в эквивалентной форме (удобной для MATLAB'a)

Ас = у.

Чтобы найти вектор-столбец коэффициентов с = [ b0 b1 b2 ]T и невязку R2 = R2, должны быть выполнены команды MATLAB'a:

А=[ones(size(n)) n v ];

c=A\y; Y=A*c; r = y-Y;

R2 = r'*r

Для большего количества переменных и более высоких порядков (s≥2) задачи решаются подобным же образом.

6.2- Среда программирования Simulink - приложение к пакету Matlab

Программа Simulink является приложением к среде программирования - пакету Matlab. При моделировании с использованием Simulink реализуется принцип визуального программирования, в соответствии с которым пользователь на экране из библиотеки стандартных блоков создает модель устройства и осуществляет расчеты.

Simulink является самостоятельным инструментом Matlab, и при работе с ним совсем не требуется знать сам Matlab и остальные его приложения. С другой стороны, доступ к функциям Matlab и другим его инструментам остается открытым и их можно использовать в Simulink.

Simulink - это интерактивная среда для моделирования и анализа широкого класса динамических систем с помощью блок-диаграмм. Основные свойства подсистемы Simulink:

- включает в себя обширную библиотеку блоков (непрерывные элементы, дискретные элементы, математические функции, нелинейные элементы, источники сигналов, средства отображения, дополнительные блоки), которые можно использовать для графической сборки систем;

- предоставляет возможность моделирования линейных, нелинейных, непрерывных, дискретных и гибридных систем;

- блок-диаграммы могут быть объединены в составные блоки, что позволяет использовать иерархическое представление структуры модели, тем самым обеспечивая упрощенный взгляд на компоненты и подсистемы;

- содержит средства для создания пользовательских блоков и библиотек блоков;

- поддерживает подсистемы, работающие по условиям.

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

В Simulink имеются специализированные приложения, значительно увеличивающие мощь данной среды моделирования. Для добавления в Simulink событийно-управляемого поведения модели имеется приложение Stateflow, дающее возможность моделировать поведение сложных систем, базируясь на теории конечных автоматов.

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

Библиотека Simulink содержит следующие основные разделы (окно обозревателя с набором блоков раздела библиотеки приведено не роисунке 6.3):

- Continuous – библиотека непрерывных элементов (интегратор, дифференциатор, линейная система решения дифференциальных уравнений и т.д.);

- Discrete – библиотека дискретных элементов (интегратор с дискретным временем, дискретный фильтр и т.д.);

 

 

Рис 6.3. Окно обозревателя с набором блоков раздела библиотеки.

 

- Functions & Tables – функции и таблицы (вызов функций Matlab, S-функции, блок, преоразующий входной вектор в выходной (с использованием линейной интерполяции значений, определенных в параметрах блока) и т.д.);

- Math – математические функции (абсолютное значение, комбинаторная логика, выделение вещественной и мнимой составляющей комплексного числа и т.д.);

- Nonlinear – нелинейные элементы (релейное звено, переключатель и т.д.);

- Signals & Systems – сигналы и системы (составной блок, входной сигнал, выходной сигнал, мультиплексер, демультиплексер и т.д.);

- Sinks – средства отображения (временная диаграмма, вывод результатов в файл, остановка выполнения модели и т.д.);

- Sources – источники сигналов (генератор импульсных/синусоидальных сигналов, генератор случайных чисел, генератор пилообразных сигналов, часы и т.д.).

Для создания модели в среде SIMULINK необходимо последовательно выполнить ряд действий:

1. Создать новый файл модели с помощью команды File/New/Model, или используя кнопку на панели.

2. Расположить блоки в окне модели. Для этого необходимо открыть соответствующий раздел библиотеки (например, Sources - Источники). Далее, указав курсором на требуемый блок, “перетащить” блок в созданное окно. На рисунке 6.4 показано окно модели, содержащее блоки.

3. Далее, если это требуется, нужно изменить параметры блока, установленные программой “по умолчанию”. Для этого необходимо дважды щелкнуть левой клавией “мыши”, указав курсором на изображение блока. Откроется окно редактирования параметров данного блока. Любой блок модели можно переместить, выделив его и передвинув, держа нажатой левую клавишу мыши. Перед выполнением расчетов необходимо предварительно задать параметры расчета. Задание параметров расчета выполняется в панели управления меню Simulation/Parameters.

 

 

Рис 6.4. Окно модели, содержащее блоки.

 

Время расчета Simulation time (Интервал моделирования или время расчета)задается указанием начального (Start time) и конечного (Stop time) его значения. Начальное время, как правило, задается равным нулю. Величина конечного времени задается пользователем исходя из условий решаемой задачи.

Subsystem – это подсистема это фрагмент Simulink-модели, оформленный в виде отдельного блока. Использование подсистем при составлении модели имеет следующие положительные стороны:

- уменьшает количество одновременно отображаемых блоков на экране, что облегчает восприятие модели (в идеале модель полностью должна отображаться на экране монитора);

- позволяет создавать и отлаживать фрагменты модели по отдельности, что повышает технологичность создания модели;

- позволяет создавать собственные библиотеки;

- дает возможность синхронизации параллельно работающих подсистем.

Количество подсистем в модели не ограничено, кроме того подсистемы могут включать в себя другие подсистемы. Уровень вложенности подсистем друг в друга также не ограничен. Связь подсистемы с моделью (или подсистемой верхнего уровня иерархии) выполняется с помощью входных (блок Inport библиотеки Sources) и выходных (блок Outport библиотеки Sinks) портов. Пример вычисления выражения y = k*a + b приведен нат рисунке 6.5.

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

 

Рис 6.5. Схема модели вычисления выражения y = k*a + b.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 526; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.187.199 (0.104 с.)