Научная статья на тему 'Аналитический обзор систем символьных вычислений'

Аналитический обзор систем символьных вычислений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
2033
492
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМЫ КОМПЬЮТЕРНОЙ АЛГЕБРЫ / СИСТЕМЫ СИМВОЛЬНЫХ ВЫЧИСЛЕНИЙ / CAS / AXIOM / MAXIMA

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кулябов Д. С., Кокотчикова М. Г.

Системы символьных вычислений способны существенно облегчить нычисления исследователя, освободить его от рутинный работы: вычисления интегралов, произподных высоких порядков, решений систем дифференциальных уравнений, построения графиков сложных функций. Статья посвящена современным средствам проведения эксперимента, для облегчения расчетов которого используется компьютер. На основании проведенного аналитического обзора даются рекомендации по использованию программных продуктов. Предпочтение отдаётся свободно-распространяемому ПО.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Analytic Review of Computer Algebra System

A computer algebra system (CAS) is a software program that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form. This article describe some of CAS, opensource primary, and make his comparison.

Текст научной работы на тему «Аналитический обзор систем символьных вычислений»

ф

ф

УДК 519.673:519.682.6

Аналитический обзор систем символьных

вычислений

Системы символьных вычислений способны существенно облегчить вычисления исследователя, освободить его от рутинный работы: вычисления интегралов, производных высоких порядков, решений систем дифференциальных уравнений, построения графиков сложных функций. Статья посвящена современным средствам проведения эксперимента, для облегчения расчетов которого используется компьютер. На основании проведенного аналитического обзора даются рекомендации по использованию программных продуктов. Предпочтение отдаётся свободно-распространяемому ПО.

Ключевые слова: CAS, Axiom, Maxima, системы компьютерной алгебры, системы символьных вычислений.

Система символьных вычислений (ССВ), или система компьютерной алгебры (СКА), — мощный программный продукт способный решать широкий круг задач с различным уровнем вычислительной сложности, начиная от простых преобразований выражений: полиномов, рядов, рациональных функций и формул, и вплоть до решения различных систем уравнений. У таких систем есть ряд преимуществ перед системами, которые производят вычисления численно.

Большинство математических систем, используемых в работе с компьютером, являются численными системами. Они превращают компьютер в мощный программируемый калькулятор, позволяющий выполнять арифметические вычисления с огромной скоростью. Хотя в наше время дисковые пространства, оперативная память и скорость обработки операции процессоров стремительно растут, редко такие результаты вычислений бывают абсолютно точными — как правило, при операциях с вещественными числами происходит их округление. Реализация большинства численных методов базируется на заведомо приближенных численных методах. Часто из-за накопления погрешности эти методы расходятся. За пределами возможностей численных математических систем оказались обширные области математики, связанные с проведением аналитических расчётов — от простых подстановок в выражениях до обучения компьютера новым математическим закономерностям и отношениям. Символьные операции — это то, что кардинально отличает системы символьной математики (или компьютерной алгебры) от систем для выполнения численных расчётов.

В научных исследованиях и технических расчетах специалистам приходится гораздо больше заниматься преобразованиями формул, чем собственно численным счетом, однако с появлением компьютеров основное внимание уделялось автоматизации последнего, хотя компьютеры стали применяться для решения таких задач символьных вычислений, как, например, символьное дифференцирование, ещё в 50-е годах прошлого века. Активная разработка систем компьютерной алгебры началась в конце 60-х [1]. С тех пор создано значительное количество различных систем, получивших в разной степени распространение; некоторые системы продолжают развиваться, другие отмирают, появляются новые. Динамика систем непрерывна.

Д. С. Кулябов, М. Г. Кокотчикова

Введение

1. Историческая справка

ф-

Эру создания компьютерной символьной математики принято отсчитывать с начала 60-х годов. Именно тогда в вычислительной технике возникла новая ветвь компьютерной математики, не совсем точно, но зато броско названная компьютерной алгеброй. Речь шла о возможности создания компьютерных систем, способных осуществлять типовые алгебраические преобразования: подстановки в выражениях, упрощение выражений, операции со степенными многочленами (полиномами), решение линейных и нелинейных уравнений и их систем, вычисление их корней. При этом предполагалась возможность получения аналитических (символьных) результатов везде, где это только возможно.

Большинство пользователей было заинтересовано в том, чтобы правильно выполнить конкретные аналитические преобразования: вычислить в символьном виде производную или первообразную заданной функции, разложить ее в ряд Тейлора или Фурье, а вовсе не в детальном и сложном математическом и логическом описании того, как это делается компьютером (или, точнее, его программистом).

Поняв это, многие западные фирмы приступили к созданию компьютерных систем символьной математики, ориентированных на широкие круги пользователей, не являющихся профессионалами в компьютерной алгебре. Учитывая невероятно большую сложность автоматизации решения задач в аналитическом виде (число математических преобразований и соотношений весьма велико), первые подобные системы удалось создать лишь для больших ЭВМ. Но затем появились и системы, доступные для мини-ЭВМ. Заметное развитие получили языки программирования для символьных вычислений Reduce, система muMath для малых ЭВМ, а в дальнейшем — интегрированные системы символьной математики для персональных компьютеров: Derive, MathCAD, Mathematica, Maple V.

В табл. 1 [1] приведена краткая хронология развития СКА, выделены ее основные этапы.

2. ССВ и системы численных вычислений. Области применимости каждого подхода

Системы численных вычислений применяются на первых этапах исследования, они позволяют оценить результаты. Это может быть предварительным оценочным этапом исследований. Компьютер позволяет облегчить анализ полученных данных. Для этого и предназначены пакеты ROOT и PAW (Physics Analysis Workstation). Сначала задача рассчитывается на наборе точек и при помощи пакета ROOT или PAW возможно приблизить результат какой-нибудь функцией.

PAW — это интерактивная программа, используемая для анализа и графического представления результатов, с возможностью автоматизации посредством скриптов.

PAW позволяет работать с большими объемами данных. Данные в основном представлены в виде списка не связанных между собой событий. Каждое событие представляет из себя набор именованных полей. Данные можно представить в виде одномерных или двумерных гистограмм. В PAW реализована фильтрация событий по условию. Для сравнения экспериментальных данных с теорией PAW предоставляет интерфейс к чрезвычайно мощной и гибкой процедуре подгонки и оценки ошибок.

Пакет PAW был создан для задач физики элементарных частиц (ФЭЧ). История PAW берет свое начало в 1986 году в Европейском Центре Ядерных Исследований (CERN). В процессе разработки основной упор делался на работу с очень большим объёмом данных.

Для целей физического анализа PAW распространялась свободно с самого начала, но только в 2000 году она стала доступна по GPL. По сути PAW является интерфейсом к набору библиотек CERNLIB. Все, что можно сделать в PAW интерактивно, также можно реализовать в компилируемом программном коде. В PAW встроен интерпретатор языка программирования Fortran.

Чем же интересна PAW сейчас, когда есть ROOT? Во-первых, нет необходимости менять PAW в тех проектах, где она уже прижилась. Для целей интерактивного анализа PAW эффективнее, чем ROOT, из-за излишней многословности

Таблица 1

Хронология ССВ

Дата Событие

Середина XIX века Первые идеи автоматизации формульных выкладок— леди Ада Аугуста Лавлейс.

50-е годы XX века Отдельные программы для решения конкретных задач на машинном языке. — Первые программы дифференцирования функций, США — Работы Л.В.Канторовича

60-е годы XX века Исследования по созданию общих алгоритмов и программ в различных классах выражений. — Появление алгоритмических языков высокого уровня — Реализация полиномиальной алгебры — Алгоритм Риша (1967,система SIN) — Появление программных систем общего назначения (универсальных СКА): REDUCE, MACSYMA, MATHLAB, SCRATCHPAD, FORMAC, СИРИУС, АВТОАНАЛИТИК, АНАЛИТИК

70-е годы XX века Первые в СССР систематические применения К А для решения физических задач, Дубна, оияи

80-е годы XX века — Развитие вычислительной техники: суперкомпьютеры, рабочие станции, PC — Появление систем с развитым пользовательским интерфейсом: MAPLE (1981) и MATHEMATICA (1988) — СКА «нового поколения» (SCRATCHPAD-II, SMALLTALK) -учет абстрактных типов данных, использование средств ООП — Аппаратная реализация: АВТО АНАЛИТИК, LISP-машины

90-е годы XX века — Интеграция символьных вычислений и численных расчетов — MATHEMATICA и MAPLE: все аспекты научного и технического компьютинга — в одной системе — СКА становятся серийными коммерческими продуктами

Начало XXI века — Система Axiom становится свободной (2001) — Появление системы Cadabra (2001) — Умер создатель системы Maxima Вильям Шеттлер (2001), проект стал медленнее разрабатываться

е

■е

последнего (наследие CH—+). Многие базовые идеи, которые были заложены в фундамент PAW, достаточно интересны в плане изучения и копирования. Программы для того и делаются свободными, чтобы лежащие в их основе идеи не пропадали.

PAW оперирует векторами, гистограммами, списками событий и выборками подмножеств этих событий. Эти объекты являются для PAW базовыми. Сначала возник PAW, а 10 лет спустя появился ROOT. С 2006 года ROOT (http://root. cern.ch./) стал выпускаться под лицензией GNU, и, возможно, скоро попадёт во все основные дистрибутивы GNU/Linux. ROOT активно поддерживается и развивается. У ROOT есть довольно мощное сообщество. На сайте http://root. cern.ch можно найти ответ почти на все вопросы, касающиеся пакета.

При построении графиков, в отличие от своего предка PAW, ROOT позволяет интерактивно менять параметры картинки с помощью выпадающих меню. Тип меню зависит от того, на какой объект направлен указатель мыши. Также с помощью левой кнопки можно интерактивно изменять масштаб графика. Не стоит сильно изменять график, так как большое количество операций увеличивает время, потраченное на создание картинок. В отличие от набранных команд, осмысленные движения и клики мыши сохранить для повторного использования невозможно. Гистограмма является одним из основных элементов анализа. Интерпретатор для ROOT написан на языке С, поэтому возможно интегрирование в программу модулей, написанных на языке С.

После предварительной численной оценки можно переходить к аналитическим вычислениям. Таким образом, можно перейти к более детальному изучению построенной численно моделью. СКА снабжаются специальным процессором для выполнения аналитических (символьных) вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых производятся аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, если такое решение существует.

Визуализация является важнейшим инструментом исследователя. И тут проявляется различие между ССВ и СЧВ. Для численных расчётов результатом является набор значений, поэтому обычно стоит задача представить их в виде графика, сравнить с экспериментальными результатами. Поэтому важнейшим элементом пакетов численных вычислений являются графические библиотеки. При аналитических расчётах результатом является формула. И на первый план выходит привычное графическое представление формулы, то есть возрастает роль графического интерфейса.

3. Универсальные и специализированные ССВ

СКА традиционно делятся на специализированные и универсальные. Специализированные системы спроектированы и предназначены для решения конкретных задач, например, из небесной механики или квантовой теории поля. Универсальные системы ориентированы на широкий круг математических задач, хотя они имеют в своих библиотеках частные пакеты.

Результатом развития языков программирования, в частности Си и Lisp, стали универсальные математические пакеты, например, Maple, Mathematica, Maxima и Axiom. Эти системы имеют дружественный интерфейс, реализуют множество стандартных и специальных математических операций, снабжены графическими средствами и обладают собственными языками программирования. Все это предоставляет широкие возможности для эффективной работы специалистов разных профилей, о чем говорит активное применение математических пакетов в научных исследованиях и в преподавании. С помощью этих пакетов можно гораздо проще и быстрее решать инженерные задачи, готовить и выполнять домашние задания.

Однако за универсальность приходится расплачиваться. При решении некоторых задач эти системы слишком многословны, а зачастую требуют установки (или даже дописывания) дополнительных модулей. В качестве примера таких задач можно привести теорию поля, где возникают тензорные величины, индексы

(обладающие определёнными свойствами), симметрии. Описание этих сущностей требует усложнённого входного языка. Списочная внутренняя структура, применяемая универсальными системами, становится громоздкой для их представления. И тогда происходит смена парадигм: от универсальных к специализированным системам. Как яркий пример специализированной системы можно привести пакет Cadabra.

На данный момент существует более 26 СКА [2]. Среди существующих математических пакетов можно выделить следующие системы: Maple и Mathematica (коммерческие), Maxima и Axiom (свободно-распространяемые). Одной из отличительных черт у этих систем является операционная система, системы Maple и Mathematica работают под ОС Windows, а системы Maxima и Axiom работают как под ОС Windows, так и под ОС Linux (следует отметить, что работа данных систем под ОС Windows осуществляется с существенными ограничениями, система Axiom под ОС Windows не поддерживает графических модулей).

В табл. 2 приведён список из 15 систем, в также указано применения конкретной системы. 4 системы — Axiom, Maple, Mathematica и Maxima — являются универсальными. Следует обратить внимание и на условия распространения. Предпочтение отдается свободно-распространяемым системам, однако не стоит отодвигать на второй план такую мощную универсальную и принятую за рубежом систему, как Maple.

Таблица 2

Сравнение ССВ

Название Начало разработки Лицензия Применение

1. Axiom 1971 BSD Универсальная ССВ

2. Cadabra 2001 GPL Тензорная алгебра, теория поля

3. CoCoA 1987 GPL Для операций с полиномов

4. Fermat 1986 shareware Полиномы и матрицы

5. GAP 1986 GPL Группы, теория характеров, дискретная математика

6. GiNaC 1997 GPL Библиотека языка СН—Ь

7. GINV 2005 GPL Метод базисов Гребнера для систем уравнений

8. Maple 1979 Коммерч. Универсальная ССВ

9. MathCad 1985 Коммерч. WYSIWYG интерфейс и типографское качество вывода информации

10. Mathematica 1986 Коммерч. Универсальная ССВ

11. Mathomatic 1986 LGPL Общая алгебра

12. Maxima 1967 GPL Универсальная ССВ

13. Meditor 2000 GPL Библиотека символьных вычислений языка Java и математический редактор

14. PARI/GP 1985 GPL Теория чисел и заданная точность вычислений

15. Singular 1984 GPL Полиномы, кольца, идеалы

е-

Вестник РУДН, Серия Математика. Информатика. Физика. № 1-2. 2007. с. 38-45

4. Универсальные системы Axiom и Maxima

Перечислим общие особенности систем Maxima и Axiom перед системами, приведенными в табл. 2. Во-первых, эти две системы являются свободно-распространяемыми системами (лицензия GPL). Во-вторых, среда программирования язык Lisp, это, однако, не означает, что пользователь пишет команды на языке Lisp. Для каждой системы определен заранее список команд, которые предварительно писались создателем на языке Lisp, одной из целей создания которого являлась возможность вычислений в символьном виде. В-третьих, эти ССВ являются кроссплатформенными, то есть работают под ОС Linux и под ОС Windows. Для того, чтобы работать в этих ССВ, пользователю не обязательно переучиваться с Windows на Linux и наоборот.

Перечислим особенности системы Maxima:

1) Чувствительность к регистру.

2) Консольная программа, но возможны интеграции в графические оболочки. Следует подробно остановиться на этих оболочках: TgXmacs и wxMaxima.

В wxMaxima вводятся формулы в текстовом виде, а вывод отображается графически, привычными математическими символами. Кроме того, большой упор здесь сделан на удобство ввода: командная строка отделена от окна ввода-вывода, а дополнительные кнопки и система меню позволяют вводить команды не только в текстовом, но и в диалоговом режиме. Так называемое «автодополнение» в командной строке на самом деле с таковым имеет лишь то сходство, что вызывается клавишей «Tab». Реализована как вызов истории команд, он вызывает ту команду из уже введенных в этой сессии, которая начинается с заданных в командной строке символов, но не дополняет до имен команд и их параметров. Таким образом, этот интерфейс наиболее удобен в том случае, когда нужно много вычислять и видеть результаты на экране; и еще для быстроты ввода команд. Кроме того, wxMaxima предоставляет удобный интерфейс к документации по системе; хотя, так как документация поставляется в формате html, вместо этого можно использовать обычный браузер.

Второй достаточно интересный интерфейс к Maxima — это дополнительный режим в редакторе TEXmacs, который подгружается в виде сессии. Maxima-сессия вызывается из меню: «Вставить ^ Сессия^Maxima», при этом появляется дополнительное меню с командами Максимы. После запуска сессии можно уже внутри нее перейти в математический режим ввода и при вводе также использовать элементы математической нотации. Этот редактор разрабатывается для визуального редактирования текстов научной тематики, при котором вы видите на экране редактируемый текст практически в том же виде, в котором он будет распечатан. В частности, он имеет математический режим ввода, очень удобный для работы с самыми разнообразными формулами, и умеет импортировать/экспортировать текст в LTEX и XML/HTML. Именно возможностями по работе с формулами пользуется Maxima, вызванная из TEXmacs. Фактически, формулы отображаются в привычной математической нотации, но при этом их можно редактировать и копировать в другие документы наподобие обыкновенного текста. Этот интерфейс будет наиболее удобен тем, кто хочет использовать результаты вычислений в своих текстах и любит редактировать их в визуальном режиме.

3) Не требовательна к ресурсам компьютера. Работает на маломощных компьютерах.

4) Каждый оператор в Maxima — функция.

5) Комплексные числа записываются в алгебраической форме: a+b*%i, где %i — мнимая единица, a и b — соответственно, действительная и мнимая части.

6) Символьное вычисление: пределы, упрощение выражения, производные, интегралы, упрощение тригонометрических функций, решение дифференциальных уравнений.

7) Внешняя графическая библиотека GNUPlot.

Ф

Ф

Следующей особенностью этих систем является возможность построение графиков. В системе Maxima построение осуществляется при помощи пакета GNUPlot.

Кроме перечисленных особенностей, для системы Axiom присущи и другие особенности:

1) Строгая типизация. Переменный и функции должны быть изначально четко определены, либо не определены вообще, в этом случае система сама подбирает тип для соответствующей переменной.

2) Возможность добавления модулей. Модуль представляет собой отдельный файл с расширением *. input, который при надобности подгружается потом.

3) Документированность. Эта система хорошо документирована, можно скачать подробную книгу около 1100 страниц.

4) Построение графиков. Особенностью является то, что в ОС Windows построение графиков пока невозможно.

5) Среда программирования: Lisp, Aldor, Fortran. Lisp — внутренний язык системы, существует возможность компиляции и на других языках: Aldor и Fortran.

6) Собственная встроенная графическая библиотека.

7) Символьные вычисления. Система с легкостью производит в символьном виде следующие операции:

— преобразование;

— вычисление производных, пределов, интегралов;

— решение различных систем уравнений;

— работа с матрицами.

Для тех, кто привык работать не в консоли, а графической оболочке, система Axiom предоставляет возможность работы в TEXmacs. Принципы работы сходны с описанными ранее принципами работы с системой Maxima.

Выводы

Дадим рекомендации по областям применения основных СКА. При исследовании сложной системы на начальном этапе следует применить численные системы: ROOT и PAW. Это позволит приблизить, сгладить численные результаты, аппроксимировать известными функциями. Далее стоит применять либо узкоспециализированные системы (см. табл. 2), либо универсальные СКА, Axiom и Maxima, речь о которых шла выше. При визуализации данных используются в зависимости от СКА либо встроенные библиотеки, либо внешние(например, GNUPlot). Этот самостоятельный пакет хорош тем, что позволяет визуализировать данные из разных программ, файлов. Если перед Вами стоит задача из

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Таблица 3

Ссылки на программные продукты

Название Официальный сайт

PAW http //paw.web.c ern.ch/paw/

ROOT http //root.cern.ch/

Axiom http //wiki.axiom-developer.org/

Maxima http //maxima.sourcef orge.net/

GNUPlot http //www.gnuplot.inf o/

T^Xmacs http //www.texmacs.org/

wxMaxima http //wxmax ima.s ourc ef orge.net/

е

■е

области дискретной математики или теории поля, обратите внимание на специализированные СКА. Ссылки на программные продукты, упомянутые в статье, представлены в табл. 3.

Основное направление, кроме научных разработок, где такие программы востребованы — это высшее образование; а использование для учебных нужд именно свободного ПО — это реальная возможность и для вуза, и для студентов и преподавателей иметь в своем распоряжении легальные копии такого ПО без больших и даже сколько-нибудь существенных денежных затрат.

1. Панкратьев Е. В. Элементы компьютерной алгебры. — California: Интернет-университет информационных технологий — ИНТУИТ.ру, БИНОМ. Лаборатория знаний Серия: Основы информатики и математики, 2007. — 248 с.

2. Comparison of computer algebra systems. — http://en.wikipedia.org/wiki/ Comparison_of_computer_algebra_systems.

A computer algebra system (CAS) is a software program that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form. This article describe some of CAS, opensource primary, and make his comparison.

Литература

UDC 519.673:519.682.6

Analytic Review of Computer Algebra System

D.S. Kulyabov, M. G. Kokotchikova

i Надоели баннеры? Вы всегда можете отключить рекламу.