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

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