В объятьях Matlab
АрхивСложить два плюс два мы сможем в уме - в школе научили. Найти квадратный корень из пятисот двенадцати попытаемся на калькуляторе. Но если вдруг необходимо срочно взять интеграл от какой-то особо хитрой функции, да побыстрее…
Сложить два плюс два мы сможем в уме - в школе научили. Найти квадратный корень из пятисот двенадцати попытаемся на калькуляторе. Но если вдруг необходимо срочно взять интеграл от какой-то особо хитрой функции, да побыстрее… «А компьютер на что?» - резонно спросите вы и будете правы - ведь, в конце концов, вычислять - его прямая обязанность! Однако базовые средства операционных систем, к сожалению (или к счастью) не приспособлены для решения задач высшей математики. И вот тогда на помощь приходят математические пакеты. Их на рынке несколько - первыми на ум приходят MathCAD, Mathematica и Matlab. Вот о последнем-то мы сегодня и поговорим.
За более чем двадцатипятилетнюю историю Matlab успел стать стандартом де-факто среди людей, чья деятельность тем или иным образом связана с вычислениями - будь то математики, инженеры или студенты технических вузов с их бесконечными курсовыми работами и типовыми расчетами. Причиной успеха стала полная открытость Matlab, его неприхотливость к системным ресурсам, поддержка нескольких операционных систем (есть версии под Windows 9x/Me/2000, а также Linux) и огромное количество модулей, написанных за время развития - на этом поле с ним кроме, разве что, пресловутого языка Фортран, поспорить не может еще никто. Судите сами - здесь, помимо элементарной математики, работы с матрицами, интегралами, производными, есть средства для анализа данных, преобразования Фурье, Лапласа, интерполяции и экстраполяции, а также решения линейных и дифференциальных уравнений.
«И это все? - спросит скептик. - Да то же самое можно найти и в MathCAD!» Не спорю. Но Matlab, в отличие от своих конкурентов, не останавливается на «голой» математике - недаром на заставке помимо красивой мембраны горит гордое «Matlab - язык технических вычислений». И его создатели ни на йоту не грешат против истины. Ведь в состав пакета входят также средства для проектирования и исследования свойств систем управления, цифровой обработки сигналов, нейронных сетей, обработки изображений, нечеткой логики, вейвлетов и даже электрических и силовых схем! Уфф! Полный список возможностей, которыми обладает Matlab, занял бы, наверное, не один номер журнала.
Весовая категория Matlab под стать его возможностям - новейшая, шестая версия разместилась аж на двух компакт-дисках! Ушлые пираты, правда, выпустили на рынок урезанную версию, но без замечательной документации (в форматах pdf и html), расположенной как раз на втором диске, программа - что инвалид без костыля. Рекомендую не экономить на спичках.
Внешний вид программы неприхотлив и представляет собой окно с приветствием и приглашением для ввода команды. Людей, привыкших к графическому интерфейсу, кнопкам, рюшечкам и принципам WYSIWYG, подобная идеология может поначалу отпугнуть - скажется давняя неприязнь истинного «окновода» к режиму командной строки. Однако, сделав над собой некоторое усилие, легко увидеть, что за строгостью интерфейса Matlab, как за внешней сухостью профессора математики, таится нежная и заботливая душа. «Введи слово demo», - просит программа. Вводим и - о чудо! - мир вокруг преображается.
В режиме Matlab Demos программа небрежно, играючи демонстрирует нам свои необъятные возможности. «Построить график? Пожалуйста! Вам какой - двумерный, трехмерный? О’кей, никаких проблем - вот вам график!» - и программа с легкостью строит трехмерные поверхности, раскрашивает их во все цвета радуги и одновременно демонстрирует, каким же именно образом ей это удается. Процесс обучения в таком режиме идет естественным образом - мы, точно ребенок, разбирающий любимую игрушку, невольно узнаем принцип ее действия.
А программа уже подбрасывает нам новые игры, причем теперь уже в буквальном смысле. «Игры? Вам Color Lines или банальный Тетрис? А, может быть, знаменитую «Жизнь» Джона Конвея?» Есть в программе и решения классических математических задач - к примеру, пресловутой задачи коммивояжера, цель которого - обойти все пункты назначения за минимальное количество километров. Все это великолепие, повторяю, доступно в демонстрационном режиме и снабжено прекрасными комментариями 1.
Очарование Matlab кроется в принципах, заложенных в него создателями: «Открытость. Модульность. Интеграция». Все функции (кроме элементарных) представляют собой программы на встроенном языке, которые при выполнении обрабатываются интерпретатором, а поэтому файлы (в терминах программы - m-файлы) можно изучать, изменять, и при желании - создавать свои собственные. Язык программы интуитивно понятен, и для того, чтобы научиться писать на нем, достаточно просмотреть, как устроены две-три функции - и все станет ясно. Нам снова дали разобрать любимую игрушку!
Для того, чтобы не потеряться во всем этом многообразии, функции разбиты по так называемым «коробкам с инструментами» - toolboxes. Каждая такая «коробка» содержит все необходимое для работы с той или иной областью знаний. К примеру, Fuzzy logic toolbox содержит средства для создания систем на базе нечеткой логики, изменения правил их построения, а также методы для визуализации результатов, Control system toolbox позволяет исследовать свойства динамических систем и проектировать регуляторы для систем автоматического управления. Набор «коробок» очень обширен, их состав можно определить на этапе инсталляции, выбросив ненужные и сконфигурировав таким образом систему под свои нужды.
Интеграция данных в Matlab осуществляется опять же благодаря его открытости - результат выполнения любой из функций может быть сохранен как в обычном текстовом файле, так и в виде внутренней переменной, доступной для дальнейшего использования! Далее, существует встроенный компилятор, который осуществляет преобразование m-файлов в исходный код на языке С или C++. Подобный подход позволяет встраивать функции, используемые в Matlab, в реально используемые приложения. Мало? Модуль Matlab Notebook позволяет интегрировать содержимое «рабочего стола» программы в редактор Word одним нажатием кнопки. Встроенные интерфейсы дают возможность получить доступ к данным от внешних устройств, файлов, баз данных и программ, что делает обычный домашний компьютер, по сути, небольшой лабораторией.
Рассказывая о возможностях пакета, невозможно не упомянуть программу Simulink, представляющую собой средство для визуального моделирования различных систем. Удобный интерфейс напоминает конструктор, в котором с помощью различных блоков можно быстро собрать действующую модель любой сложности - от антиблокировочной системы автомобиля до сложнейшего истребителя F-16. При этом пользователю дана возможность создавать собственные блоки и объединять уже существующие в подсистемы, что дает возможность увидеть общую структуру, не загроможденную вторичными блоками. Преимущества такого подхода в полной мере проявляются, когда количество блоков на схеме переваливает за сотню. Плюс ко всему этому большинство toolbox’ов также имеют средства для импорта своих интерфейсов в simulink.
О легкости работы с Matlab расскажу на следующем примере. Прочитав чрезвычайно увлекательную тему номера «Компьютерры» о системах на базе нечеткой логики, я вспомнил, что в Matlab присутствует одноименный toolbox, который, правда, не был у меня установлен. На инсталляцию ушло минут десять, на чтение документации - около часа 2, а уже на следующий день, окончательно разобравшись в тонкостях настроек и выборе правил, я смог построить систему управления двигателем постоянного тока на базе нечеткой логики. Представляете, сколько времени было бы потрачено, если бы мне пришлось описывать поведение системы, скажем, на языке C? Сколько времени ушло бы на написание модулей, продумывание алгоритмов, отладку получившейся программы - страшно подумать.
Matlab делает, наверное, то, что в свое время смог сделать Интернет в области общения людей - он снижает «порог вхождения». Теперь для проверки своей идеи уже не требуется перелопачивать горы литературы и писать уже написанный другими сотни раз код - в Matlab все находится «под рукой». От такого поворота событий поневоле захватывает дух, ведь все новейшие математические идеи, от вейвлетов до фракталов, находятся рядом. Конечно, близость эта отчасти мнимая - без знания тонкостей тех или иных методов никакой Matlab не поможет. Но сколько часов напрасно потраченного на «изобретение велосипеда» времени будет сэкономлено Matlab, сколько полезных открытий и новых идей он уже принес и еще способен принести? Наверняка немало.
Описывая достоинства программы, как-то с неохотой вспоминаешь о ее недостатках - в самом деле, при таких-то плюсах, какие могут быть минусы? Ан нет, найдется… Стремление вставить в пакет все, что только можно, не всегда несет за собой положительный эффект, напоминая, что у любой медали есть своя оборотная сторона. К примеру, процесс построения электрических цепей в simulink откровенно неудобен - идеология программы не позволяет соединять электрические провода естественным образом, заставляя прибегать к Т-образным коннекторам, а иногда и к громоздким шинам. И хотя само моделирование (равно как и точность математических моделей) близко к идеалу, думаю, подобные задачи все же лучше отдать на откуп специализированным программам - таким, как Design Lab, например.
Тем не менее, Matlab продолжает развиваться, стараясь идти в ногу с современной наукой и не забывать про пользователей, которых уже сейчас насчитывается около полумиллиона - не так давно в свет вышла шестая версия программы, в которой был значительно улучшен пользовательский интерфейс, а также оптимизирована работа многих модулей и добавлено несколько новых. С сайта производителя, фирмы Mathworks можно получить информацию о новых модулях, получить ответы на многие вопросы (для этого существует обширный FAQ), а также поделиться радостью открытий с другими пользователями всемирной паутины - для этого на сайте существует раздел Matlab Central.
Наверняка я что-либо упустил, рассказывая о возможностях этого замечательного пакета - слишком обширны его возможности. Но этот недостаток вы с легкостью можете исправить сами - достаточно попробовать погрузиться в удивительный мир научных исследований, загрузив на своем компьютере Matlab.
1 (обратно к тексту) - Правда, на английском языке. Существует русская версия Matlab, но покупать ее настоятельно не рекомендую. На русский переведена лишь часть интерфейса и справочных файлов.
2 (обратно к тексту) - Мои искренние реверансы забугорным документописателям. Умеют же люди писать так, что даже полному «чайнику» в данной области все становится понятно!