SymPy
| Тип | Система комп'ютерної алгебри |
|---|---|
| Розробники | Спільнота відкритого програмного забезпечення |
| Перший випуск | 2005 |
| Операційна система | Кросплатформна |
| Мова програмування | Python |
| Ліцензія | BSD License |
| Онлайн-документація | docs.sympy.org/latest/index.html |
| Репозиторій | github.com/sympy/sympy |
| Вебсайт | www.sympy.org |
SymPy — це бібліотека з відкритим кодом мовою Python для символьних обчислень. Вона є системою комп'ютерної алгебри (CAS), призначеною для аналітичної роботи з математичними виразами, рівняннями та формулами.
Бібліотека написана повністю на Python і має мінімальні залежності, що робить її простою для встановлення, використання та розширення. SymPy широко застосовується в математиці, фізиці, інженерії, освіті та наукових дослідженнях. Доступна як окремий додаток, як бібліотека для інших додатків або в режимі реального часу в Інтернеті як SymPy Live[1].
Історія
Проєкт SymPy було започатковано у 2005 році Ондржеєм Чертіком (Ondřej Čertík). Згодом до розробки активно долучився Аарон Мойрер (Aaron Meurer) та інші учасники спільноти відкритого програмного забезпечення.
Метою створення SymPy було розроблення повністю відкритої системи комп’ютерної алгебри, реалізованої виключно мовою Python, без використання зовнішніх CAS-ядр.
Можливості
Бібліотека SymPy поділена на ядро з багатьма необов’язковими модулями.
Наразі ядро SymPy має близько 260 000 рядків коду[2] (воно також включає комплексний набір самотестів: понад 100 000 рядків у 350 файлах станом на версію 0.7.5), а його можливості включають:[3]
Основні можливості
- Базова арифметика: *, /, +, -, **
- Спрощення
- Розкриття дужок
- Функції: тригонометричні, гіперболічні, показникові, корені, логарифми, абсолютне значення, сферичні гармоніки, факторіали та гамма-функції, дзета-функції, многочлени, гіпергеометричні функції, спеціальні функції тощо.
- Підстановка
- Довільна точність цілих чисел, раціональних чисел і чисел з рухомою комою
- Некомутативні символи
- Зіставляння із взірцем
Многочлени
- Базова арифметика: ділення, НСД тощо
- Факторизація
- Безквадратна факторизація
- Базис Ґребнера
- Розкладання на прості дроби
- Результант
Математичний аналіз
- Границі
- Диференціювання
- Інтегрування: реалізовано евристичний алгоритм Ріша—Нормана
- Ряд Тейлора (Ряд Лорана)
Розв’язування рівнянь
- Системи лінійних рівнянь
- Системи алгебраїчних рівнянь, що розв’язуються в радикалах
- Диференціальні рівняння
- Різницеві рівняння
Дискретна математика
- Біноміальні коефіцієнти
- Суми
- Добутки
- Теорія чисел: генерація простих чисел, перевірка на простоту, розклад на множники тощо
- Логічні вирази[4]
Матриці
- Базова арифметика
- Власне значення та їхні власні вектори, коли характеристичний многочлен розв’язний у радикалах
- Визначники
- Обернення
- Розв’язування
Геометрія
- Точки, прямі, промені, еліпси, кола, многокутники тощо
- Перетини
- Дотична
- Подібність
Побудова графіків
Зауваження: побудова графіків потребує зовнішнього модуля Matplotlib або Pyglet.
- Координатні моделі
- Побудова графіків геометричних об’єктів
- 2D та 3D
- Інтерактивний інтерфейс
- Кольори
- Анімації
Фізика
- Одиниці вимірювання
- Класична механіка
- Механіка суцільних середовищ[5]
- Квантова механіка
- Гауссова оптика
- Лінійне керування
Статистика
Комбінаторика
- Перестановка
- Комбінації
- Розбиття
- Підмножина
- Група перестановок: поліедральні, Рубіка, симетрична група тощо
- Послідовність Прюфера та код Грея
Виведення
- Форматоване виведення: ASCII/Unicode форматований вивід, LaTeX
- Генерація коду: C, Fortran, Python
Архітектура
SymPy має модульну архітектуру. Основні компоненти включають:
- core — базові символьні об’єкти;
- polys — робота з многочленами;
- calculus — диференціювання та інтегрування;
- matrices — лінійна алгебра;
- physics — фізичні модулі.
Для чисельних обчислень довільної точності використовується бібліотека mpmath.
Приклади використання
Нижче наведено приклад символьних обчислень у SymPy:
from sympy import symbols, diff, integrate
x = symbols('x')
expr = x**2 + 2*x + 1
# Похідна
d = diff(expr, x)
# Інтеграл
i = integrate(x**2, x)
Результати можуть бути подані у вигляді математичних формул, зокрема у форматі LaTeX.
Інтеграція
SymPy інтегрується з різними науковими інструментами, зокрема:
- Jupyter Notebook;
- SageMath;
- системами генерації коду (C, Fortran, JavaScript).
На відміну від багатьох комерційних CAS, SymPy є повністю відкритим програмним забезпеченням і написана мовою Python.
Див. також
Посилання
Примітки
- ↑ SymPy Live. live.sympy.org. Процитовано 25 серпня 2021.
- ↑ Sympy project statistics on Open HUB. Процитовано 13 жовтня 2014.
- ↑ Asif, Mushtaq; Olaussen, Kåre (2014). Automatic code generator for higher order integrators. Computer Physics Communications. 185 (5): 1461—1472. arXiv:1310.2111. Bibcode:2014CoPhC.185.1461M. doi:10.1016/j.cpc.2014.01.012. S2CID 42041635.
- ↑ Assumptions Module — SymPy 1.4 documentation. docs.sympy.org. Процитовано 5 липня 2019.
- ↑ Continuum Mechanics — SymPy 1.4 documentation. docs.sympy.org. Процитовано 5 липня 2019.
