УДК 51-37
СИСТЕМА КОМПЬЮТЕРНОЙ АЛГЕБРЫ SAGE КАК СРЕДСТВО ДЛЯ РЕШЕНИЯ СИСТЕМ УРАВНЕНИЙ
Д. П. Ашуркин, Н. Ю. Богданова
Донской государственный технический университет, г. Ростов-на-Дону, Российская Федерация [email protected] [email protected]
Система компьютерной алгебры Sage позиционируется как универсальная математическая среда, объединяющая множество различных открытых программ и библиотек в рамках единого интерфейса. Цель проекта — создание реальной открытой альтернативы коммерческим математическим пакетам Maple, Mathematica и Matlab. Интересной особенностью Sage является то, что она изначально спроектирована в виде web-приложения, а серверная часть может быть запущена как локально, так и «в облаке». Sage предоставляет полностью бесплатный онлайн-сервис, который напрямую конкурирует с аналогичными коммерческими сервисами.
Ключевые слова: Sage, компьютерная алгебра, интерфейс, системы уравнений
UDC 51-37
COMPUTER ALGEBRA SYSTEM SAGE AS A MEANS OF SOLVING SYSTEMS OF EQUATIONS
D. P. Ashurkin, N. Y. Bogdanova
Don State Technical University, Rostov-on-Don, Russian Federation [email protected] [email protected]
Sage computer algebra system is positioned as a universal mathematical environment that brings together within a single interface many different public programs and libraries. The purpose of the project is to create a real alternative to commercial software packages like Maple, Mathematica and Matlab. An interesting feature of Sage is that it was originally designed as a web-application, and the back end can be run both locally and "in the cloud". Sage provides a completely free online service that directly competes with similar commercial services.
Keywords: Sage, computer algebra, the interface, the system of equations
Введение. В середине ХХ века на стыке математики и информатики возникло и интенсивно развивается фундаментальное научное направление — компьютерная алгебра, наука об эффективных алгоритмах вычислений математических объектов [1-3].
Целью данной работы является знакомство с системой компьютерной алгебры Sage, ее назначением и принципом работы.
Для достижения цели в работе были поставлены и решены следующие задачи:
• изучить современные системы компьютерной алгебры;
• применить систему компьютерной алгебры Sage для решения систем уравнений.
Современные системы компьютерной алгебры. В настоящее время появилось множество систем компьютерной алгебры: Singular, Sage, Derive, Maxima и т.д. Разработка, развитие и даже использование этих систем постепенно выделились в автономную научную дисциплину, относящуюся к информатике.
Самый популярный пакет, находящийся в свободном доступе — Maxima. Пакет Mathematica, по-видимому, является в настоящий момент наиболее популярным в научных кругах,
особенно среди теоретиков. Пакет предоставляет широкие возможности в проведении символических (аналитических) преобразований, однако требует значительных ресурсов компьютера.
Система компьютерной алгебры Sage. Первая версия системы компьютерной алгебры Sage появилась в 2005 г. и к настоящему времени проект Sage успел хорошо себя зарекомендовать. Сейчас свой вклад в развитие системы Sage вносят около 200 математиков и программистов всего мира, как на добровольной основе, так и при реализации специальных грантов. Координирует усилия по развитию системы профессор Уильям Штейн из университета Вашингтона.
Sage позиционируется как универсальная математическая среда, объединяющая символьные вычисления, численные расчеты, визуализацию данных и математическое программирование. Она объединяет множество различных открытых программ и библиотек (как чисто математических, так и более общего назначения) в рамках единого интерфейса. Целью проекта является создание реальной открытой альтернативы коммерческим математическим пакетам Maple, Mathematica и Matlab.
Технически Sage является коллекцией модулей, написанных на языке Python, которые интегрируют в единую систему такие программы, как Maxima, Axiom, Singular, gnuplot, R, octave, LaTeX и т. д. Всего в Sage используется около ста независимых компонентов.
В качестве исходного языка программирования в системе Sage выбран популярный язык Python («питон»), однако самые объемные по времени выполнения блоки кода реализованы на языке C/C++. Этот выбор оказался очень удачным по ряду причин:
• Python является интерпретируемым объектно-ориентированным языком с динамической типизацией, сборкой «мусора» и элементами функционального программирования;
• к языку прилагается богатая стандартная библиотека. Кроме того, в свободном доступе имеется множество пакетов по численным методам, линейной алгебре, двумерной и трехмерной графике, распределенным вычислениям, поддержке баз данных и т. д., которые могут заинтересовать пользователей системы Sage;
• Python — кроссплатформенный язык. Он поставляется с исходными кодами и может быть собран на любой платформе;
• Python имеет богатые встроенные средства для документации кода, управления памятью, обработки исключений, отладки программ, тестирования и т. д. [4].
Самой интересной особенностью Sage является то, что она изначально спроектирована в виде web-приложения, причем серверная часть может быть запущена как локально, так и удаленно, «в облаке». Sage предоставляет полностью бесплатный онлайн-сервис, который доступен с любого устройства в любой точке мира, и напрямую конкурирует с аналогичными сервисами коммерческих СКА.
После регистрации на сайте пользователь попадает в простое меню, позволяющее управлять документами Sage — создавать и удалять документы в облачном хранилище, скачивать и закачивать их на локальный компьютер. Любой документ можно открыть для совместного доступа выбранным пользователям или опубликовать по уникальной ссылке для всеобщего обозрения.
Документы Sage открываются как обычные динамические страницы в браузере и состоят из набора ячеек ввода, под которыми отображается результат обработки выражения — формула, график или иной объект [5].
На рис. 1. представлена панель инструментов Sage.
Действия над файлом Выполнить код
/деич /
Отступ Отобразить/скрыть Удалить вывод Отступ Отступ |-|оиск
Разделить вид Перейти
вправо вводячеики \ \
т
11 Text
,Л
ф
С
ь/
Остановить расчёт / Создание / Отобразить'
/ текстовой или скрыть Перезагрузить расчёт (не файл) ячейки вывод ячейки
ячеики /
о о
/
Отмена Возврат'
\
вправо / /
документа
/
в
С У 3 ЕЗ а С
\ / Автоотступ для Замена выделенного „ текста Уменьшить шрифт
Увеличить шрифт
/ /
|фт / □иЛт'
/
Ate /
Печать „ (в pdf) Сохранить
Шкала времени
Чат с людьми, f которым расшарен проект.
/
Рис. 1. Панель инструментов
Рис. 2. Скриншот с примером python-кода
Вычислить любой код возможно, нажав кнопку Run или комбинацию клавиш shift-enter. Ниже представлен скриншот с примером python-кода и информационными полосками.
Система предоставляет возможность одновременно работать со многими документами в разных вкладках браузера. При закрытии вкладки сам документ остается открытым на сервере, в частности, все незавершенные вычисления продолжают выполнятся в фоновом режиме.
Функциональные возможности Sage. Многочисленные возможности Sage включают:
• Интерфейс notebook для просмотра и повторного использования введённых команд и полученных результатов, включая графики и текстовые аннотации, доступные из большинства современных веб-браузеров. При этом доступно защищённое соединение через протокол HTTPS, в случаях, когда важна конфиденциальность. Также Sage может выполняться как локально, так и удалённо.
• Математический анализ, реализованный на основе систем Maxima и SymPy.
• Библиотеки элементарных и специальных математических функций.
• Плоские и трёхмерные графики для функций и данных.
• Средства работы с матрицами и массивами данных с поддержкой разрежённых массивов.
• Различные статистические библиотеки функций.
• Средства визуализации и анализа теории графов.
• Поддержка комплексных чисел, символьных и вычислений с произвольной точностью.
• Подготовка научно-технической документации с использованием редактора формул и возможностью встраивания Sage в документацию формата LaTeX [4].
Пример. Рассмотрим решение системы уравнений:
3 х2у2 + х2 — 3 ху = 7 110х2у2 + Зх2 - 20ху = 3
В среде Sage система будет выглядеть следующим образом (Python-код системы):
sage: var('x y')
(x,y)
sage: eq1 = 3*(xA2)*(yA2)+(xA2)-3*x*y==7 sage: eq2 = 10*(xA2)*(yA2)+3*(xA2)-20*x*y==3 sage: solve([eq1,eq2],x,y).
В строке ответа получаем следующее решение:
[x == -1, y == -2], [x == 1, y == 2].
В этой записи содержатся 2 пары х и у, которые являются решением исходной системы уравнений.
Решим систему линейных алгебраических уравнений:
~Ь 2X2 х3 = 1<
2хх + 4х2 — 4х3 + Зх4 + х5 = 0, хх + 2х2 + х3 + 2х4 + Зх5 = 2.
Решение данной системы требует довольно громоздких вычислений. Но при использовании системы компьютерной алгебры Sage решение сводится к нажатию нескольких клавиш. Вводим условие в систему:
sage: var('x y z f g') (x,y,z,f,g)
sage: eq1 = x+2*y-z+f+g==1 sage: eq2 = 2*x+4*y-4*z+3*f+g==0 sage: eq3 = x+2*y+z+2*f+3*g==2 sage: solve([eq1,eq2,eq3],x,y,z,f,g).
В строке ответа получаем:
[[x == -5/4*r1 - 2*r2 + 9/4, y == r2, z == -3/4*r1 + 3/4, f == -1/2*r1 - 1/2, g == r1]].
У = r2,
z = 4( 1-rO,
Г = -^(Ч + 1),
5 = ri,
где r1, r2 — произвольные числа.
Рассмотрим решение системы уравнений с тремя неизвестными и комплексными коэффициентами. Итак, система имеет вид:
х — 2 iy + z = 2, х — у + tz = 3, 1( 1 + i )х + 3 iy - 3 z = 0.
Вводим условие в виде алгоритма: sage: var('x y z')
(x,y,z)
sage: eq1 = x-2*i*y+z==2 sage: eq2 = x-y+i*z==3 sage: eq3 = (1+i)*x+3*i*y-3*z==0 sage: solve([eq1,eq2,eq3],x,y,z).
Нажав кнопку выполнения алгоритма, в строке ответа получим:
[[x == (-I + 4/3), y == (-1/9*1 - 8/9), z == (-7/9*1 + 8/9)].
Решение системы можно записать следующим образом:
4
x = 3_i' 8 1
У
9 9l'
8 7
г = - — — /.
9 9
Заключение. SageMath построен из почти 100 пакетов с открытым исходным кодом и имеет единый интерфейс.
Появление современных вычислительных систем значительно облегчает доступ к компьютеру непрофессионалам в области программирования и поддерживает постоянное стремление к усовершенствованию и освоению новых компьютерных технологий. Исполняемые файлы доступны для операционных систем Linux, OS X и Solaris. Несмотря на то, что Microsoft спонсировала разработку версии Sage специально под операционную систему Windows, на данный момент пользователям этой операционной системы нужно использовать технологию виртуализации для работы с Sage.
Существуют следующие варианты запуска системы компьютерной алгебры Sage на ОС Windows:
1. через специальную «виртуальную машину», эмулирующую Linux (например, VirtualBox);
2. через онлайн-версию Sage, находящуюся по адресу http://cloud.sagemath.com/. В этом случае Sage работает на удаленном сервере, а пользователь взаимодействует с ней через обычный браузер. Все рабочие документы сохраняются в «облаке».
Библиографический список
1. Морзеев, Ю. Современные системы компьютерной математики [Электронный ресурс] / КомпьютерПресс. — Режим доступа: http://compress.ru/article.aspx?id=12530_(дата обращения : 01.07.16).
2. Сиразов, Ф. С. Применение систем компьютерной алгебры в обучении элементам абстрактной и компьютерной алгебры / Ф. С. Сиразов // Изв. Российского гос. пед. ун-та им.
A. И. Герцена. — 2009. — № 116. — С. 223-227.
3. Семенов, С. П. Современные системы компьютерной алгебры / С. П. Семенов,
B. В. Славский // Изв. Алтайского гос. ун-та. — 1998. — № 1. — С. 20-22.
4. Голубков, А. Ю. Компьютерная алгебра в системе SAGE / А. Ю. Голубков, А. И. Зобнин, О. В. Соколова. — Москва, изд-во Московского гос. ун-та им. Н. Э. Баумана, 2013. — 79 с.
5. Яцкин, Н. И. Алгебраические вычисления в системе SAGE / Н. И. Яцкин. — Иваново, изд-во Ивановск. гос. ун-та, 2014. — 45 с.