Борис Манзон
В статье “Matlab 5.1 - симфония алгоритмов” (см. PC Week/RE, № 14, c. 61) мы рассказали о замечательном языке матричного программирования Matlab, впитавшем в себя уникальные библиотеки матричных алгоритмов LINPACK и EISPACK Департамента энергетики США. В этом языке упомянутые алгоритмы интегрированы в самосогласованной и удобной для использования форме, что позволило автору статьи назвать программу Matlab симфонией алгоритмов.
Настоящая статья посвящена многочисленным областям применения Matlab в решении разнообразных научных, технических и экономических задач, а также профессиональным приложениям, расширяющим возможности Matlab в конкретных областях.
Программа Simulink: моделирование явлений и процессов в среде MATLAB
Matlab является идеальной средой для моделирования физических явлений, инженерных и экономических систем.
Для усиления этих “способностей” фирма MathWorks вместе с Matlab поставляет сопутствующую интерактивную программу Simulink для имитации динамических систем. Этот продукт позволяет представить исследуемую динамическую систему с помощью соединенных между собой функциональных блоков (блок-диаграммы), а затем изучить ее поведение в динамике. В качестве примера на рис. 1 представлена диаграмма очень простой динамической системы: резинового мяча, скачущего по плоской поверхности после броска вверх.
Рис. 1. Блок-диаграммы поведения динамической системы
Эта блок-диаграмма построена из блоков, входящих в библиотеку пакета Simulink (на рисунке в левом верхнем углу каждая пиктограмма содержит палитру блоков и раскрывается двойным щелчком). В библиотеку входят блоки, позволяющие моделировать линейные, нелинейные, непрерывные и дискретные многоступенчатые системы со многими переменными.
Сам процесс построения диаграммы очень прост: необходимые блоки с помощью мыши перетаскиваются из библиотеки в рабочее окно пакета и нужным образом соединяются (также мышью). Их параметры настраиваются в диалоговых окнах, вызываемых двойным щелчком мыши на блоке, и после этого оформляется внешний вид блок-диаграммы: выбираются размер и цвет блоков, их наименование, размер и тип шрифта для надписей и т. д.
Имеется разница между моделированием систем блочными диаграммами пакета Simulink и моделированием с использованием команд Matlab. При Simulink-моделировании команды всех блоков на каждом временном шаге выполняются одновременно (так называемая имитация временного потока). Например, на двух экранах, представленных на рис. 1, можно наблюдать, как в процессе движения мяча меняются его скорость и координата. Команды Matlab выполняются последовательно (имитация потока данных). Для специальных приложений могут понадобиться как те, так и другие модели систем.
Профессиональные приложения Matlab
Сочетание программ Matlab и Simulink позволило создать широкий класс профессиональных инструментальных приложений (toolboxes) для генерации, анализа и оптимизации систем.
Эти приложения - не просто набор полезных функций. Без преувеличения можно сказать, что они представляют собой последнее слово в разработке (исследованиях) в таких областях, как управление, обработка сигналов, идентификация систем, и многих других. Поэтому, освоив и применяя приложения Matlab, можно достичь уровня разработчиков (исследователей) мирового класса. Опишем некоторые важные характеристики приложений:
- каждое построено на программах, надежность и точность которых проверена многолетним опытом;
- все приложения совместимы и легко интегрируются не только с Matlab, но и с Simulink и любым другим установленным пакетом;
- благодаря тому, что приложения написаны в коде открытой архитектуры Matlab, они позволяют прочитать все m-файлы, сделать к ним свои добавления или использовать их как шаблоны при создании собственных функций;
- каждое приложение может функционировать на любой компьютерной платформе, на которой работает Matlab.
Для многих приложений (таких, как коммуникация, обработка сигналов, энергетические системы и др.) поставляются наборы блоков (blocksets), позволяющие создавать динамические модели с помощью блок-диаграмм программы Simulink.
Рассмотрим некоторые профессиональные приложения, распространяемые в настоящее время компанией MathWorks. Их список быстро расширяется, каждый год разрабатываются новые пакеты.
Коммуникации. Коммуникационное приложение содержит средства разработки современных коммуникационных систем, включая моделирование в реальном масштабе времени. Оно охватывает такие области применения, как электронные телекоммуникации, телефония, авиация и космонавтика, а также компьютерное периферийное оборудование.
Системы управления. “Системы управления” - это основной пакет Matlab для моделирования, анализа и проектирования автоматических систем управления. Он широко применяется в разработке высокотехнологичных систем, например, в автомобильной и аэрокосмической технике, производстве компьютерной периферии и управлении процессами, а также в менее очевидных приложениях, таких, как разработка стиральных машин и фотокамер.
Финансовый модуль. Финансовый модуль программы Matlab содержит необходимые функции для ввода, обработки и вывода финансовых данных, финансового анализа и прогноза. Области его применения включают ценовую политику, расчет процентов и доходов, анализ производных и оптимизацию портфелей. Пакет оперирует во взаимодействии со статистическим приложением и модулем оптимизации. Рекомендуется также графический интерфейс пакета Simulink для моделирования финансовых систем как нестохастическими методами, так и методами Монте-Карло.
Идентификация систем методом спектрального анализа. Модуль Frequency-Domain System Identification (FDSI) включает набор m-файлов для моделирования линейных систем на основе измерений их частотных окликов.
Нечеткая логика. Пакет “Нечеткая логика” содержит средства, предназначенные для проектирования, моделирования и анализа систем с нечетким откликом. Он имеет мощные и в то же время легко осваиваемые средства для преобразования входных данных в выходные с помощью системы правил и связей произвольной сложности, выраженных обычным языком. Системы могут быть имитированы в MATLAB или включены в блочные диаграммы Simulink с возможностью генерации кода для независимого выполнения.
Спектральный анализ высокого порядка. Этот модуль (Higher-Order Spectral Analysis) содержит инструменты для обработки сигналов, являющихся результатом нелинейных процессов или процессов, искаженных не гауссовым шумом, с использованием спектрального разложения высокого порядка.
Обработка изображений. Модуль Image Processing содержит функции анализа, статистической обработки усиления, восстановления и двухмерного преобразования изображений (фильтры, цвет, геометрия, морфология).
Управление (оптимизация) линейными матричными неравенствами. Модуль LMI Control позволяет с высокой эффективностью решать системы линейных матричных неравенств (Linear Matrix Inequalities), с которыми приходиться сталкиваться при решении задач управления, распознавания, фильтрации, проектирования структур, теории графов и линейной алгебры. Пакет содержит также функции для проектирования и анализа таких характеристик систем управления, как помехоустойчивость, производительность и др.
Моделирование предсказуемого управления. Это приложение (Model Predictive Control) особенно полезно при управлении системами с большим количеством входных и выходных переменных, имеющих много связей. Широко применяется для управления процессами в химической инженерии.
Мю-анализ и синтез. Пакет содержит набор функций для использования при анализе и проектировании устойчивых линейных систем со многими переменными. Его цель - сделать доступными некоторые последние достижения в теории систем управления в среде Matlab, а именно H-бесконечное оптимальное управление, m-анализ и синтез.
The NAG Foundation. Модуль The NAG Foundation включает более 200 подпрограмм численного расчета из хорошо известных библиотек NAG Fortran, применяемых для задач пограничного слоя, оптимизации, адаптивной квадратуры, подгонки с помощью кривой или поверхности и многих других.
Нейронные сети. Пакет Neural Network представляет собой набор Matlab-функций для проектирования и имитации нейронных сетей. Нейронные сети - это компьютерная архитектура, инспирированная биологическими нервными системами. Они применяются там, где формальный анализ чрезвычайно труден или невозможен, например при распознавании образов, идентификации и управлении нелинейными системами.
Оптимизация. Модуль Optimization включает методы нахождения экстремумов линейных и нелинейных функционалов при наличии связей и ограничений.
Уравнения в частных производных. Приложение Partial Differential Equation (PDE) предназначено для решения уравнений в частных производных в двухмерном пространстве и во времени методом конечных элементов. Оно включает набор функций и интуитивный графический пользовательский интерфейс для предварительной обработки, решения и последующей визуализации. На рис. 2 показан модуль pdetool, с помощью которого выполняется построение области решения, задание вида уравнения и граничных условий, а также построение сетки элементов. Здесь изображена сетка, созданная автоматически для определения поверхности мыльной пленки, натянутой на двух проволочках.
Рис. 2. Сетка для решения задачи о форме поверхности
На рис. 3 можно видеть график решения этого уравнения. Вид и атрибуты графика также задаются с помощью модуля pdetool; трехмерную поверхность, построенную в приложении PDE, можно вращать в пространстве, используя мышь.
Рис. 3. График решения задачи о форме поверхности
В пакете имеются возможности автоматического и адаптивного создания сетки, а также восемь готовых модулей для решения таких инженерных и физических задач, как перенос тепла, строительная механика, электростатика, магнитостатика и диффузия.
Проектирование управления с применением теории количественных обратных связей
Приложение QFT Control Design являет собой пример применения спектрального приближения в проектировании контроллеров для неопределенных систем. Оптимальное решение здесь достигается на основе компромисса между сложностью контроллеров (а следовательно, и возможностью внедрения) и их техническими характеристиками.
Устойчивое управление. Пакет Robust Control содержит специализированный набор инструментов для анализа и синтеза систем управления, устойчивых к случайным возмущениям, которые могут возникнуть в реальном мире.
Обработки сигналов. Приложение обработки сигналов (Signal Processing) находит применение в разработке аудиосистем (аналоговая и цифровая аудиозапись), видеосистем (цифровое телевидение, обработка сигналов и сжатие данных), телекоммуникации (факс и голосовой телефон), в медицине (CAT-сканирование, магниторезонансное изображение), геофизике и эконометрике.
Сплайн. Пакет представляет собой набор m-файлов для конструирования сплайнов, которые используются для кусочно-полиномиальной аппроксимации других функций. Аппроксимация сплайнами имеет некоторые преимущества по сравнению с другими видами аппроксимации.
Статистика. Приложение содержит набор m-файлов и графических средств для исследования фундаментальных законов статистики и теории вероятностей, статистического анализа данных и моделирования методом Монте-Карло.
Символьная математика. Приложение Symbolic Math позволяет выполнять в среде Matlab аналитические вычисления с использованием команд и некоторых дополнительных специализированных функций основной символьной библиотеки программы Maple V.
Идентификация систем. Пакет System Identification включает набор средств, предназначенных для оценки и идентификации систем. Он позволяет построить математическую модель физической системы (например, электрического мотора или даже финансового рынка) только на основе входных и выходных характеристик.
Элементарные волны. Пакет Wavelet содержит обширный набор программ, которые позволяют повысить производительность методов, использующих технику Фурье-анализа для изучения многомасштабных или нестационарных явлений, а также помогает лучше понять их. Он применяется во многих приложениях обработки сигналов и изображений, включая голосовую и аудиообработку, в коммуникациях, геофизике, финансовой отрасли и медицине.
Simulink - мастерская реального времени. Генерируя Си-код прямо из блочных диаграмм пакета Simulink, приложение Real-Time Workshop позволяет создавать непрерывные, дискретные и гибридные системы на многих компьютерных платформах, включая аппаратуру реального времени.
Такая мастерская может быть использована для быстрого создания программного обеспечения встроенных контроллеров реального времени. Коды для систем обработки цифровых сигналов могут быть сгенерированы, кросс-компилированы, связаны и загружены в любой выбранный пользователем процессор. Мастерская реального времени поддерживает платы цифровой обработки сигналов и широкий диапазон изготовляемой и доступной для пользователей аппаратуры.
Научная и инженерная графика в среде Matlab. Графическая система Matlab включает высокоуровневые команды для двухмерной и трехмерной визуализации данных, обработки изображений, анимации и построения графиков. Она содержит также низкоуровневые команды, которые позволяют полностью настроить вид графиков, а также создать графический пользовательский интерфейс Matlab-приложения.
Двухмерные графики строятся в линейном, двойном логарифмическом или полулогарифмическом масштабе с возможностью изменения цвета (7 цветов) и вида линий (непрерывная, штриховая, пунктирная, штрих-пунктирная). При точечном изображении графика можно выбрать любой из 14 различных символов для точек. Система позволяет размещать несколько кривых на одном графике, изменять количество меток на осях, включать в график наименования осей, титул и легенды для линий, различающихся размером и начертанием символов.
В трехмерном пространстве (рис. 4) пользователь может строить как линии, так и поверхности, изменяя при этом точку наблюдения. Для поверхностей настраиваются способы освещения, алгоритмы окраски и изображения теней.
Рис. 4. Для трехмерных поверхностей можно настраивать способ
освещения, алгоритмы окраски и изображения теней
Поверхность может быть представлена в виде проволочного каркаса (команда mesh), в котором изображаемые на графике линии проходят через заданные точки, или в виде сплошной поверхности (команда surf). Возможно также представление на одном графике с поверхностью контурного графика на плоскости (команды meshc и surfc соответственно); или ее проекции на координатную плоскость (команда meshz); можно получить поверхность, освещенную в определенном направлении (команда surf1).
Чтобы придать поверхностному графику реалистичность, используются различные схемы освещения: можно выбрать цвет излучателя (опция AmbientLightColor), мощность излучателя (опция AmbientStrength), задать диффузное, направленное либо смешанное излучение, а также коэффициент отражения поверхности, коэффициент окраски отраженного света цветом поверхности, коэффициент свечения самой поверхности и т. д. Возможно раздельное задание цвета поверхности и ребер.
Для камеры наблюдения задаются следующие параметры: положение камеры, ось наблюдения, угол обзора, перемещение камеры вдоль оси наблюдения либо по сцене (например, вращение вокруг наблюдаемой поверхности с сохранением точки наблюдения). Эти перемещения можно записать в виде анимации. Заметим, что близкие возможности имеет программа Macsyma, однако там все указанные команды выполняются непосредственно в интерактивном режиме с помощью кнопок интерфейсной панели.
Помимо описанных видов графиков программа Matlab предлагает широкий набор специализированных графиков для представления статистических и других видов данных. Это различные диаграммы (двух- и трехмерные столбчатые, линейные, круговые и др.) и гистограммы распределения, двух- и трехмерные графики векторных полей, контурные графики в прямоугольной и полярной системах координат.
Как уже упоминалось, возможна анимация. Для этого в Matlab существует два способа. Первый заключается в создании серии картинок, которые потом последовательно показываются в виде фильма. Другой способ - непрерывно стирать, а затем снова рисовать объект, делая небольшие изменения в каждом последующем рисунке.
Что нового в версии 5.х
В Matlab 5.x добавлены следующие возможности:
- визуализация данных - новые команды trisurf и trimesh, позволяющие строить поверхности и проволочные каркасы из ячеек треугольной формы, команда contourf для построения закрашенных контурных графиков, а также функция zoom, позволяющая вести наблюдение с заданным коэффициентом увеличения;
- новые функции по управлению цветом, освещением, камерой, надписями;
- специальные графики - различного вида диаграммы и векторные поля.
Нужно отметить, что Matlab позволяет с высокой эффективностью создавать программы, выполняемые как в собственной среде, так и независимо от нее.
Помимо упомянутых возможностей языка для создания алгоритмов, система содержит также богатые средства для проектирования пользовательского интерфейса. Для их усиления в версию 5.х включен модуль Guide, куда входят следующие взаимосогласованные инструменты (рис. 5):
Рис. 5. Инструменты модуля Guide для создания ГИП
- редактор свойств для задания и изменения свойств составных частей интерфейса;
- панель управляющих элементов, позволяющая включать в интерфейс и выбирать расположение различных кнопок управления, окна текста и списков, рамки, средства вертикальной и горизонтальной прокрутки;
- редактор команд, позволяющий для каждого управляемого элемента интерфейса записать запускаемую им программу;
- устройство для выравнивания объектов интерфейса;
- редактор меню для создания строки меню интерфейса.
По простоте и наглядности операции, выполняемые при создании пользовательского интерфейса в среде Matlab, аналогичны операциям визуального программирования, которые выполняются в среде программы Visual Basic.
Matlab Notebook
Рассказ о системе Matlab будет неполным, если не упомянуть о новом модуле Matlab Notebook, упрощающем работу в интерактивном режиме.
Модуль интегрирует Matlab с текстовым процессором Microsoft Word, который дополняет недостающие в системе функции текстового редактора и записи формул с полиграфическим качеством (модуль Microsoft Equation).
Такая интеграция осуществляется с использованием макрокоманд, входящих в специальный шаблон документа Matlab Notebook - Notebook.dot. Этот шаблон разработан для шестой и седьмой версий Microsoft Word, а также для Microsoft Office 97.
С помощью макрокоманд шаблона в меню панели инструментов Microsoft Word добавляется раздел Notebook, содержащий команды по созданию вычисляемых разделов документа и выполнению вычислений (рис. 6). Для выполнения последних вызывается Matlab. Кроме того, в раздел File добавляется пункт New M-book, позволяющий создавать новый Matlab Notebook, а в раздел Help - пункт About Matlab Notebook.
Matlab Notebook - это не просто запись сессии Matlab с использованием Word-документа. Программа позволяет прямо в рабочем документе выполнять все команды Matlab (для этого вызывается математический процессор Matlab), получать формулы и графики, а также редактировать и повторно вычислять команды. Word-дополнения Microsoft Equation для записи формул, Microsoft Draw для создания рисунков и Word 7.0 для создания различных стилей оформления позволяют профессионально оформить отчет по выполненной работе в среде Matlab.
Matlab Notebook особенно удобна при оформлении отчета, в котором используются вычисления Matlab, так как в ней можно многократно редактировать и изменять однажды записанные команды и результаты их выполнения. Изображения построенных графиков также располагаются в Matlab Notebook (рис. 6).
Рис. 6. Модуль Matlab Notebook интегрирует Matlab и Word
Входящая в Matlab Notebook система Matlab+Word по возможностям интерактивного использования и оформления рабочего документа приближается к универсальным математическим пакетам, таким, как Mathematica, Maple и Macsyma.
К сожалению, иллюстрации в этой программе не распечатываются из-за ошибки в Microsoft Office 97 (как утверждают разработчики Matlab), которую вскоре обещают устранить.
Другим недостатком системы Matlab+Word является большой расход системных ресурсов, в результате чего, например, на компьютере с процессором Pentium и 16 Мб ОЗУ работа оказывается довольно медленной и не очень устойчивой.
Заключение
Современные программы численного моделирования систем и процессов становятся все более автоматизированными, облегчая пользователю процесс постановки и решения широкого класса сложных задач. Еще больший эффект дают возможности качественного визуального представления результатов, которые весь процесс решения задачи превращают в захватывающее приключение.
Среди таких программ, безусловно, одно из лидирующих мест занимает система Matlab+Simulink компании MathWorks, на основе которой разработано большое количество профессиональных приложений для конкретных областей применения.
Эти приложения, собравшие достижения численного моделирования определенного круга задач, являются не просто набором методов и команд, но, без преувеличения, последним словом в данном направлении исследований.
Программы Matlab, Simulink, а также специализированные приложения к ним были представлены компанией SoftLine. Ее телефон: (095) 232-0023.
Профессиональные инструментальные приложения, собравшие достижения численного моделирования определенного круга задач, являются не просто набором методов и команд, но, без преувеличения, последним словом в данном направлении исследований