aeshnik


Уменьшая скорость роста энтропии вселенной


Previous Entry Share Next Entry
Как работает Simulink
aeshnik
Из-за кажущейся простоты (дел-то: накидал блоков, соединил друг с другом, нажал кнопку - и вроде как моделируешь) часто игнорируют принципы работы Simulink. Однако, не стоит путать относительно низкие затраты ресурсов для описания математической модели и простоту завязывания шнурков. В первом случае всё еще не будет лишним знать фундаментальные принципы работы инструмента, чтобы получать ожидаемый результат.

Simulink - один из инструментов каузального (причинно-следственного, или классического, если грубо) моделирования. Фактически, это алгоритм, записанный в виде блок-схемы.
Рис. 1. Типичный пример блок-схемы в Simulink.
Рис. 1. Типичная блок-схема Simulink.

Здесь мы приходим к первому преимуществу среды описания алгоритмов в виде блок-схем (в данном случае Simulink) в сравнении с классическими языками программирования. Инженеру, как правило, подобное представление систем кажется очевидным, тогда как синтаксис языка программирования - это отдельное препятствие на пути к описанию объекта.

Далее. Вы можете обратить внимание что, фактически, блок-схемой на рис. 1 описано дифференциальное уравнение. В Simulink можно описывать непрерывные, дискретные, импульсные системы, системы с нелинейностями одновременно, то есть компоненты системы могут быть разными системами и отлично работать в единой среде. В моем случае это непрерывная система, которую нужно численно интегрировать. В нижнем правом углу вы можете видеть значение ode45. Это один из методов численного интегрирования, предусмотренный в Simulink. В зависимости от выбранного метода мы, скорее всего, будем получать разные числовые значения. Возможно, система даже станет неустойчивой при одной и той же структуре и параметрах, но с разными методами! Но заметим: нам не нужно реализовывать численные методы. Они уже реализованы и опробованы, готовы к решению задач.

Численные методы, предусмотренные в Simulink, можно разделить на две группы: с фиксированным шагом и с переменным шагом. Первые, как следует из названия, обеспечивают вычисления с заданным шагом, но не могут обеспечить заданную точность. Вторые предусмотрены как раз для обеспечения определенной точности вычислений. Важно с осторожностью подходить к выбору численных методов: они могут существенно сказаться на скорости вычислений (заметим, что это не единственный фактор) и, как было сказано, неверно выбранный метод может привести к неверным результатам. В документации по Simulink выбору методов посвящена отдельная глава.

Так как модели, описанные в Simulink, - те же программы, но иначе представленные, вычисляться эти модели будут также итеративно: от блока к блоку. В зависимости от типа системы (непрерывная, дискретная, без динамики) возникают свои особенности, но принцип перехода от блока к блоку сохраняется всегда. Наглядно это можно увидеть при помощи Simulink Debugger (см. видео 1 в этом посте). Заметим, что Simulink не ограничивается одним лишь каузальным моделированием: мы можем описывать физические сети компонентов (оттого в MathWorks такое моделирование принято называть физическим; иногда можно встретить понятие акаузальное моделирование). Об этом на примере электрической сети я писал раньше.

Видео 1. Решение модели Simulink с замедлением после каждого шага.

Источники дополнительной информации:
  1. документация MathWorks по Simulink;
  2. интерактивный курс по Simulink;
  3. курс "Simulink для моделирования систем и алгоритмов" и его варианты для аэрокосмической и автомобильной промышленности.
Tags: ,

?

Log in

No account? Create an account