SymPy — это мощная библиотека для символьных вычислений на языке Python. Она позволяет работать с математическими выражениями в символьном виде, решать уравнения, дифференцировать и интегрировать функции, работать с матрицами, решать дифференциальные уравнения и многое другое. В этой статье мы рассмотрим основные возможности SymPy и покажем, как её использовать для решения математических задач.
Установка SymPy
Для начала работы с SymPy необходимо установить библиотеку. Это можно сделать с помощью pip:
pip install sympy
После установки можно импортировать библиотеку в Python:
import sympy as sp
Основные понятия
Символьные переменные
В SymPy все вычисления происходят с символьными переменными. Для создания символьных переменных используется функция symbols
:
from sympy import symbols
x, y = symbols('x y')
Теперь
x
и
y
— это символьные переменные, с которыми можно работать как с математическими объектами.
Символьные выражения
Символьные выражения создаются с использованием символьных переменных и математических операций:
expr = x**2 + 2*x*y + y**2
print(expr) # x**2 + 2*x*y + y**2
В SymPy можно считывать математическое выражение из строки и преобразовывать его в символьное выражение с помощью функции sympify
. Это позволяет динамически задавать выражения для упрощения или других операций.
Как считывать выражение из строки?
1. Использование sympify
Функция sympify
преобразует строку в символьное выражение SymPy. Она автоматически определяет переменные и операции.
from sympy import sympify, simplify
# Выражение в виде строки
expr_str = "sin(x)**2 + cos(x)**2 + x**2 - 1"
# Преобразуем строку в символьное выражение
expr = sympify(expr_str)
2. Использование parse_expr
Для более гибкого преобразования строк в выражения можно использовать функцию parse_expr
из модуля sympy.parsing.sympy_parser
. Она позволяет, например, использовать оператор ^
вместо **
для возведения в степень.
from sympy.parsing.sympy_parser import parse_expr
# Выражение в виде строки
expr_str = "x^2 + 2*x*y + y^2" # Используем ^ вместо **
# Преобразуем строку в символьное выражение
expr = parse_expr(expr_str, transformations='all')
Основные операции
Упрощение выражений
Функция simplify
позволяет упростить выражение:
from sympy import simplify
expr = (x**2 + 2*x*y + y**2) / (x + y)
simplified_expr = simplify(expr)
print(simplified_expr) # x + y
Раскрытие скобок
Функция expand
раскрывает скобки в выражении:
from sympy import expand
expr = (x + y)**3
expanded_expr = expand(expr)
print(expanded_expr) # x**3 + 3*x**2*y + 3*x*y**2 + y**3
Факторизация
Функция factor
раскладывает выражение на множители:
from sympy import factor
expr = x**2 - y**2
factored_expr = factor(expr)
print(factored_expr) # (x - y)*(x + y)
Подстановка значений
Функция subs
позволяет подставить значения в выражение:
expr = x**2 + 2*x*y + y**2
substituted_expr = expr.subs({x: 1, y: 2})
print(substituted_expr) # 9
Численное вычисление выражений
Функция evalf позволяет подставить значения в выражение:
from sympy import sqrt, pi
# Символьное выражение
expr = sqrt(2) * pi
# Численное значение
numerical_value = expr.evalf()
print("Численное значение:", numerical_value)
Если выражение содержит переменные, можно использовать метод
subs
для подстановки значений, а затем применить
evalf
.
from sympy import symbols, exp
# Определяем переменные
x, y = symbols('x y')
# Символьное выражение
expr = exp(x) + y**2
# Подставляем значения и вычисляем численное значение
numerical_value = expr.subs({x: 1, y: 2}).evalf()
print("Численное значение выражения:", numerical_value)
Решение алгебраических уравнений
Функция solve
решает алгебраические уравнения:
from sympy import solve
solution = solve(x**2 - 4, x)
print(solution) # [-2, 2]
Решение систем уравнений
SymPy также может решать системы уравнений:
from sympy import solve
system = [x + y - 5, x - y - 1]
solution = solve(system, (x, y))
print(solution) # {x: 3, y: 2}