Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Символьные вычисления в Python. Основы работы с библиотекой SymPy. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Министерство науки и высшего образования Российской Федерации
Казанский национальный исследовательский
технологический университет
А. Н. Титов, Р. Ф. Тазиева
СИМВОЛЬНЫЕ
ВЫЧИСЛЕНИЯ В PYTHON
ОСНОВЫ РАБОТЫ
С БИБЛИОТЕКОЙ SYMPY
Казань
Издательство КНИТУ
2023
УДК 004.42(075) ББК 32.97я7
Т45
Печатается по решению редакционно-издательского совета
Т45
Титов А. Н.
Символьные вычисления в Python. Основы работы с библиотекой SymPy : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева; Минобрнауки России, Казан. нац. исслед. технол. ун-т. – Казань : Изд-во КНИТУ, 2023. – 100 с.
ISBN 978-5-7882-3321-5
ISBN 978-5-7882-3321-5
©
Титов А. Н., Тазиева Р. Ф., 2023
©
Казанский национальный исследовательский технологический университет, 2023
УДК 004.42(075) ББК 32.97я7
Казанского национального исследовательского технологического университета
Рецензенты:
д-р пед. наук, доц. Ю. В. Торкунова
канд. экон. наук, доц. О. С. Семичева
Рассмотрены задачи по математическому анализу, вычислительной и при­кладной математике, информационным технологиям и их реализация на языке Python. Описана технология работы с библиотекой SymPy, приведены необходи­мые теоретические сведения и формулы для решения рассмотренных задач. Для оценки уровня усвоения студентами пройденного материала предложены вари­анты заданий для самостоятельной работы.
Предназначено для бакалавров направлений подготовки 09.03.02 «Информа­ционные системы и технологии», 22.03.01 «Материаловедение и технологии ма­териалов», 28.03.02 «Наноинженерия».
Подготовлено на кафедре информатики и прикладной математики.
2
О Г Л А В Л Е Н И Е
ВВЕДЕНИЕ ........................................................................................................................................ 5
1. SYMPY. НАЧАЛО РАБОТЫ ..................................................................................................... 7
1.1. Символьные вычисления в SymPy ................................................................... 8
1.2. Создание многочленов Чебышева, Лежандра и Эрмита ..................... 19
1.3. Вычисление производных ................................................................................ 21
1.4. Вычисление интегралов ..................................................................................... 25
1.5. Вычисление пределов ........................................................................................ 27
1.6. Работа с классом Matrix ..................................................................................... 28
1.7. Разложение в ряд Тейлора ............................................................................... 40
1.8. Вычисление суммы членов ряда .................................................................... 42
1.9. Решение алгебраических уравнений и неравенств ............................... 43
1.10. Решение систем линейных уравнений ..................................................... 47
1.11. Решение нелинейных уравнений и систем нелинейных
уравнений......................................................................................................................... 49
1.12. Решение дифференциальных уравнений и систем
дифференциальных уравнений .............................................................................. 53
1.13. Разложение функции в ряд Фурье .............................................................. 60
Задания для самостоятельной работы ............................................................... 62
2. ПОСТРОЕНИЕ ГРАФИКОВ В SYMPY ................................................................................ 72
2.1. Построения кривых на плоскости ................................................................. 72
2.1.1. Функции plot и textplot ......................................................................... 72
3
2.1.2. Построение параметрически заданных кривых
на плоскости .......................................................................................................... 83
2.2. Построение графиков трехмерных поверхностей ................................. 87
2.2.1. Функция plot3d ......................................................................................... 87
2.2.2. Построение параметрических 3D-кривых .................................... 89
2.3. Класс PlotGrid ......................................................................................................... 93
Задания для самостоятельной работы ............................................................... 94
ЛИТЕРАТУРА.................................................................................................................................. 98
4
В В Е Д Е Н И Е
Python является универсальным высокоуровневым скриптовым языком программирования, предназначенным для решения самых раз­ных задач. Он применяется во многих IT-сферах, таких как искусствен­ный интеллект, машинное обучение, анализ больших данных, разра­ботка приложений, веб, парсинг и т. д. Преимуществами языка явля­ются его простота, множество доступных средств разработки, востре­бованность на рынке. Популярность языка вполне объяснима его уни­версальностью и колоссальным числом библиотек, которое постоянно пополняется.
Одной из таких библиотек является библиотека SymPy. Это биб­лиотека с открытым исходным кодом, используемая для символьных вычислений. Она предоставляет возможности компьютерной алгебры и может выступать как отдельное приложение, так и в качестве библио­теки для других приложений. Библиотека является реальной альтерна­тивой таким математическим пакетам, как Mathematica или Maple, и об­ладает очень простым и легко расширяемым кодом. SymPy написана исключительно на языке Python и не требует никаких сторонних биб­лиотек. Сфера приложения SymPy – математический анализ, дискрет­ная математика, алгебра, геометрия, физика, комбинаторика, стати­стика. SymPy включает в себя функции базовой символьной арифме­тики, в ней реализована возможность работы с многочленами, матри­цами. Библиотека содержит модуль Plotting, предназначенный для по­строения двумерных и трехмерных графиков функций, в том числе за­данных параметрически. Распространяется библиотека по лицензии New BSD. Первыми эту библиотеку выпустили разработчики Ondřej Čertík и Aaron Meurer в 2007 году. Текущая актуальная версия библио­теки – 1.9.
Представленное пособие не претендует на уникальность. Содер­жащиеся в нем материалы собраны из различных источников, их цель – обучить студентов основам проведения символьных вычислений.
Пособие призвано помочь тем пользователям (студентам, маги­страм, аспирантам), которые сталкиваются в своей учебе или научной деятельности с необходимостью решать задачи алгебры, математиче­ского анализа и прикладной математики. При написании пособия ав­торы предполагали, что читатель уже имеет базовые знания в области математики, поэтому часть материала, с которого обычно начинается
5
изложение методов решения предложенных задач, опущена. Однако там, где в этом возникает необходимость, приводятся пояснения. Пред­полагается также, что читатель знаком с основами работы в Python. Для облегчения понимания материал излагается в виде демонстрационных примеров и задач.
Пособие включает в себя две главы. В первой главе рассмотрены операции с символьными переменными, показано, как аналитически, а иногда и численно в библиотеке SymPy решаются алгебраические и трансцендентные уравнения, вычисляются производные и интегралы. На примерах показано, как можно разложить функцию в ряды Тейлора и Фурье. Приведены решения задач по вычислению пределов и сумм. Отдельный раздел посвящен работе с матрицами. Показано, как в неко­торых случаях могут быть получены аналитические решения диффе­ренциальных уравнений и систем дифференциальных уравнений, включая решения задачи Коши и краевой задачи. Во второй главе рас­смотрены вопросы построения графиков функций, заданных как явно, так и неявно. Показано, как в библиотеке можно строить графики трех­мерных поверхностей.
Все примеры, приведенные в пособии, выполнены в блокноте
Google Colab (версия модуля SymPy – 1.7.1).
6
1 . S Y M P Y . Н А Ч А Л О Р А Б О Т Ы
Для работы с библиотекой символьных вычислений SymPy ее нужно установить на компьютер. Некоторые среды разработки Python, такие как, например, Google Colab, уже включают в себя различные
библиотеки, в том числе и Sympy. Их устанавливать не надо, а следует только импортировать. Если предполагается работа в среде, в которой нет библиотеки Sympy, ее необходимо установить. Для установки биб-
лиотеки (модуля) понадобится пакетный менеджер Python pip. Сначала проверяем, не установлен ли уже данный модуль. В командной строке необходимо набрать pip freeze. Получится список, аналогичный приве­денному на рис. 1.1.
Рис. 1.1. Список установленных библиотек Python
Из приведенного списка видно, что библиотека уже установлена и ее версия – 1.9. Если бы в списке отсутствовала библиотека SymPy, загрузить ее можно было командой
pip install sympy
7
8
По умолчанию установится последняя версия библиотеки. Узнать вер­сию, если вы работаете в среде Google Colab или в другой среде разра­ботки, можно, выполнив команды
import sympy; sympy.__version__
1 . 1 . С и м в о л ь н ы е в ы ч и с л е н и я в S y m P y
Символьные вычисления – это совершенно иной тип вычислений по сравнению с вычислениями, связанными с обработкой числовых массивов. Символьные вычисления также называют системами компь­ютерной алгебры (CAS), в которых математические объекты и выраже­ния обрабатываются и трансформируются аналитически. Символьные выражения состоят из чисел, констант, переменных, функций и знаков операций. Библиотека поддерживает работу с логическими функциями и выражениями.
Числа. Модуль поддерживает три типа чисел: Rational, Float и Integer. Результатом работы с числом типа Rational является обыкно­венная дробь, которая задается числителем и знаменателем:
from sympy import *
a=Rational(4,79)
a
4
79
Если выполнить эту операцию в среде IDLЕ, то результат будет выведен в виде дроби с наклонной чертой: 4/79. Результатом Rational(4)
(или Rational(4,)) будет 4. Rational(4.45) даст дробь
5010254585449677 1125899906842624
.
Можно получить значения числителя и знаменателя отдельно:
z=Rational(4.45)
z.p # 5010254585449677
z.q # 1125899906842624
Чтобы получить вместо полученной дроби более приемлемый результат, можно воспользоваться методом limit_denominator(),
9
указав в скобках максимальное значение знаменателя. Rational(4.45).limit_denominator(100) даст
89
.
20
С полученным значением можно работать как с обычным чис­лом, однако результат будет представлен в символьном виде:
from sympy import *
a=Rational(4,79)
log(a)+3*Rational(800,4)
4
log 600
79

+
 
Результатом print(log(a)+3*Rational(800,4)) будет log(4/79) + 600. Получить результат в виде десятичной дроби с заданным числом знача­щих цифр можно с помощью метода n(): (log(a)+3*Rational(800,4)).n(6).
Далее приведен листинг программы для работы с целыми
(Integer) числами и числами типа Float:
from sympy import Integer, Float
Integer(3.6) # Результат 3
Integer(-3.6) # Результат -3
Integer(7) # Результат 7
Integer("123" * 3) # Результат 123123123
Float(7) # Результат 7.0
Float("123" * 3) # Результат 123123123.0
Константы. В библиотеке SymPy имеются константы π, е, ∞ и классы-одиночки, содержащие по одной константе: Zero, One, Half, NaN, Infinity. Импортировав их из библиотеки, можно произвести над ними допустимые действия, например сложить константы π, е:
from sympy import pi,E
pi**2+E
Результатом будет символьное выражение:
2
e+
. После выполнения кода from sympy import *; S.Zero,S.One, S.Half, S.NaN, S.Infinity
получим кортеж со значением констант: (0, 1, 1/2, nan, oo).
Для обозначения символа «бесконечность» можно использовать
символы oo:
from sympy import oo;oo # 
10
Этот символ в основном используется в функциях limit() и integrate() при задании пределов интегрирования.
Переменные. Переменные SymPy являются объектами класса
Symbol. С помощью экземпляров этого класса можно создавать алгеб­раические выражения. Для работы с символьными переменными их нужно объявить явно. Сделать это можно разными способами. Самым простым будет использование функций symbols() или var(). Аргумен­том функций является строка, содержащая символ (или символы), ко­торый можно присвоить переменной. Значения переменных в скобках (если их несколько) разделяются пробелами или запятыми. Примеры:
from sympy import symbols; x, y = symbols('x y') from sympy import symbols; a, b, c, d = symbols('a:d')
Если в текущей сессии необходимо использовать символьную матема­тику постоянно, то можно импортировать общепринятые символьные имена из модуля sympy.abc. В модуле abc можно найти элементы ла­тинского и греческого алфавитов в виде символов. Так, результатом ра­боты программы
from sympy.abc import * from sympy import symbols,sin x,a,b=symbols('x, theta,phi')
t=sin(a+b)+x;t
будет х+sin(φ+θ).
Переменная t автоматически становится символьной:
type(t)
sympy.core.add.Add
Список имеющихся в модуле abc имен можно получить, выпол-
нив команды:
import sympy dir(sympy.abc) Символ может содержать несколько букв: from sympy import symbols; a= symbols('err');a**2 # err
2
Возможны такие варианты объявления переменных: from sympy.abc import *
x=symbols('x:3') x
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]