Символьные вычисления в Python. Основы работы с библиотекой SymPy :
Покупка
Новинка
Тематика:
Прикладная математика
Год издания: 2023
Кол-во страниц: 100
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7882-3321-5
Артикул: 844134.01.99
Рассмотрены задачи по математическому анализу, вычислительной и прикладной математике, информационным технологиям и их реализация на языке Python. Описана технология работы с библиотекой SymPy, приведены необходимые теоретические сведения и формулы для решения рассмотренных задач. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы.
Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 22.03.01 «Материаловедение и технологии материалов», 28.03.02 «Наноинженерия».
Подготовлено на кафедре информатики и прикладной математики.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.02: Информационные системы и технологии
- 22.03.01: Материаловедение и технологии материалов
- 28.03.02: Наноинженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации Казанский национальный исследовательский технологический университет А. Н. Титов, Р. Ф. Тазиева СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ В PYTHON ОСНОВЫ РАБОТЫ С БИБЛИОТЕКОЙ SYMPY Учебно-методическое пособие Казань Издательство КНИТУ 2023
УДК 004.42(075) ББК 32.97я7 Т45 Печатается по решению редакционно-издательского совета Казанского национального исследовательского технологического университета Рецензенты: д-р пед. наук, доц. Ю. В. Торкунова канд. экон. наук, доц. О. С. Семичева Т45 Титов А. Н. Символьные вычисления в Python. Основы работы с библиотекой SymPy : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева; Минобрнауки России, Казан. нац. исслед. технол. ун-т. – Казань : Изд-во КНИТУ, 2023. – 100 с. ISBN 978-5-7882-3321-5 Рассмотрены задачи по математическому анализу, вычислительной и прикладной математике, информационным технологиям и их реализация на языке Python. Описана технология работы с библиотекой SymPy, приведены необходимые теоретические сведения и формулы для решения рассмотренных задач. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 22.03.01 «Материаловедение и технологии материалов», 28.03.02 «Наноинженерия». Подготовлено на кафедре информатики и прикладной математики. УДК 004.42(075) ББК 32.97я7 ISBN 978-5-7882-3321-5 © Титов А. Н., Тазиева Р. Ф., 2023 © Казанский национальный исследовательский технологический университет, 2023 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
. 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
По умолчанию установится последняя версия библиотеки. Узнать версию, если вы работаете в среде 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(), 8
указав в скобках максимальное значение знаменателя. 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 # 9
Этот символ в основном используется в функциях 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 # err2 Возможны такие варианты объявления переменных: from sympy.abc import * x=symbols('x:3') x 10