Математика на ПК
4 января 2005
Рубрика: Технологии.
Автор: .
pic
Математика — царица наук,
арифметика — царица математики.
И. Ньютон

В современном мире проектирование мало-мальски сложного устройства (начиная от процессоров и чипсетов для персоналок и заканчивая системами управления атомной электростанцией и марсоходом) требует стольких сверхточных математических вычислений, рутинного пересчета получаемых данных, что всю эту систему поневоле приходится создавать вначале виртуально, в виде модели на компьютере. Модель эту можно «гонять» в самых экстремальных условиях, ничуть не опасаясь, что она может сломаться в самый ответственный момент. Да к тому же и весь процесс проектирования происходит гораздо быстрее.

Главное в проекте, разумеется, идея — то есть принцип работы любого устройства. Самый оптимальный и доступный метод эту идею изложить — математическое описание, выраженное в формулах, чертежах, статистических данных. Будь наш проект хоть ногой шасси самолета, хоть генетическим кодом неизвестного микроба — настоящий специалист всегда разберется, что к чему.
Лет 30 назад по всему миру начали появляться системы автоматизированного проектирования (САПР), призванные взвалить на себя тяжкий труд рутинных расчетов и представить работу сложной системы как целиком, так и поэлементно. Чаще всего это были просто программные оболочки для специализированного языка, или простейший графический редактор. Иногда к ним прилагался еще и симулятор, например для просмотра временных диаграмм при проектировании электроники. Многие узкие специалисты — финансисты, электронщики, биологи, физики и прочие — были вынуждены становиться еще программистами, чаще всего весьма посредственными. Возможности автоматизированного проектирования редко раскрывались до конца. Но это еще полбеды. А как быть с обслуживающим персоналом или студентами? Ведь за деревьями формул чаще всего сложно увидеть лес, то есть сам принцип работы проекта. Да и при объяснении чистой теории, например начертательной геометрии, желательно бы наглядно демонстрировать изменения сложных трехмерных поверхностей при замене переменных в соответствующих им уравнениях, поскольку представить такую картину в уме очень трудно.
Но прогресс не стоял на месте, и в результате появились программные пакеты, представляющие собой действительно универсальный инструмент, в котором возможно и программы писать, и сложные трех- и двумерные графики чертить, и даже анимацией изображать сложные перемещения и трансформации разных объектов. К наиболее известным в этой области можно отнести следующие: Mathworks Matlab 6 (Release 13), Mathcad 2001 Professional и Waterloo Maple 7.0. В рамках данной статьи мы рассмотрим один из наиболее популярных математических пакетов для ПК — Mathworks Matlab.

pic

Matlab представляет собой универсальный программный инструмент (рис.1.1), включающий в себя программную оболочку (собственно Matlab), симуляционное приложение (Simulink), допускающий создание схемы данного компонента из отдельных блоков и наборы функциональных утилит (Toolboxes), облегчающие вычисления в самых различных областях науки и техники — от экономики до молекулярной физики.
В окне команд (Command Window) пишется программа на языке Matlab. Окно истории команд (Command History) отображает команды, набранные ранее, и делает это до тех пор, пока пользователь не очистит окно. Эта опция очень удобна при долговременном написании и отладке какой-либо программы — чтобы перенести команду из истории в окно команд, достаточно выделить ее мышью, после чего щелкнуть правой клавишей и выбрать опцию Evaluate Selected. В окне рабочего пространства (Workspace) отображаются все данные, которыми в настоящий момент оперирует программа. В нашем случае это массивы данных, обозначенные переменными R,X,Y и Z. Они характеризуются колонками размера (Size), количества битов (Bytes) и классом (Class).
Язык программирования Matlab до смешного прост, что можно видеть на примере программы на рис.1.1. Первая строка задает плоскость XY, на которой мы намерены строить график. Оператор meshgrid определяет, что график будет трехмерным. Две следующие строки задают функцию, которую нужно изобразить, а третья приказывает программе чертить график всех трех переменных черным цветом. Нажав Enter после набора команды, мы получаем что-то, похожее на рис.1.2.
Но это лишь самый простой, примитивный вид графика.

pic

Добавлением всего лишь нескольких строк в программе можно изменить его вид, сделать сплошным или состоящим из сплайнов, раскрасить в любой мыслимый цвет или оттенки одного цвета. А при нажатии на кнопку изменения графика пользователь получает возможность как угодно поворачивать его, увеличивать и уменьшать масштаб, писать комментарии в любом месте рисунка (кстати, Matlab поддерживает кириллицу!) (рис.1.3 А), да и много других возможностей. Реально даже добавлять к данному графику другие графики и битовые изображения (рис.1.3 Б)

pic

Но график — лишь наиболее наглядная визуализация самого процесса вычисления. В Matlab же можно производить их очень быстро, чему способствует специальный алгоритм, разработанный специалистами Mathworks специально для работы с большими массивами данных. То есть программа оптимизирована для работы с одно -, двух- и даже трехмерными матрицами чисел. Транспонирование, умножение матрицы на число, суммирование столбцов и строк, чисел по диагонали, перемножение элементов матриц по определенному алгоритму, вывод полученного результата в форме красочного графика или таблицы — каждая из этих операций производится при помощи одного — двух операторов!
Оказывается, дифференциальные уравнения с производными высших порядков удобнее решать в матричной форме, если на вашем компьютере установлен Matlab. Одним оператором с очень немалым массивом данных можно осуществить преобразования Фурье или Лапласа, поменять систему декартовых координат на полярные и наоборот. Даже контекстную справку можно вызвать, напечатав слово help и нужный раздел, например, для преобразований Лапласа help Laplase.
На рис.1.4 А показана картина воздушного потока вокруг крыла самолета. Сначала она была рассчитана и вычерчена специалистами NASA, а потом проверена в Matlab. Естественно, программа считает точнее…

pic

На рис.1.4 Б показана трехмерная матрица из 50 точек.
К поистине гигантским возможностям программирования в Matlab вернемся несколько позднее, а сейчас рассмотрим его многочисленные специальные наборы утилит или Toolboxes. В программе их огромное количество, упомяну лишь наиболее используемые: связь (Communications), финансовые переменные (Financial Derivative), обработка сигналов (Signal Processing), статистика (Statistics) и др. В каждом наборе присутствует одна или несколько утилит, серьезно облегчающих труд узких специалистов. Например, головной болью инженеров-электронщиков всегда было конструирование качественных фильтров — неважно, низшей, высшей частот, полосовых или режекторных. Matlab может сам сконструировать любой фильтр с заданной АЧХ и ФЧХ. Для этого существует утилита Filter Design And Analysis Tool в наборе Signal Processing. Ее окно показано на рис.1.5

pic

Задайте нужный вид фильтра (Чебышева, эллиптический, Баттерворта и др.), его полосу пропускания (например, ФНЧ или режекторный), порядок и Matlab сам рассчитает все характеристики фильтра, спрогнозирует его поведение и покажет математическую структуру. Объяснять важность такой помощи, думаю, бессмысленно.
Или еще пример — на рис.1.6 изображена последовательность «изготовления» глобуса из простой контурной карты земной поверхности.

pic

Вначале программным кодом задается двумерная система координат, после чего на этой плоскости очерчиваются по точкам контуры всех материков и островов. Этот график пока не имеет «глубины» (рис.1.6 А). Второй этап — перевод двумерной системы координат в трехмерную, задание горных вершин, долин и глубоководных впадин и «раскрашивание» применением особой цветовой карты (colormap). На наших глазах контуры земной поверхности «оживают», что и показано на рис.1.6 Б. Третий этап самый простой — «сворачивание» трехмерной карты в сферу вызовом функции sphere, расстановка освещения одним оператором, мягкости того же освещения следующим и параметры поверхности остальными операторами. Вся эта не слишком трудная, но довольно рутинная работа приводит нас к красивому глобусу, изображенному на рисунке 1.6 В.
Особняком стоит еще один toolbox — Виртуальная реальность, но о нем поговорим позднее, а сейчас рассмотрим третью часть пакета — Симуляционное приложение, или Simulink. Оно представляет собой редактор, в котором посредством мыши из различных функциональных блоков можно собирать математические модели любого уровня сложности — от амплитудного ограничителя до цифрового фильтра или системы управления самолетом. Simulink можно вызвать из стандартного окна программы кнопкой. Его стандартный интерфейс представляет собой окно, изображенное на рис.1.7 А. Окно программы состоит из 3 частей: верхней, в которой размещены стандартное меню Windows и строка поиска (Find), левой нижней, в которой находятся наборы функциональных блоков (Blocksets) и правой нижней, в которой отображаются блоки выбранного набора.

pic

На рисунке выбрана основная библиотека, которая так и называется Simulink. Видно, что функциональных блоков в ней так много, что они еще сгруппированы и по категориям: непрерывные функции (Continuous), прерывающиеся функции (Discontinuous), дискретные функции (Discrete), математические операторы (Math Operators) и другие.
Чтобы создать новую модель, щелкнем по кнопке. Откроется окно модели, показанное на рис.1.7 Б. Оно представляет собой виртуальное рабочее поле, на котором мы будем собирать и испытывать нашу модель.
Для примера мы создадим простейшую модель амплитудного ограничителя. Она будет состоять всего из 3 деталей: генератора сигналов (Signal Generator)
— категории Sources библиотеки Simulink, ограничителя (Saturation) — категории Continuous и осциллографа (Scope) — категории Sinks той же библиотеки. Выберем нужные блоки и методом drag-and-drop перетащим их на рабочее поле модели. Соединяются блоки так: курсор мыши подводится к выводу одного из них и при нажатой кнопке дотягивается до следующего. Когда курсор превращается в крест, кнопка мыши отпускается — соединение готово! Должно получиться, как на рис.1.8 А. Двойным щелчком откроем окно свойств генератора и зададим синусоидальную форму сигнала с амплитудой 5 единиц.

pic

Так же откроем окно свойств ограничителя и выставим значения: ограничения сверху (Upper limit) — 2 единицы, ограничение снизу (Lower limit) делать не будем, то есть зададим значение «-5». Теперь запустим симуляцию щелчком по кнопке . По прошествии от 3 до 5 секунд дважды щелкнем на значке осциллографа и перед нами появится график «срезанного» (или, что звучит более профессионально, клиппированного) синусоидального сигнала (рис.1.8 Б).
Конечно, Simulink допускает создание гораздо более сложных моделей. На рис.1.9 изображена модель цифровой системы управления истребителем F-14. В ней имеется несколько главных блоков — аэродинамическая модель самолета, атмосферные возмущения, вычисление гравитации для пилота, которые, в свою очередь, состоят из более простых блоков, которые тоже состоят…

pic

В общем, здесь выясняется еще одно замечательное свойство Simulink — возможность оформления «кучи» взаимодействующих функциональных блоков в функциональный узел — «черный ящик» с входами и выходами. Это очень упрощает анализ моделей, особенно сложных и включающих много уровней иерархии, и помогает лучше понять принцип их функционирования. Устройство данного блока можно узнать, сделав на нем двойной щелчок мышью.
Во всех рассмотренных примерах выступает такая черта Matlab, как его особенная интерактивность, то есть пользователь может практически в любой момент вмешаться в работу программы, и результаты будут видны в режиме реального времени. Это открывает поразительные возможности для наглядного пояснения работы сложнейших процессов, функционирования механизмов и систем. Уже в 12-й версии Matlab поддерживалась анимация и приводился демонстрационный пример с наведением и полетом ракеты к цели. В 13-й версии появилось мощнейшее средство объемной анимации — toolbox «Виртуальная реальность» (Virtual Reality), которое позволяет показывать движение и взаимодействие трехмерных объектов любой степени сложности. Разумеется, возможности этой утилиты гораздо скромнее, чем у специализированных 3D-редакторов, но, тем не менее, впечатляют. Поддерживаются плавные переходы освещенности и цветов, сглаживание, но самое главное — физические свойства объектов. Virtual Reality интегрирован в среду Matlab и полностью взаимодействует со всеми средствами, которые мы уже видели в действии — языком программирования, другими утилитами и математическими моделями. Это гораздо удобнее, чем работать с какой-то одной средой — в программном коде можно описать геометрические параметры тела (шарообразную форму резинового мячика), силы, действующие на него (силу тяжести, упругости), цвет, освещение и прочие «реальные» вещи. В Simulink собирается математическая модель из блоков, определяющая поведение тела в разных ситуациях — действительно, никто не будет описывать все параметры поведения мячика для всех углов отражения через 1 градус, — и связывается с Virtual Reality. Результат — абсолютно естественное поведение какого-то физического тела или механизма на радость и на пользу всем нам. Естественно, лучше один раз увидеть, чем сто раз услышать и, тем более, подсчитать. Например, как ведет себя машина на горной дороге? Вопрос этот не праздный, а продиктован большим количеством автомобильных аварий. Попробуйте хотя бы просто перечислить силы, действующие на каждое колесо, плюс сила тяжести кузова, плюс боковой ветер, центробежные силы и так далее. В виртуальной реальности все это выглядит гораздо понятнее (рис.1.10 А).

pic

А на рис.1.10 Б представлена математическая модель нашего автомобиля.
Virtual Reality имеет очень удобный «плейер» для просмотра файлов — он допускает перемещение по всем трем осям координат в виртуальном пространстве, повороты на любой угол относительно выбранной точки зрения, сдвиг изображения. Можно также отключить освещение объектов и представить трехмерное изображение в виде сплайнов (то есть простейших двумерных поверхностей). При этом виден «каркас» модели, что очень облегчает создание таких же «наглядных пособий». На рис. 1.11 для сравнения показаны модели взлета самолета в обычном режиме и в сплайновом.
Но даже эти сверхгигантские возможности еще не все.

pic

13-я версия Matlab поддерживает коды языков программирования C++ и JAVA, что позволяет людям, знающим эти языки, добиваться максимума в использовании возможностей программы. И еще немного о перспективах: в рекламных объявлениях компании Mathworks есть упоминание о неких устройствах, подключаемых к компьютеру, которыми можно управлять через Matlab. Ничего более конкретного о них не сообщается, но видимо, лет через 10 в этой программе будет стандартная функция в духе «поддержки робота-уборщика и станка с программным управлением». Поживем — увидим…

pic
Orphus system
В Telegram
В Одноклассники
ВКонтакте