Всіх вітаю! У даній статті ми обговоримо, як створювати графіки за допомогою бібліотеки символьних обчислень sympy.
Встановлення необхідних бібліотек
Встановлення sympy
Windows:
pip install sympyMacOS:
pip3 install sympyLinux:
pip install sympyВстановлення matplotlib
Для створення двовимірних графіків потрібно також завантажити бібліотеку matplotlib.
Windows:
pip install matplotlibMacOS:
pip3 install matplotlibLinux:
pip install matplotlibУ чому полягає головна особливість створення графіків, використовуючи sympy?
Головна особливість створення графіків саме за допомогою sympy полягає у тому, що ми створюємо сам графік безпосередньо за математичними сутностями, тобто за функціями та рівняннями. По суті, алгоритм створення графіків у даному випадку складається лише зі створення математичної частини та одразу ж його графічного представлення.
У процесі створення графіка ми жодного разу не вказуємо, скільки точок треба згенерувати для утворення послідовності x значень. Ми лише зазначаємо інтервал для x, але кількість точок, яку потрібно згенерувати, визначає тільки сам sympy.
Якщо порівнювати процес створення графіків, використовуючи matplotlib, то там потрібно було вказати послідовність для x, вже потім записати математичну частину.
Створення графіків
Одновимірні графіки
Пропоную реалізувати графік синуса як приклад. Тому імпортуємо з бібліотеки sympy функції sin, symbols, plot:
from sympy import sin, symbols, plotТепер використовуємо функцію symbols для створення символьної величини x:
x = symbols("x")Далі створюємо фунцію синуса від нашої символьної величини x:
func = sin(x)Створюємо графік, вказуючи у якості параметрів функцію (func) та межі x ((x, -5, 5)):
graph = plot(func, (x, -5, 5))Повний код:
from sympy import sin, symbols, plot
x = symbols("x")
func = sin(x)
graph = plot(func, (x, -5, 5))На прикладі коду ми бачимо, що
Результат:

Двовимірні графіки
На цьому етапі створимо графік параболи, гілки якої спрямовані вгору, за канонічним рівнянням x² = 2py. Варто зауважити, що для створення двовимірних графіків, на кшталт цього, потрібно використовувати функцію plot_implicit(), а не plot().
Спершу імпортуємо бібліотеку, а точніше функції symbols та plot:
from sympy import Eq, symbols, plot_implicitТепер застосуємо функцію symbols, щоб створити символьні величини x, p, y:
x, p, y = symbols("x p y")Тепер створюємо рівняння, графік якого хочемо отримати, тобто Eq(x**2, 2 * p * y) та вказуємо значення для p за допомогою subs({p: 4}).
Ось рядок, який у нас виходить:
equation = Eq(x**2, 2 * p * y).subs({p: 4})Тепер створюємо графік. Для цього потрібно передати такі параметри як рівняння (equation), межі x ((x, -5, 5)) та межі y ((y, -5, 5)).
Останній рядок коду:
graph = plot_implicit(equation, (x, -5, 5), (y, -5, 5))Повний код:
from sympy import Eq, symbols, plot_implicit
x, p, y = symbols("x p y")
equation = Eq(x**2, 2 * p * y).subs({p: 4})
graph = plot_implicit(equation, (x, -5, 5), (y, -5, 5))Результат:

Висновок
У рамках даної статті ми навчилися створювати одновимірні та двовимірні графіки за символьним поданням математичних формул. Також ми дещо розглянули відмінність між побудовою графіків на sympy та matplotlib.
Дякую за увагу!