Как построить фазовый портрет в matlab

GeekBrains

Digiratory

Лаборатория автоматизации и цифровой обработки сигналов

Параллельные вычисления в MatLab

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

В статье рассматривается возможность параллельных вычислений в среде MatLab и Simulink, с помощью пакета Parallel Computing Toolbox.

MatLab и Simulink предоставляет большое количество великолепных инструмент для математических вычислений. Однако, не всегда эти вычисления происходят быстро. Для ускорения вычислений в MatLab есть такой инструмент, как Parallel Computing Toolbox, который позволяет производить параллельные вычисления.

1. Параллельное вычисление в цикле for (parfor)

Разберем чем отличается parfor от for. Если в том, как работает цикл for проблем не возникает, то с parfor есть вопросы. К примеру, действия, в отличии от стандартного цикла for, в parfor итерации цикла могут производиться не последовательно. Например, может быть ситуация, где тело цикла с индексом i = 205 может идти раньше, чем i = 160. Это возникает из-за разности производительности вычислительных потоков. Из-за этого же, так как задачи выполняются в разных пулах, невозможно воспользоваться значениями и результатами вычисления из предыдущих итераций.

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

На тестовой машине вычисление 15 число Фибоначчи 500 раз и работает занимает 7.67 секунд.

Для использования параллельных вычислений необходимо заменить for на parfor, а также запустить второй (или по числу желаемых потоков) pool для вычислений.

При первом запуске он включится автоматически, но это займет время. В случае если второй pool для вычислений уже запущен, то время на вычисление данной функции сокращается до 5.06 секунд. Ускорение расчета составляет примерно 35%, что значительно меньше ожидаемого результата при удвоении вычислительных ресурсов.

Рассмотрим другой процесс вычислений, который является более долгим:

и занимает 56.3 секунды в однопоточном режиме.

Заменим for на parfor с использованием двух вычислительных потоков

Время выполнения сокращается до 34 секунд, что соответствует повышению производительности на 65%.

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

2. Параллельное вычисление Simulink

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

Обычно для вычисления и получения данных из модели Simulink используется команда sim. Аналогично, для параллельного вычисления можно использовать команду parsim и специальный параметр SimulationInput, передаваемый в эту функцию. Которая запускает Simulink модель с определенными в этом объекте параметрами.

Рассмотрим на примере следующей модели:

Для того чтобы задать параметры мы необходимо определиться с количеством экспериментов:

Затем определить наши входные параметры

Для запуска вычислений модели выполним следующую команду:

В поле вывода MatLab можно будет увидеть следующую информацию:

Результат параллельного моделирования Simulink

Основная суть которой в том, что у нас вычисления совершались параллельно и завершились.

Дальнейшая обработка данных происходит посредством обработки массива out, где каждое значения соответствует моделированию с параметрами в in с тем же самым индексом.

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

В качестве рассматриваемой модели возьмем следующую:

Simulink модели для параллельных вычислений

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

Для возможности параллельного моделирования необходимо изменить модель: необходимо включить логирование данные, для дальнейшей обработки. Для этого заменяются блоки to workspace на блок out и ставится параметр log this signal для интересующих нас сигналов.

Кроме того скрипт запуска моделирования требует изменений:

На выходе получаем точно такой же фазовый портрет, но вычисленный в 2 потока. Так же, дополнительное окно SimulationManager показывает прогресс вычислений. В нем можно увидеть входные и выходные данные для каждого запуска.

Построение фазовых портретов

Для построения фазовых портретов были использованы слабый численный метод Рунге-Кутта 4 порядка точности. Среда реализации – математический пакет Matlab. Для получения данных, численно интегрировалась обезразмеренная система дифференциальных уравнений (2.26), (2.27). Полученные результаты изображены на рис. 2.3-2.4

Рисунок 2.3. — Фазовый портрет системы с волнами пластической деформации: типичная картина поведения.

Рисунок 2.4. — Фазовый портрет системы с волнами пластической деформации: оптимальный режим поведения.

ВЫВОД

В данной работе были рассмотрены фазовые переходы в автоколебательной системе «Хищник-Жертва» и в системе с волнами пластической деформации. Для обоих случаев были получены необходимые уравнения в обезразмеренном виде, после чего были определены координаты особых точек, найдены показатели Ляпунова для найденных точек. Был исследован характер особых точек.

В частности для системы «Хищник-Жертва» были найдены три критические точки, две из которых являются седлами, а третья в зависимости от различных значений параметра, может быть либо узлом, либо фокусом. Фокус соответствует режиму колебаний. Следовательно, в системе «Хищник-Жертва» возможны автоколебания.

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

После решения были построены фазовые портреты для каждой из систем.

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

ПЕРЕЧЕНЬ ССЫЛОК

1. Олемской А.И., Хоменко А.В. Синергетика конденсированной среды: Учебное пособие. – Сумы: Изд-во СумГУ, 2002. – 19-44 с., 373 с.

2. Гнеденко Б.В. Курс теории вероятности. – М.: Наука, 1988. – 448 с.

3. Методичні вказівки до виконання курсової роботи з курсу «Моделювання фізичних процесів і систем» / Укладач: Хоменко О.В. – Суми: СумДУ, 2009. – 14с.

4. Методичні вказівки до виконання курсової роботи з курсу «Моделювання фізичних процесів і систем» на тему «Синергетична кінетика плавлення ультра тонкої плівки мастила »/ Укладач: Хоменко О.В. – Суми: СумДУ, 2010. – 4 — 11 с.

ПРИЛОЖЕНИЕ А

Программная реализация построения фазовых портретов волн автоколебательной системы

Построение фазового портрета в Matlab Simulink

Фазовый портрет представляет собой совокупность фазовых траекторий. Для системы второго порядка фазовая траектория представляет собой совокупность точек, горизонтальная координата которых соответствует выходной функции, а вертикальная – производной от этой функции в каждый момент времени t. Пример:

Рис.1.1. Фазовый портрет.

Каждой фазовой траектории соответствуют свои начальные условия (значения y и y’ в момент времени t=0). В приведённом выше примере это точка (1,1). В принципе, по одной фазовой траектории можно получить представление о поведении системы.

Предположим, наша система описывается уравнением

GeekBrains

Это уравнение можно представить в виде

Согласно уравнению составляется схема:

Рис.1.2. Вид схемы моделирования для получения фазовой траектории

Для построения траектории используется блок XY Graph из раздела Sinks. На вход системы подаётся 0 с помощью блока Constant из раздела Sources. В его настройках указывается Constant Value “0”.

Начальные условия задаются в настройках интеграторов. Необходимое значение устанавливается в поле Initial condition. Начальное значение функции устанавливается для интегратора, на выходе которого функция y. Начальное значение производной – для того, у которого на выходе производная. Начальные условия (0,0) не годятся. В этом случае

решением уравнения будет функция y=0, y’ тоже равно нулю. Вся фазовая траектория будет представлять собой точку (0,0), и по ней ни о чём нельзя будет судить. Обычно берутся начальные условия (1,1).

Подставляем эти значения в уравнение:

Составляем по нему схему:

Рис.1.3. Пример моделирования для получения фазовой траектории

Начальные условия задаём для каждого интегратора 1:

Рис.1.4. Окно настроек интегратора

В настройках XY Graph указываем максимальные и минимальные значения осей так, чтобы на поле влезала вся траектория:

Рис.1.5. Окно настроек блока XY Graph

Для получения фазовой траектории достаточной длины необходимо выставить время симуляции, большее, чем стандартное. В данном примере 200. Выставить это можно в меню Simulation –> Simulation parameters…. В открывшемся окне указывается нужное время в поле «Stop time».

Запускаем симуляцию, получаем траекторию:

Рис.1.6. Полученная фазовая траектория

Аналогично можно получать фазовые траектории для систем третьего порядка

По нему составляется схема:

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

Начальные условия задаются уже для всех трёх интеграторов.

2. Моделирование нелинейных систем

Также можно построить фазовые траектории и для систем с нелинейными элементами. Линейная часть такой системы представляется в также, как и описано выше, а перед ней включается нелинейный элемент.В Simulink большая часть нелинейных элементов располагается в разделе Discontinuities.

Там представлены такие нелинейные элементы как:

— Relay — реле с гистерезисом. В настройках указываются «Switch on point», «Switch off point» — входные значения при котором реле переходит с низкого уровня на высокий, и с высокого на низкий. Если значения одинаковые – гистерезиса не будет. «Output when on» и «Output when off» — выходные значения высокого и

Dead Zone – элемент с линейной характеристикой и с зоной нечувствительности. В настройках указываются границы зоны нечувствительности.

— Saturation – элемент с линейной характеристикой и насыщением. В настройках указвывются значения, при которых наступает насыщение.

Кроме того, при создании моделей нелинейных систем может понадобиться блок Sign из раздела Math Operations. При подаче на вход отрицательного значения на выходе блока будет -1, при подаче 0 – будет 0, а при подаче положительного – на выходе установится единица.

Чтобы получить реле с зоной нечувствительности, необходимо последовательно соединить блоки Dead Zone и Sign. Границы зоны нечувствительности указываются в настройках блока Dead Zone . Если выходной уровень должен быть отличен от единицы, на выход ставится усилитель.

Рис.2.1. Модель реле с зоной нечувствительности

Реле с зоной нечувствительности и гистерезиса можно получить с помощью суммы сигналов с двух реле.

Рис.2.2. Модель реле с зоной нечувствительности и гистерезисом.

Рис.2.3. Релейная характеристика с зоной нечувствительности и гистерезисом.

Для первого реле указывается момент включения («Switch on point») равный значению b 2 , а выключения («Switch off point») — равный значению b 1 Значение высокого уровня «Output when on» — равно c, а низкого равно 0.

Для второго реле «Switch on point» устанавливается значение –b 1 , а «Switch off point» — значение –b 2 Значение высокого уровня «Output when on» — равно 0, а низкого равно -с.

Например, b 1 =1, b 2 =2, с=0,5.

Рис.2.4. Настройка первого реле.

Рис.2.5. Настройка второго реле.

Умея строить фазовые траектории для линейных систем и моделировать нелинейные элементы, можно получить фазовый портрет для нелинейной системы.

Рис.2.6. Функциональная схема нелинейной системы.

Линейная часть системы описывается уравнением:

3 d 2 y 2 ( t ) dy ( t ) 4 F ( y ( t )) , dt dt

Нелинейный элемент F(y(t)) – реле с гистерезисом и зоной нечувствительности.

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

Рис.2.7. Схема линейной части системы.

На вход системы установим нелинейный элемент и произведём его настройку:

Рис.2.8. Схема системы с нелинейным элементом.

Охватим систему обратной связью и установим в качестве источника константу «0»:

Рис.2.9. Схема модели нелинейной системы.

Указываем в настройках нужное время симуляции (меню Simulation –> Simulation parameters…–>Stop time)(примерно 200).

Запустив симуляцию, получаем фазовую траекторию.

Рис.2.10. Фазовая траектория нелинейной системы.

Также по этой схеме можно получить переходной процесс. Для этого блок XY Graph заменяется на Scope, а константа 0 на блок Step. Для интеграторов устанавливаются нулевые начальные значения. Или же можно представить линейную часть в виде передаточной функции.

Рис.2.11. Схема для получения переходного процесса. Линейная часть – в виде передаточной функции.

Важно иметь в виду следующее – при наличии элементов с зоной нечувствительности или гистерезисом система может никак не отреагировать на единичное ступенчатое воздействие. Это произойдёт, если входное значение для первого переключения (величина b 2 в данном примере) больше единицы. Тогда для получения переходного процесса необходимо либо уменьшить это значение, либо установить большую величину для ступенчатого воздействия (изменить «Final value» в настройках элемента Step). В нашем примере необходимо задать значение, большее b 2 .

Рис.2.12. Переходной процесс нелинейной системы. «Final value» для Step равно трём.

GeekBrains

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *