Компьютерная алгебра в системе Sage
Покупка
Новинка
Год издания: 2013
Кол-во страниц: 80
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-3680-4
Артикул: 842138.01.99
В пособии рассматриваются алгебраические алгоритмы на примере системы компьютерной алгебры Sage. Обсуждаются манипуляции с символьными выражениями, вычисления в различных алгебраических структурах, преобразования систем алгебраических уравнений. Пособие снабжено упражнениями и задачами.
Для студентов 3-4-го курсов математических и компьютерных специальностей, изучающих математику и компьютерную алгебру.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет имени Н.Э. Баумана А.Ю. Голубков, А.И. Зобнин, О.В. Соколова КОМПЬЮТЕРНАЯ АЛГЕБРА В СИСТЕМЕ SAGE Рекомендовано Научно-методическим советом МГТУ им. Н.Э. Баумана в качестве учебного пособия Москва Издательство МГТУ им. Н.Э. Баумана 2013
УДК 681.3.06(075.8) ББК 22.18 Г62 Рецензенты: М.А. Бабенко, П.Г. Ключарев Г62 Голубков А.Ю. Компьютерная алгебра в системе Sage : учеб. пособие / А.Ю. Голубков, А.И. Зобнин, О.В. Соколова. — М.: Изд-во МГТУ им. Н.Э. Баумана, 2013. — 79, [1] с. : ил. ISBN 978-5-7038-3680-4 В пособии рассматриваются алгебраические алгоритмы на примере системы компьютерной алгебры Sage. Обсуждаются манипуляции с символьными выражениями, вычисления в различных алгебраических структурах, преобразования систем алгебраических уравнений. Пособие снабжено упражнениями и задачами. Для студентов 3–4-го курсов математических и компьютерных специальностей, изучающих математику и компьютерную алгебру. УДК 681.3.06(075.8) ББК 22.18 Учебное издание Голубков Артем Юрьевич Зобнин Алексей Игоревич Соколова Ольга Владимировна КОМПЬЮТЕРНАЯ АЛГЕБРА В СИСТЕМЕ SAGE Редактор С.А. Серебрякова Корректор Р.В. Царева Компьютерная верстка В.И. Товстоног Подписано в печать 15.03.2013. Формат 60×84/16. Усл. печ. л. 4,65. Тираж 100 экз. Изд. №49. Заказ Издательство МГТУ им. Н.Э. Баумана. Типография МГТУ им. Н.Э. Баумана. 105005, Москва, 2-я Бауманская ул., 5, стр. 1. ISBN 978-5-7038-3680-4 c ⃝МГТУ им. Н.Э. Баумана, 2013
ПРЕДИСЛОВИЕ Учебное пособие написано на основе материалов практических занятий, проведенных авторами в 2010–2011 гг. на факультете «Информатика и системы управления» в МГТУ им. Н.Э. Баумана и на механико-математическом факультете МГУ им. М.В. Ломоносова на третьем курсе в течение осеннего семестра. Компьютерная алгебра — современная дисциплина, изучающая алгоритмы преобразования математических выражений в символьном виде [1]. В этом аспекте она противопоставляется численным методам. Мы предполагаем, что читатели знакомы с основами линейной алгебры (матрицы, системы линейных уравнений, определители, линейные операторы) и с основными алгебраическими структурами (группами, кольцами, полями, векторными пространствами) в объеме стандартного университетского курса [2—5]. Кроме того, мы рассчитываем, что читатель владеет базовыми навыками программирования. В качестве системы компьютерной алгебры мы выбрали систему Sage. Мы рассматриваем работу с символьными выражениями в этой системе, вычисления в различных алгебраических структурах (группах, кольцах, полях, векторных пространствах), работу с матрицами и многочленами. Особое внимание в пособии уделено задаче исследования систем алгебраических уравнений. К сожалению, мы не останавливаемся на задачах символьного дифференцирования и интегрирования и на алгоритмах факторизации многочленов. Пособие не является полным справочником по системе Sage, а представляет собой обзор возможностей этой системы символьных вычислений, а также круга алгоритмических 3
задач, возникающих в алгебре. Мы рассчитываем, что читатель при необходимости сможет обратиться к справочной системе [6—8]. Пособие состоит из пяти глав, содержащих краткую теоретическую информацию и примеры использования функций системы компьютерной алгебры. В конце глав приведены упражнения и задачи. В упражнениях требуется либо решить с помощью компьютера данную конкретную задачу (часто вполне решаемую и вручную), либо самостоятельно разобраться с функционалом системы. В задачах же, в отличие от упражнений, нужно составить общий алгоритм решения и записать его в виде отдельной подпрограммы.
1. ОСНОВЫ РАБОТЫ С СИСТЕМОЙ SAGE 1.1. Что такое Sage Первая версия системы компьютерной алгебры Sage (http:/ /sagemath.org) появилась в 2005 г., к настоящему времени проект Sage успел хорошо себя зарекомендовать. Сейчас свой вклад в развитие системы Sage вносят около 200 математиков и программистов всего мира как на добровольной основе, так и при реализации специализированных грантов. Координирует усилия по развитию системы проф. Уильям Штейн из университета Вашингтона. Система Sage свободно распространяется на условиях лицензии GNU Public License; ее исходные коды открыты. Своей целью разработчики системы выбрали создание открытой и свободно распространяемой альтернативы системам Magma, Maple, Mathematica и MATLAB. Чтобы проделать такую работу с нуля, потребовались бы тысячи человеко-часов. Тем не менее уже существует большое количество эффективных открытых математических пакетов, которые можно было бы интегрировать в систему. Однако такие пакеты написаны на разных языках (в основном C, C++, Fortran, Python) и имеют разный интерфейс и назначение. Поэтому с самого начала система Sage задумывалась как единый интерфейс к различным свободным пакетам компьютерной алгебры, таким как GAP, Pari, Singular и Maxima. Сейчас система Sage объединяет около 80 как узкоспециализированных пакетов, так и систем компьютерной алгебры общего назначения. Пользователь, работая в системе Sage, может легко переключаться между ними, а при совершении стандартных операций даже не знать, с помощью каких именно пакетов эти операции выполняются. 5
В качестве исходного языка программирования в системе Sage выбран популярный язык Python («питон»), хотя критичные по времени выполнения блоки кода реализованы на языке С/С++. Этот выбор оказался очень удачным по ряду причин: — вместо того чтобы создавать новый язык (как это было сделано в системах Magma, Maple, Mathematica, MATLAB, GP/PARI, GAP, Macaulay 2 и т. п.), разработчики системы Sage выбрали уже существующий популярный язык программирания; — Python — чрезвычайно выразительный язык. Он позиционируется как язык для быстрой и удобной разработки и прототипирования. Python является интерпретируемым объектноориентированным языком с динамической типизацией, сборкой мусора и элементами функционального программирования; — к языку прилагается богатая стандартная библиотека. Кроме того, в свободном доступе имеется множество пакетов по численным методам, линейной алгебре, двумерной и трехмерной графике, распределенным вычислениям, поддержке баз данных и т. д., которые могут заинтересовать пользователей системы Sage; — Python — кроссплатформенный язык. Он поставляется с исходными кодами и может быть собран на любой платформе; — Python имеет богатые встроенные средства для документации кода, управления памятью, обработки исключений, отладки программ, тестирования и т. д; Несмотря на то что значительная часть системы Sage написана на языке Python, специализированных знаний этого языка от читателей не требуется. Все необходимые комментарии по синтаксису языка даны в этом пособии. Изучить язык Python подробнее можно с помощью ресурсов сайта http:/ /python.org. 1.2. Установка системы Sage Основная разработка системы Sage ведется для Linux-подобных операционных систем. Существует несколько способов установить систему Sage: 1) загрузить и собрать систему из исходных кодов (на платформах Linux, OS X, Solaris); 2) загрузить скомпилированные (исполняемые) файлы (на платформах Linux, OS X, Solaris); 6
3) загрузиться с компакт-диска Live CD, содержащего операционную систему Linux и систему Sage. Эта возможность позволяет изучить работу с системой Sage, не устанавливая ее на компьютер. Образ диска можно скачать с сайта Sage (http:/ /sagemath.org); 4) хотя полноценной сборки Sage для Windows не существует, запустить Sage в Windows можно через специльную «виртуальную машину», эмулирующую Linux (например, VirtualBox); 5) можно воспользоваться online-версией Sage, находящейся в сети по адресу http:/ /sagenb.org. В этом случае система Sage работает на удаленном сервере, а пользователь взаимодействует с ней через обычный браузер. Такой способ имеет ряд ограничений (например, по объему доступной памяти). Работать с системой Sage можно в различных режимах: — графический интерфейс (notebook): работа с системой Sage ведется через браузер. При этом Sage может быть запущена как локально, так и удаленно. Именно в этом режиме работает onlineверсия системы Sage; — режим командной строки: работа с системой Sage ведется в консоли в текстовом режиме. Графика и сложные формулы при необходимости могут отображаться в отдельном окне; — программы, написанные для системы Sage, можно запускать отдельно c помощью интерпретатора Sage из консоли; — библиотеку Sage можно подключать в скрипты на языке Python. Для начального ознакомления мы рекомендуем воспользоваться графическим интерфейсом и работой с удаленным сервером через браузер на сайте http:/ /sagenb.org, хотя работа с системой через командную строку в терминале тоже достаточно проста и удобна. Для постоянного использования удобнее полностью установить системы Sage на компьютер. 1.3. Присваивание. Арифметические операции Далее рассмотрим базовые конструкции системы Sage и языка Python. Опустим некоторые детали синтаксиса языка Python, отсылая читателя к справочным руководствам и сайту http:/ /docs.python.org. 7
Будем иллюстрировать работу с системой Sage в режиме диалога с пользователем (в «режиме калькулятора»). В наших примерах строка, начинающаяся с приглашения sage:, обозначает команду, введенную пользователем. Следом за такой строкой будет идти результат выполнения команды. Каждая команда Sage в режиме диалога пишется с новой строки. Для ее выполнения следует нажимать комбинацию клавиш Shift + Enter. В командной строке можно также просто нажимать клавишу Enter. Оператор = обозначает присваивание, как и в языке С. Однако в отличие от C этот оператор не возвращает никакого значения, а просто связывает имя, стоящее слева, со значением, записанным справа. В дальнейшем это имя можно будет привязать к другому значению (возможно, совершенно другого типа) с помощью нового присваивания или вообще «отвязать» от значения командой del: sage: a = 5 sage: a 5 sage: a = "hello" sage: a hello sage: del a sage: a NameError: name ’a’ is not defined Последняя команда завершилась ошибкой (исключением) NameError, поскольку мы «отвязали» имя a от значения "hello". Sage автоматически освобождает память, занимаемую значением, если обнаруживает, что с этим значением больше не связано никаких имен. Эта операция называется сборкой мусора. Обозначения для операторов сравнения ==, !=, <=, >=, < и > такие же, как и в языке С. В отличие от других языков программирования в языке Python допускаются двойные неравенства: sage: 2 == 2 True sage: 2 == 3 False 8