воскресенье, 10 июня 2018 г.

Python. Символные вычисления

Если ввести в поисковике запрос "символьные вычисления в python", большинство результатов будут посвящены модулю SymPy. Это действительно мощный инструмент, описание работы с которым можно найти, например, здесь. Я же ограничусь кратким рассмотрением некоторых из возможностей данного модуля. 


Прежде всего, для символьных преобразований необходимо объявить объекты, которые будут считаться символами. Сделать это можно с помощью конструктора Symbol() или функции symbols(). Последняя позволяет ввести несколько переменных за раз. Арифметические выражения, содержащие данные переменные, будут рассматриваться как символьные, и с ними можно выполнять различные операции, например, раскрытие скобок или факторизацию. Основные математические функции (sin(), exp(), log() и т.п.) также включены в состав модуля и доступны для использования в вычислениях.


В функции expand() можно указать, операцию какого рода мы от неё ожидаем. В частности, она может быть использована для раскрытия выражений с тригонометрическими функциями или комплексными числами. Заменить переменную или подставить вместо неё число позволяет метод subs().


Во время обработки выражений программа сохраняет их в символьном виде. Если нам необходимо численное значение, его можно получить с помощью метода evalf(). Эта же функция позволяет вычислить выражение с произвольной точностью, желаемое число знаков можно указать в скобках. 


Для упрощения выражения пригодится функция simplify().


С помощью solve() можно решать как одиночные уравнения (в виде выражение=0), так и их системы.


В модуле SymPy предусмотрена возможность работать с различными типами математических объектов, в том числе, с матрицами.


Программа умеет выполнять и более нетривиальные преобразования, такие как разложения в ряд, вычисление пределов, дифференцирование, интегрирование и многое другое. Примеры приведены ниже. Обратите внимание, что для обозначения положительной бесконечности используется специальная переменная oo, а E - это число Эйлера.




Комментариев нет:

Отправить комментарий