Статья Автор: Деникина Н.В., Деникин А.В.

SymPy

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}
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать