Macsyma - одна из первых математических программ, оперирующих символьной математикой, т. е. предназначенных не только для численных, но и для аналитических расчетов. Ее разработка началась еще в 1968 г. в Массачусетском технологическом институте (США), что отражено в названии программы, которое является аббревиатурой словосочетания Massachusetts computation symbolic algebra. Некоторое время она была лидером среди универсальных математических программ. Правда, появившаяся вскоре программа Maple, а за ней Mathematica потеснили Macsyma с пьедестала почета, однако благодаря своим сильным сторонам - отличной работе с линейной алгеброй и дифференциальными уравнениями - она не потеряла популярности. Свое второе рождение программа пережила в 1992 г., когда возникла компания Macsyma, представившая ее обновленную, удобную и эффективную версию и сопутствующую ей программу PDEase2D.
Документ программы Macsyma содержит редактируемые (сверху вниз) поля команд, формул, текста и графиков
В настоящей статье описаны последние версии этих продуктов: Macsyma 2.2 и PDEase2D 3.0, а также проведено их сравнение с двумя главными конкурентами - универсальными математическими пакетами Maple V 4.0 и Mathematica 3.0.
Основные характеристики Macsyma
Macsyma 2.2 работает на платформе Intel под управлением Windows 3.1х, Windows 95, Windows NT 3.51 или 4.0. Имеется также версия программы для платформы UNIX, называемая UNIX-Macsyma, однако в данной статье будет рассмотрена только Windows-версия. 16-разрядная версия для Windows 3.1х требует минимум 8 Мб основной памяти и 24 Мб виртуальной; для Windows 95 нужно уже как минимум 12 Мб ОЗУ и 16 Мб виртуальной.
Интерфейс
Интерфейс Macsyma Front End (MFE) по удобству и функциональности не уступает, а в чем-то даже превосходит интерфейсы программ Maple и Mathematica. Рабочим документом программы является научная тетрадь (scientific notebook), в которой содержатся доступные для редактирования поля текста, команд, формул и графиков (рис. 1). Придающие ей вид настоящей тетради украшения - спираль слева и окантовка справа - могут быть убраны, что расширит рабочую область документа (рис. 2). Инструментальная панель содержит кнопки для выполнения наиболее часто используемых команд. Вид инструментальной панели изменяется в зависимости от выделяемого объекта (сравните рис. 1 и 2). Полиграфическое начертание формул возможно только в поле вывода формул. В отличие от Maple V 4.0 и Mathematica 3.0 программа не имеет этой функции для полей команд и текста. Но есть и преимущество: формулы без изменения начертания легко переносятся в Microsoft Word. Рабочий документ может быть сохранен в собственном формате программы с расширением .mfe. Таких средств, как сохранение или трансляция файла в формат полиграфического языка LaTeX либо в формат Web-страницы, которые имеются в конкурирующих программах, Macsyma не предлагает. Есть только команды для перевода математических формул в формат LaTeX. Можно открывать несколько рабочих документов, внедрять один документ в другой и вводить гипертекстовые связи как внутри документа, так и между несколькими документами.
Окно просмотра математических функций на фоне трехмерного графика поверхности
Программа имеет довольно хороший текстовый редактор, позволяющий редактировать параграфы, а также отдельные слова и символы: изменять тип шрифта (доступен любой шрифт, установленный в Windows), его начертание, цвет; есть несколько стилей для параграфов и заголовков, функция поиска по шаблону.
Навигатор программы Macsyma
С Macsyma можно работать в интерактивном режиме, вводя команды из командной строки и тут же получая результат. Каждая строка нумеруется, так же как в пакете Mathematica, что позволяет легко ссылаться на предшествующий ввод команды или на результат предыдущего вычисления.
DataViewer программы Macsyma и график аппроксимации данных подгоночной кривой
Почти все команды Macsyma в библиотечных файлах загружаются автоматически, что очень удобно. При работе в средах Maple и Mathematica надо помнить имена библиотечных файлов и то, какие команды в них находятся, а также не забывать о необходимости предварительной загрузки этих файлов.
Окно просмотра (браузер) математических функций (рис. 2) позволяет легко найти нужное средство из конкретной области математики и аналогичные задачи с готовыми шаблонами, легко переносимыми в документ. Впрочем, подобный браузер содержался в пакете Maple V вплоть до его третьей версии.
С помощью навигатора (рис. 3) можно просмотреть заголовки рабочего документа, вводимые команды, графики, текстовые поля, отсортировать наименования по алфавиту и перейти к нужному месту документа. В конкурирующих программах имеется частично заменяющая навигатор функция сворачиваемых разделов рабочего документа.
Интерфейс содержит также DataViewer - механизм просмотра данных. DataViewer располагается прямо в рабочем документе и представляет собой редактируемую таблицу, сходную по внешнему виду и некоторым функциям со специализированными электронными таблицами (рис. 4).
MFE оборудован также математическим процессором, обладающим способностью вычислять, запоминать и просматривать данные, связанные с рабочим документом, а также строить графики. Функционирует он независимо от математического процессора Macsyma. Каждый рабочий документ имеет собственный набор данных и имен для связи с интерфейсным процессором. Процессор Macsyma может получать данные из интерфейсного процессора и кроме всего прочего использовать его для подключения к внешним библиотекам, в частности при взаимодействии с сопутствующим пакетом PDEase2D.
Графика
Говоря об интерфейсе, нельзя не остановиться на превосходных графических характеристиках пакета. Macsyma, конечно, уступает пакету Maple по количеству различных видов графиков, однако тех, что он содержит, достаточно для иллюстрации прикладных и научных расчетов. Программа предлагает двух- и трехмерные графики, включая параметрические графики кривых и поверхностей, а также графики векторных полей и анимацию.
Диалог “Точка наблюдения” на фоне трехмерного графика
Графики и анимация, как и в программе Maple, - редактируемые, однако число настраиваемых атрибутов в Macsyma гораздо больше, чем у конкурентов. Типичный трехмерный график в Macsyma имеет около 200 атрибутов, которые вы можете редактировать прямо в научной тетради. Соответствующие атрибуты сгруппированы в пяти простых в использовании графических диалогах.
Диалог “Точка наблюдения” (рис. 5) имеет следующие опции настройки: вращение, преобразование, увеличение, для двухмерных графиков - взаимодействие (переход наверх, внутрь или через нарисованный объект), поворот, отделение, включение/выключение перспективы и осей. Достаточно щелкнуть на точке трехмерного графика мышью, чтобы получить координаты этой точки. Диалог, “Ограничивающий куб и оси” дает возможность изменять цвета поверхности, толщину сетки и линий осей, наименование осей, число точек шкалы осей и шрифт чисел. Например, в наименованиях осей вы можете редактировать тип шрифта, его размер, цвет, ориентацию (горизонтальная, вертикальная и др.), расстояние от оси.
Диалог “Поверхность, линия и точка” задает различные формулы для IHS (Intensity Hue Saturation) или RGB (Red Green Blue) цветовых координат, внешний вид поверхностных узлов, линий и точек. Вы можете задать цвет наружного освещения, положение и цвет четырех осветителей.
Диалог “Украшения текста” позволяет редактировать внешний вид титула графика и до трех других текстовых комментариев.
Анимация
Macsyma предлагает различные легко осуществляемые виды анимации. Прямо в рабочем документе можно производить анимацию положения камеры, цветов, освещения, планов и других атрибутов. Впечатляет и демонстрационная анимация “Бутылка Клейна”, в которой точка наблюдения перемещается снаружи внутрь бутылки (рис. 6).
Один из кадров анимации точки наблюдения “Бутылки Клейна”
В Mathematica и Maple имеется возможность анимации только формы заданной фигуры.
Экспорт графики
Программа позволяет экспортировать графики в форматах .MFE, .BMP, .PCX, .GIF и .RLE, как PostScript-файлы, или сохранять их в научных тетрадях Macsyma.
Прикладная математика
В отличие от Maple V и Mathematica программа Macsyma ориентирована на прикладные математические расчеты и не предназначена для теоретических исследований в области математики. В связи с этим в программе отсутствуют или сокращены разделы, связанные с теоретическими методами, как, например, теория чисел, теория групп, алгебраические поля, математическая логика и т. д.
Сравнение результатов выполнения преобразования комплексного числа к полярной форме в программах Maple и Macsyma
В то же время числа в математических выражениях по умолчанию предполагаются действительными, что позволяет получать аналитические решения для многих встречающихся в прикладных задачах вычислений (таких, как алгебраические преобразования и упрощения, интегрирование, решение дифференциальных уравнений и др.), для которых в комплексной области решения не существуют. В программах Maple и Mathematica неизвестные переменные предполагаются комплексными. Для того чтобы получить значение некоторого выражения, исходя из предположения, что неизвестные переменные вещественны, в программе Maple имеется функция evalc, а в программе Mathematica - соответствующая ей функция ComplexExpand. Однако эти функции менее эффективны и не всегда приводят к нужному результату. На рис. 7 показано, как выражают в полярной форме комплексное число sin(a + i х b) программы Maple V и Macsyma. Программа Maple V не вычисляет до конца модуль и аргумент числа. Изображение конечной формулы, выдаваемое программой Macsyma, более естественно. В показателе экспоненты стоит функция atan2, которая эквивалентна обратной тригонометрической функции arctan и связана с ней соотношением arctan(a/b) = atan2(a, b).
Программа помимо математических констант содержит необходимые в прикладных расчетах основные физические константы, а также периодическую систему, атомные и молекулярные массы химических элементов.
Macsyma включает большое количество команд и дополнительные пакеты комбинаторики, теории вероятностей, математической статистики и статистической обработки данных.
По количеству специальных функций программа не уступает своим конкурентам. Она содержит также в основной и дополнительных библиотеках специализированные наборы функций для операций с матрицами, полиномами, рядами, логические и комбинаторные функции и оперирует с обобщенными функциями Дирака и Хэвисайда.
Macsyma имеет сопоставимые с Maple и Mathematica средства для преобразования алгебраических выражений, для решения уравнений, неравенств и систем, вычисления интегралов, сумм и произведений. В то же время одно очень удобное средство - уточняющие запросы относительно переменных, от области определения которых зависит конечный результат, - содержится только в Macsyma. Приведем пример (cм. рис. 7).
В Maple и Mathematica для устранения неоднозначного ответа необходимо предварительно задавать области изменения переменных.
Геометрия
Команды геометрического пакета программы Macsyma позволяют вычислять длину кривых, площадь и объем двух-, трех- и многомерных фигур. Программа включает также элементы сферической и Римановой геометрий.
Линейная алгебра, векторное и тензорное исчисление
Линейная алгебра - один из наиболее мощных пакетов Macsyma. Алгоритмы для численного решения задач линейной алгебры почти полностью соответствуют популярному пакету матричной алгебры MatLab. Более того, почти все выполняемые подпрограммы MatLab транслируются и выполняются в Macsyma. В то же время программа имеет возможности для выполнения аналитических вычислений, сопоставимые с Maple и Mathematica.
Векторное исчисление. Программа позволяет вычислять и упрощать выражения, содержащие координаты двух- и трехмерных векторов, с помощью независимых от координат векторных операторов (скалярное и векторное произведение, градиент, дивергенция, Лапласиан). Полученные выражения могут быть преобразованы к конкретной системе координат. Macsyma “знает” 20 ортогональных систем координат и не уступает Maple и Mathematica по этим параметрам.
Тензорное исчисление. Macsyma предлагает как индексное, так и компонентное тензорное исчисление. Пакет tensor программы автоматизирует написание тензорных уравнений в частных производных в произвольных дифференцируемых координатах. В то же время Maple не содержит функций индексного тензорного исчисления. Только в дополнительных профессиональных приложениях MathTensor и CARTAN программы Mathematica, распространяемых как самостоятельные продукты, имеются функции тензорного исчисления, превосходящие функции Macsyma.
Интегральные преобразования. По количеству интегральных преобразований Macsyma уступает конкурентам. Она содержит только возможности прямого и обратного преобразования Лапласа и Фурье, что достаточно для решения большинства прикладных задач.
Дифференциальные и интегральные уравнения
Обыкновенные дифференциальные уравнения. Программа умеет решать аналитически линейные и нелинейные дифференциальные уравнения первого порядка, линейные дифференциальные уравнения второго порядка и системы линейных дифференциальных уравнений первого порядка. Кроме того, Macsyma содержит приближенные методы (разложение в ряд Тейлора и три метода возмущений для решения большого класса обыкновенных дифференциальных уравнений). Численные методы включают классические алгоритмы Рунге - Кутта, а также алгоритмы решения жестких дифференциальных уравнений. Программа, в отличие от Maple V 4.0 и Mathematica 3.0, не имеет средств для аналитического решения дифференциальных уравнений выше второго порядка, однако по другим параметрам не уступает своим главным конкурентам.
Мода колебаний круглой мембраны, вычисленная методом конечных элементов программы PDEase2D
Интегральные уравнения. Среди универсальных математических пакетов только Macsyma умеет решать интегральные уравнения. Программа использует около десятка методов для решения интегральных уравнений первого и второго рода, с фиксированными и переменными пределами интегрирования.
Обработка данных
Macsyma эффективно взаимодействует с другими программами в области импорта и экспорта данных. Кроме того, она имеет много функций для анализа, обработки и фильтрации больших массивов данных, а также графического представления и аппроксимации данных (рис. 4).
Программирование
Macsyma, как и другие пакеты символьной математики, располагает средствами не только процедурного программирования, но и программирования по заданному правилу. Программа, как и ее главные конкуренты, имеет открытую архитектуру, так что большинство команд, хранящихся в командных файлах (с расширением .mac), могут быть прочитаны и изменены пользователем. Разумеется, пользователь может программировать свои команды, пополняя библиотеку Macsyma.
Компилятор
Macsyma 2.2, так же, как и Mathematica 3.0, имеет компилятор, благодаря чему все программы, включая подпрограммы по заданному правилу, могут быть откомпилированы в двоичный код.
Генерация Фортрана и Cи. Macsyma генерирует коды Фортрана и Cи, в том числе управляющие операторы (циклы итерации, ветвления if-then), определения subroutine и function и описания типов переменных, включая матрицы, сегментацию выражений и возможность задания оптимизации общих частей выражений. Вы можете даже смешать Фортран (или Cи) с языком Macsyma в одном файле. Maple и Mathematica преобразуют в коды Фортрана или Cи только математические выражения.
Трансляция команд программы MatLab. Как уже упоминалось выше, команды программы MatLab с расширением .m могут транслироваться в команды Macsyma с расширением .mac. Другой метод запуска команд MatLab - ввести команду input_language = matlab, после которой введенные в командной строке команды MatLab будут немедленно выполняться. Обратный переход к языку Macsyma осуществляется командой input_language = macsyma.
NumKit
Этот дополнительный пакет для Macsyma 2.2 существенно увеличивает скорость выполнения операций с действительными и комплексными числами с плавающей запятой. Как утверждают разработчики, эффективная скорость выполнения операций достигает скорости программ на языке Фортран.
Macsyma использует NumKit для вычислений с матрицами, полиномами, при обработке данных и при решении систем линейных уравнений.
Этот пакет распространяется за дополнительную плату и функционирует только на 32-разрядных платформах (Windows 95 или NT). NumKit разработан на основе библиотеки LAPACK департамента энергетики США, состоящей из программ линейной алгебры для чисел с плавающей запятой.
Уравнения в частных производных
Пожалуй, наиболее существенное преимущество Macsyma по сравнению с другими универсальными математическими пакетами - умение аналитически и численно решать большое количество видов уравнений в частных производных.
Вид сетки элементов, автоматически генерируемой программой PDEase2D при решении задачи о колебании круглой мембраны
PDELIE, новый пакет программы Macsyma, находит симметрии Ли и аналитические решения систем уравнений в частных производных. Mathematica и Maple имеют пакеты для нахождения симметрий Ли, однако могут только выводить результирующую систему квазилинейных уравнений.
Борис Манзон