Быстрая навигация
Если при слове «алгебра» вы вспоминаете школьные ужасы, дайте SymPy шанс — эта библиотека для Python может изменить всё! Она справится с громоздкими алгебраическими и даже интегральными вычислениями быстрее, чем вы напишите карандашом на бумаге, а ещё и превратит процесс в удовольствие. Давайте посмотрим, что умеет SymPy.
Что такое SymPy?
SymPy — это библиотека для символических вычислений в Python, или, другими словами, система компьютерной алгебры (CAS). В отличие от обычных калькуляторов, работающих только с числами, SymPy позволяет оперировать формулами как с переменными и выражениями. Это бесплатная и полностью открытая альтернатива продуктам вроде Wolfram Alpha, Mathematica и Maple.
Отличие SymPy в том, что вам не нужно учить какой-то новый синтаксис — просто используете любимый Python и осваиваете новые функции самой библиотеки.
С помощью SymPy вы легко решите уравнения, упростите выражения, найдёте производные или интегралы — всё это без утомительной ручной рутины и вероятности ошибиться.
Если вдруг приходится что-то решать от руки — SymPy отлично поможет проверить себя или разобрать непонятные моменты. С помощью математических программ можно экспериментировать, мгновенно менять параметры и видеть, как это отражается на графиках и результатах.
Как установить SymPy
Установить SymPy проще простого — достаточно воспользоваться pip в командной строке:
Если предпочитаете Conda или Mamba, они тоже отлично подойдут.
Для установки через Mamba используйте эту команду, чтобы добавить SymPy в текущее окружение:
Объявление переменных
Перед началом работы нужно явно объявить переменные. Лучше всего использовать SymPy в интерактивных средах, например, в IPython или Jupyter Notebook.
Чтобы импортировать необходимые функции SymPy, выполните такую команду:
Рекомендую также включить красивое отображение формул — команда init_printing позволяет выводить результаты в привычном для учебников TeX-стиле.
Просто используйте функцию init_printing:
Теперь вы полностью готовы попробовать SymPy в деле.
Например, если просто ввести число 2:
SymPy покажет аккуратную «двойку». Главное отличие от обычного калькулятора — здесь всегда сохраняется точное, а не приближенное значение, и выражения можно оставить в символическом виде.
Для сравнения рассмотрим, как вычисляется квадратный корень с помощью NumPy:
NumPy возвращает приблизительный результат, ведь корень из 2 — бесконечная дробь.
А SymPy оставит результат символически как √2 — пока вы сами не попросите получить численное значение через функцию N или метод .evalf().
Если что, я просто помню, что N — это «numeric». В других пакетах, например, Mathematica, используется тот же принцип.
А если вычисляете корень из числа, в котором есть полный квадрат, SymPy автоматически вынесет его из-под знака корня:
SymPy замечает, что 56 = 4×14, и сразу пишет результат: 2√14.
Чтобы работать с алгебраическими выражениями, нужно объявить переменные как символы с помощью функции symbols. Например, знакомые всем x и y:
Внимательно: символы указываются через пробел, а не запятую.
Просто наберите их — и на экране появится x и y.
Простейшие алгебраические операции
Теперь можно делать любые операции с переменными. Например, если взять корень из x, SymPy сохраняет выражение в виде √x, как и с числом 2.
Поддерживаются сложение, умножение, деление. Только не забывайте: при записи в коде необходимо обязательно использовать символ * для умножения.
Скобки нужны для правильной группировки — так SymPy точно поймёт, в каком порядке считать.
SymPy умеет подставлять значения переменных через метод subs:
Возьмём выражение:
Чтобы заменить x на 2 — используем subs(x, 2):
На самом деле, можно подставить вместо переменной не только число, но и другой символ или выражение.
Раскрытие скобок и разложение на множители
SymPy не будет сразу перемножать многочлены — выражение (x 1) * (x 2) останется свернутым. Чтобы раскрыть скобки, используйте функцию expand:
Она аккуратно разнесёт скобки по всем правилам алгебры.
Точно так же любое большое выражение можно собрать обратно — для этого есть функция factor:
Решение уравнений
Раскрывать скобки — это здорово, но настоящая мощь SymPy проявляется в решении уравнений.
Проще всего начать с линейных уравнений, например, 5*x - 3 = 0.
Для этого используйте функцию solve — просто укажите нужное выражение и переменную для поиска:
Если уравнение выглядит как 2x 3 = 30 — можно сначала всё перенести в одну часть или воспользоваться функцией Eq, чтобы сохранить привычный вид:
Например: eq = Eq(2*x 3, 30).
Дальше снова solve — и у вас готов ответ в виде списка! Решения можно сохранить в массив, чтобы позже применить их в других функциях.
Сложные уравнения, включая квадратные, решаются также легко. Даже системы уравнений — не проблема:
Результат возвращается списком или матрицей — в следующей части покажу, как работать с ними через матрицы.
Построение графиков
С SymPy можно забыть о графических калькуляторах — с задачей отлично справится функция plot.
Попробуйте построить прямую y = mx b, где m — наклон, а b — смещение (пересечение с осью y).
По умолчанию график строится для x от −10 до 10, но можно задать свой диапазон: просто используйте кортеж (переменная, минимум, максимум), например x от 2 до 5.
Точно так же легко строятся графики для любых многочленов, в том числе тех, которые решали выше.
Производные, интегралы и линейная алгебра
SymPy не ограничивается школьной алгеброй — с ним легко работать с интегралами, производными и матрицами. Всё это — основа инженерных, экономических и технических дисциплин.
Если хочется разобраться ещё глубже, есть бесплатные материалы: та же Khan Academy или учебники OpenStax по университетской и линейной алгебре.
Для поиска производной используйте diff — указываете функцию и переменную:
Для интеграла — команда integrate:
Обратите внимание: тут результат без константы интегрирования.
Чтобы вычислить определённый интеграл на заданном интервале, просто указывайте границы через кортеж, как делали для графиков (например, x от 0 до 2).
Решать системы линейных уравнений через матрицы в SymPy действительно просто. Можно даже сгенерировать случайную квадратную матрицу размером 3×3 с помощью randMatrix и посмотреть на неё.
Вектор переменных — это матрица 3×1. Чтобы проверить, есть ли единственное решение, найдите определитель: если он не нулевой — всё в порядке.
Сами решения ищутся через метод solve для матричных объектов:
На практике, конечно, для численных расчётов быстрее работает NumPy, но для "бумажных" выкладок и символики SymPy — на высоте.
SymPy превращает математику на Python в настоящий волшебный инструмент: даже если вы никогда не считали себя математиком, с SymPy увидите решения задач с новой стороны!
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru