4.11.3.2. Системы компьютерного моделирования


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

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

В настоящее время наиболее распространенной системой компьютерного моделирования является MATLAB (введение в систему дано выше, далее следует более  подробное описание).

MATLAB (сокращение от «Matrix Laboratory») обозначает одновременно пакет прикладных программ для решения задач численного анализа и используемый в этом пакете язык программирования. 

MATLAB как язык программирования был разработан Кливом Моулером (Cleve Moler) в конце 1970-х годов, когда он был руководителем факультета компьютерных наук в университете Нью-Мексико (computer science department at the University of New Mexico). 

Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. 

До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (John N. (Jack) Little), познакомился с этим языком во время визита Клива Моулера в Станфордский университет в 1983 году. Распознав коммерческий потенциал нового языка, он объединился с Кливом Моулером и Стивом Бангертом (Steve Bangert). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. 

Первоначально MATLAB предназначался для решения задач управления системами (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался в в образовании, в частности для преподавания линейной алгебры и численного анализа.

MATLAB позволяет легко производить матричные вычисления, визуализировать математические функции и экспериментальные данные, реализовывать вычислительные алгоритмы, конструировать графический интерфейс пользователя для решения специфических задач, а также через специальные интерфейсы взаимодействовать с другими языками программирования и программами. Хотя MATLAB специализируется на численных вычислениях, с помощью специализированного инструментального пакета (toolbox), он может взаимодействовать с символьным процессором программы Maple (система компьютерной алгебры), что превращает его в законченную систему с возможностью выполнения символьных вычислений. MATLAB используется более чем 1,000,000 инженерными и научными работниками и работает на большинстве современных операционных системах, включая Windows, Mac OS, Linux и Unix.

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

MATLAB – это интерактивная система, в которой основным элементом данных является массив. Это позволяет решать различные задачи, связанные с техническими вычислениями, особенно в которых используются матрицы и вектора, в несколько раз быстрее, чем при написании программ с использованием "скалярных" языков программирования, таких как Си или Фортран.

MATLAB развивался в течении нескольких лет, ориентируясь на различных пользователей. В университетской среде, он представлял собой стандартный инструмент для работы в различных областях математики, машиностроении и науки. В промышленности, MATLAB – это инструмент для высокопродуктивных исследований, разработок и анализа данных.

В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes - это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.

Система MATLAB состоит из пяти основных частей.

Язык MATLABЭто язык матриц и массивов высокого уровня с управлением потоками, функциями, структурами данных, вводом-выводом и особенностями объектно-ориентированного программирования.

Среда MATLAB. Это набор инструментов и приспособлений, с которыми работает пользователь или программист MATLAB. Она включает в себя средства для управления переменными в рабочем пространстве MATLAB, вводом и выводом данных, а также создания, контроля и отладки М-файлов и приложений MATLAB.

Управляемая графика. Это графическая система MATLAB, которая включает в себя команды высокого уровня для визуализации двух- и трехмерных данных, обработки изображений, анимации и иллюстрированной графики. Она также включает в себя команды низкого уровня, позволяющие полностью редактировать внешний вид графики, также как при создании Графического Пользовательского Интерфейса (GUI) для MATLAB приложений.

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

Программный интерфейс. Это библиотека, которая позволяет писать программы на Си и Фортране, которые взаимодействуют с MATLAB. Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая MATLAB как вычислительный инструмент и для чтения-записи МАТ-файлов.

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

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

Real-Time Workshop – это программа, которая позволяет генерировать С код из блоков диаграмм и запускать их на выполнение на различных системах реального времени.

Сравнение с пакетом Mathematica. Главным конкурентом MATLABа, согласно распространённой точке зрения, является программный пакет для символьных вычислений Mathematica (краткое описание приведено выше). Однако сотрудники компании MathWork (которые часто называют себя Math Workers) рассматривают Microsoft Excel как своего главного конкурента. Пакет MATLAB гораздо удобнее для задач численного анализа и линейной алгебры, чем Mathematica, и его часто используют для инженерных разработок. Mathe-matica, с другой стороны, имеет превосходные возможности для символьных вычислений, делающие её популярной среди физиков. Другая фундаментальная разница заключается в том, что MATLAB-язык, используемый для написания кода новых (пользовательских) функций и скриптов, синтаксически близок к языку программирования BASIC, в то время как Mathematica использует свой собственный функциональный язык.

Альтернативные пакеты. Существует большое количество программных пакетов для решения задач численного анализа. Многие из таких пакетов являются свободным программным обеспечением.

Пакеты, совместимые с MATLAB на уровне языка программирования: GNU Octave, Freemat, Scilab, Rlab.

Пакеты и языки, реализующие близкие функциональные возможности: 

R и его потомки S и SPlus; APL и его потомки, например, J Python, при использовании с такими библиотеками как Numeric Python и SciPy реализует сходные возможности; IDL, the Interactive Data Language (Интерактивный Язык Данных), когда-то был коммерческим конкурентом MATLAB и остаётся серьёзным функциональном конкурентом во многих прикладных областях, хотя его доля на рынке программных продуктов для численного анализа резко упала.

Если имеется необходимость разработки больших проектов для численного анализа, то возможно использование языков программирования общего назначения, поддерживающих статическую типизацию и модульную структуру. Примерами могут служить Modula-3, Haskell, Ада, Java. При этом рекомендуется использовать известные в научно-инженерной среде специализированные библиотеки, такие как GNU Scientific Library (GSL) — GNU научная библиотека, библиотека линейной алгебры LAPACK, библиотека быстрого преобразования Фурье FFTW, библиотека визуализации PLPlot, через программные интерфейсы, которые можно сгенерировать используя, например SWIG.

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

  • Графический интерфейс ориентирован на человека и отвечает за представление математической модели в виде, понятном широкому кругу специалистов. Это могут быть блок-схемы, схемы физические принципиальные, гибридные карты состояний и пр.
  • Система управления базой данных отвечает за хранение объектов составленной пользователем модели и требуемые трансформации структуры ее хранилища.
  • Математическое ядро берет на себя основную вычислительную нагрузку и в цикле (согласно заданной программе, руководствуясь готовностью аргументов, а в редких спорных случаях – появление которых всегда можно избежать приоритетностью математических операций) обеспечивает исполнение потоков математических функций.
  • Серверы визуализации и Online-воздействий обеспечивают интерфейс между функционирующим математическим ядром и пользователем. Серверы визуализации результатов – осциллографирующие, показывающие и индицирующие приборы – в зависимости от ситуационных требований могут работать либо в синхронном, либо в асинхронном режимах. 
  • Серверы Online-воздействий на модель жестко синхронизированы с математическим ядром.