Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

SymPy в Python: 6 способов, как сложная математика превратится в игру для детей

Если при слове «алгебра» вы вспоминаете школьные ужасы, дайте SymPy шанс — эта библиотека для Python может изменить всё! Она справится с громоздкими алгебраическими и даже интегральными вычислениями быстрее, чем вы напишите карандашом на бумаге, а ещё и превратит процесс в удовольствие. Давайте посмотрим, что умеет SymPy. SymPy — это библиотека для символических вычислений в Python, или, другими словами, система компьютерной алгебры (CAS). В отличие от обычных калькуляторов, работающих только с числами, SymPy позволяет оперировать формулами как с переменными и выражениями. Это бесплатная и полностью открытая альтернатива продуктам вроде Wolfram Alpha, Mathematica и Maple. Отличие SymPy в том, что вам не нужно учить какой-то новый синтаксис — просто используете любимый Python и осваиваете новые функции самой библиотеки. С помощью SymPy вы легко решите уравнения, упростите выражения, найдёте производные или интегралы — всё это без утомительной ручной рутины и вероятности ошибиться. Если
Оглавление

Быстрая навигация

Если при слове «алгебра» вы вспоминаете школьные ужасы, дайте SymPy шанс — эта библиотека для Python может изменить всё! Она справится с громоздкими алгебраическими и даже интегральными вычислениями быстрее, чем вы напишите карандашом на бумаге, а ещё и превратит процесс в удовольствие. Давайте посмотрим, что умеет SymPy.

Что такое SymPy?

SymPy — это библиотека для символических вычислений в Python, или, другими словами, система компьютерной алгебры (CAS). В отличие от обычных калькуляторов, работающих только с числами, SymPy позволяет оперировать формулами как с переменными и выражениями. Это бесплатная и полностью открытая альтернатива продуктам вроде Wolfram Alpha, Mathematica и Maple.

Отличие SymPy в том, что вам не нужно учить какой-то новый синтаксис — просто используете любимый Python и осваиваете новые функции самой библиотеки.

С помощью SymPy вы легко решите уравнения, упростите выражения, найдёте производные или интегралы — всё это без утомительной ручной рутины и вероятности ошибиться.

Если вдруг приходится что-то решать от руки — SymPy отлично поможет проверить себя или разобрать непонятные моменты. С помощью математических программ можно экспериментировать, мгновенно менять параметры и видеть, как это отражается на графиках и результатах.

Как установить SymPy

Установить SymPy проще простого — достаточно воспользоваться pip в командной строке:

Если предпочитаете Conda или Mamba, они тоже отлично подойдут.

Для установки через Mamba используйте эту команду, чтобы добавить SymPy в текущее окружение:

Объявление переменных

-2

Перед началом работы нужно явно объявить переменные. Лучше всего использовать SymPy в интерактивных средах, например, в IPython или Jupyter Notebook.

Чтобы импортировать необходимые функции SymPy, выполните такую команду:

Рекомендую также включить красивое отображение формул — команда init_printing позволяет выводить результаты в привычном для учебников TeX-стиле.

Просто используйте функцию init_printing:

Теперь вы полностью готовы попробовать SymPy в деле.

Например, если просто ввести число 2:

SymPy покажет аккуратную «двойку». Главное отличие от обычного калькулятора — здесь всегда сохраняется точное, а не приближенное значение, и выражения можно оставить в символическом виде.

Для сравнения рассмотрим, как вычисляется квадратный корень с помощью NumPy:

NumPy возвращает приблизительный результат, ведь корень из 2 — бесконечная дробь.

А SymPy оставит результат символически как √2 — пока вы сами не попросите получить численное значение через функцию N или метод .evalf().

Если что, я просто помню, что N — это «numeric». В других пакетах, например, Mathematica, используется тот же принцип.

А если вычисляете корень из числа, в котором есть полный квадрат, SymPy автоматически вынесет его из-под знака корня:

-3

SymPy замечает, что 56 = 4×14, и сразу пишет результат: 2√14.

Чтобы работать с алгебраическими выражениями, нужно объявить переменные как символы с помощью функции symbols. Например, знакомые всем x и y:

Внимательно: символы указываются через пробел, а не запятую.

Просто наберите их — и на экране появится x и y.

Простейшие алгебраические операции

-4

Теперь можно делать любые операции с переменными. Например, если взять корень из x, SymPy сохраняет выражение в виде √x, как и с числом 2.

Поддерживаются сложение, умножение, деление. Только не забывайте: при записи в коде необходимо обязательно использовать символ * для умножения.

Скобки нужны для правильной группировки — так SymPy точно поймёт, в каком порядке считать.

SymPy умеет подставлять значения переменных через метод subs:

Возьмём выражение:

Чтобы заменить x на 2 — используем subs(x, 2):

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

Раскрытие скобок и разложение на множители

-5

SymPy не будет сразу перемножать многочлены — выражение (x 1) * (x 2) останется свернутым. Чтобы раскрыть скобки, используйте функцию expand:

Она аккуратно разнесёт скобки по всем правилам алгебры.

Точно так же любое большое выражение можно собрать обратно — для этого есть функция factor:

Решение уравнений

-6

Раскрывать скобки — это здорово, но настоящая мощь SymPy проявляется в решении уравнений.

Проще всего начать с линейных уравнений, например, 5*x - 3 = 0.

Для этого используйте функцию solve — просто укажите нужное выражение и переменную для поиска:

Если уравнение выглядит как 2x 3 = 30 — можно сначала всё перенести в одну часть или воспользоваться функцией Eq, чтобы сохранить привычный вид:

Например: eq = Eq(2*x 3, 30).

Дальше снова solve — и у вас готов ответ в виде списка! Решения можно сохранить в массив, чтобы позже применить их в других функциях.

Сложные уравнения, включая квадратные, решаются также легко. Даже системы уравнений — не проблема:

Результат возвращается списком или матрицей — в следующей части покажу, как работать с ними через матрицы.

Построение графиков

-7

С SymPy можно забыть о графических калькуляторах — с задачей отлично справится функция plot.

Попробуйте построить прямую y = mx b, где m — наклон, а b — смещение (пересечение с осью y).

По умолчанию график строится для x от −10 до 10, но можно задать свой диапазон: просто используйте кортеж (переменная, минимум, максимум), например x от 2 до 5.

Точно так же легко строятся графики для любых многочленов, в том числе тех, которые решали выше.

Производные, интегралы и линейная алгебра

-8

SymPy не ограничивается школьной алгеброй — с ним легко работать с интегралами, производными и матрицами. Всё это — основа инженерных, экономических и технических дисциплин.

Если хочется разобраться ещё глубже, есть бесплатные материалы: та же Khan Academy или учебники OpenStax по университетской и линейной алгебре.

Для поиска производной используйте diff — указываете функцию и переменную:

Для интеграла — команда integrate:

Обратите внимание: тут результат без константы интегрирования.

Чтобы вычислить определённый интеграл на заданном интервале, просто указывайте границы через кортеж, как делали для графиков (например, x от 0 до 2).

Решать системы линейных уравнений через матрицы в SymPy действительно просто. Можно даже сгенерировать случайную квадратную матрицу размером 3×3 с помощью randMatrix и посмотреть на неё.

Вектор переменных — это матрица 3×1. Чтобы проверить, есть ли единственное решение, найдите определитель: если он не нулевой — всё в порядке.

Сами решения ищутся через метод solve для матричных объектов:

На практике, конечно, для численных расчётов быстрее работает NumPy, но для "бумажных" выкладок и символики SymPy — на высоте.

SymPy превращает математику на Python в настоящий волшебный инструмент: даже если вы никогда не считали себя математиком, с SymPy увидите решения задач с новой стороны!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: