Мощные средства программирования
Многие математические системы создавались, исходя из предположения, что пользователь будет решать свои задачи, практически не занимаясь программированием. Однако с самого начала было ясно, что подобный путь имеет недостатки и по большому счету порочен. Многие задачи нуждаются в развитых средствах программирования, которые упрощают запись их алгоритмов и порою открывают новые методы создания последних.
С одной стороны, MATLAB содержит огромное число встроенных операторов и функций (приближающееся к тысяче), которые успешно решают множество практических задач, для чего ранее приходилось готовить достаточно сложные программы. К примеру, это функции обращения или транспонирования матриц, вычисления значений производной или интеграла и т. п. Число таких функций с учетом пакетов расширения системы уже достигает многих тысяч и непрерывно увеличивается.
Но, с другой стороны, система MATLAB с момента своего создания создавалась как мощный математико-ориентированный на технические вычисления язык программирования высокого уровня. И многие вполне справедливо рассматривали это как важное достоинство системы, свидетельствующее о возможности ее применения для решения новых, наиболее сложных математических задач.
Система MATLAB имеет входной язык, напоминающий Бейсик (с примесью средств Фортрана и Паскаля). Запись программ в системе традиционна и потому понятна для большинства пользователей компьютеров. К тому же система дает возможность редактировать программы с помощью любого, привычного для пользователя текстового редактора. Имеет она и собственный редактор с отладчиком.
Язык системы MATLAB в части программирования математических вычислений намного богаче любого универсального языка программирования высокого уровня. Он реализует почти все известные средства программирования, в том числе объектно-ориентированное и визуальное программирование. Это дает опытным программистам необъятные возможности для самовыражения.
Визуализация и графические средства
В последнее время создатели математических систем уделяют огромное внимание визуализации решения математических задач. Говоря проще, это означает, что постановка и описание решаемой задачи и результаты решения должны быть предельно понятными не только тем, кто решает задачи, ио и тем, кто в дальнейшем их изучает или просто просматривает. Большую роль в визуализации решения математических задач играет графическое представление результатов, причем как конечных, так и промежуточных.
Визуализация постановки задачи в MATLAB решается применением приложения Notebook [ 12] и назначением именам функций достаточно ясных имен (идентификаторов). А визуализация результатов вычислений достигается применением обширных средств графики, в том числе анимационной, а также использованием (там, где это нужно) средств символьной математики.
Новая версия MATLAB напрочь избавилась от некоторой примитивности графиков, которая была присуща первым версиям этой системы. Теперь новые графические средства Handle Graphics (дескрипторная или описательная графика) позволяют создавать полноценные объекты графики высокого разрешения, как геометрического, так и цветового. Возможности этой графики поддерживаются
объектно-ориентированным программированием, средства которого также имеются в языке программирования системы MATLAB.
Реализуются, причем с повышенной скоростью, построения графиков практически всех известных в науке и технике типов. Широко практикуется функциональная закраска сложных поверхностей, в том числе с интерполяцией по цвету и свойства прозрачности, основанные на применении графических средств OpenGL. Возможен учет разнообразных световых эффектов — вплоть до бликов на поверхности сложных фигур при освещении их различными источниками света и с учетом свойств материалов отражающих поверхностей и прозрачности. Применение дескрипторной (описательной) графики позволяет создавать и типовые элементы пользовательского интерфейса — кнопки, меню, информационные и инструментальные панели и т. д., то есть реализовать элементы визуально-ориентированного программирования.
Графики выводятся отдельно от текстов в отдельных окнах. На одном графике можно представить множество кривых, отличающихся цветом (при цветном дисплее) и отличительными символами (кружками, крестиками, прямоугольниками и т. д.). Графики можно выводить в одно или в несколько окон. Наконец, в статьях и книгах формата Notebook, реализованных при совместной работе системы MATLAB с популярным текстовым процессором Word 95/97, графики могут располагаться вместе с текстом, формулами и результатами вычислений (числами, векторами и матрицами, таблицами и т. д.). В этом случае степень визуализации оказывается особенно высокой, поскольку документы класса Notebook по существу являются превосходно оформленными электронными книгами с действующими (вычисляемыми) примерами.
Особенно привлекательной выглядит возможность построения трехмерных поверхностей и фигур. По сравнению с системой Mathcad, построение трехмерных фигур средствами MATLAB происходит почти на порядок быстрее. Кроме того, при построении таких графиков используется достаточно совершенный алгоритм удаления невидимых линий, что наряду с большими размерами графиков и возможностью интерполяции по цвету делает построенные трехмерные поверхности и фигуры весьма эстетичными и наглядными. Уже в MATLAB 5.3.1 была введена эффектная возможность быстрого вращения графиков мышью в любом направлении. В MATLAB 6.* она улучшена — теперь вращать в пространстве можно даже плоскость с двумерными графиками.
Введен также ряд средств на основе графического интерфейса пользователя (GUT — Graphic User Interface), привычного для операционных систем Windows 95/98/NT. Это панели инструментов, редактор и отладчик т-файлов, красочная демонстрация возможностей и т. д. Есть и возможность создавать свои средства пользовательского интерфейса.
О компиляции программ системы MATLAB
Язык программирования систем MATLAB относится к классу интерпретаторов. Это обеспечивает простой интерактивный характер взаимодействия пользователя с системой — любая функция системы или набор их (кодов программы) может исполняться после ввода в командной строке или исполнения М-файла (с расширением .т). Это существенно облегчает отладку программных модулей.
Однако М-файлы могут исполняться только в среде системы MATLAB. Полностью законченных исполняемых файлов с расширением .ехе или .сот система не создает. Между тем MATLAB весьма громоздкая система и ее наличие на компью тере — тяжкое бремя. Многие пользователи предпочли бы иметь свои программы, созданные на языке MATLAB, в виде самостоятельных исполняемых модулей, в случае необходимости сопровождаемых динамическими библиотеками.
MATLAB предусматривает такую возможность за счет включения в его состав специального компилятора и дополнения системы языком программирования высокого уровня С или C++. К сожалению, поставки MATLAB в таком виде крайне редки и стоят очень дорого. Самостоятельное расширение системы в принципе возможно, но, как показывает практика, требует привлечения для этого весьма опытных программистов и, соответственно, больших средств на оплату их работы. В связи с этим ограничимся лишь упоминанием возможности компиляции программных модулей системы MATLAB и в дальнейшем будем рассматривать все примеры ее применения только в среде системы MATLAB, т. е. в интерпретирующем режиме ее работы.