СимПи
![]() | |
Разработчик(и) | Команда разработчиков SymPy |
---|---|
Первоначальный выпуск | 2007 г |
Стабильная версия | 1.12 [1]
/ 10 мая 2023 г |
Репозиторий | |
Написано в | Питон |
Операционная система | Кросс-платформенный |
Тип | Система компьютерной алгебры |
Лицензия | Новая лицензия BSD |
Веб-сайт | www ![]() |
SymPy — это с открытым исходным кодом Python библиотека для символьных вычислений . Он предоставляет возможности компьютерной алгебры либо как отдельное приложение, либо как библиотека для других приложений, либо в Интернете как SymPy Live. [2] или SymPy Гамма. [3] SymPy легко установить и проверить, поскольку он полностью написан на Python с небольшим количеством зависимостей. [4] [5] [6] Эта простота доступа в сочетании с простой и расширяемой базой кода на хорошо известном языке делает SymPy системой компьютерной алгебры с относительно низким барьером для входа.
SymPy включает в себя широкий спектр функций: от базовой символьной арифметики до исчисления , алгебры , дискретной математики и квантовой физики . Он способен форматировать результаты вычислений в виде LaTeX . кода [4] [5]
SymPy является бесплатным программным обеспечением и распространяется по лицензии New BSD . Ведущими разработчиками являются Ондржей Чертик и Аарон Мёрер. Ее основал Ондржей Чертик в 2005 году. [7]
Особенности [ править ]
Библиотека SymPy разделена на ядро со множеством дополнительных модулей.
В настоящее время ядро SymPy содержит около 260 000 строк кода. [8] (он также включает в себя полный набор средств самотестирования: более 100 000 строк в 350 файлах по состоянию на версию 0.7.5), а его возможности включают в себя: [4] [5] [9] [10] [11]
Основные возможности [ править ]
- Основная арифметика: *, /, +, -, **
- Упрощение
- Расширение
- Функции : тригонометрические , гиперболические , экспоненциальные , корни , логарифмы , абсолютное значение , сферические гармоники , факториалы и гамма-функции , дзета-функции , полиномы , гипергеометрические , специальные функции и т.д.
- Замена
- произвольной точности Целые числа , рациональные числа и числа с плавающей запятой
- Некоммутативные символы
- Сопоставление с образцом
Полиномы [ править ]
- Базовая арифметика: деление , НОД и т. д.
- Факторизация
- Бесквадратная факторизация
- Базы Грёбнера
- Частичное дробное разложение
- Результаты
Исчисление [ править ]
- Пределы
- Дифференциация
- Интеграция : реализована Риша – Нормана. эвристика
- Ряд Тейлора ( ряд Лорана )
Решение уравнений [ править ]
- Системы линейных уравнений
- Системы алгебраических уравнений , разрешимые в радикалах
- Дифференциальные уравнения
- Разностные уравнения
Дискретная математика [ править ]
- Биномиальные коэффициенты
- Суммирование
- Продукты
- Теория чисел : генерация простых чисел , проверка на простоту, факторизация целых чисел и т. д.
- Логические выражения [12]
Матрицы [ править ]
- Основная арифметика
- Собственные значения и их собственные векторы , когда характеристический многочлен разрешим в радикалах
- Детерминанты
- Инверсия
- Решение
Геометрия [ править ]
- Точки , линии , лучи , эллипсы , круги , многоугольники и т.д.
- Перекрестки
- касание
- Сходство
График [ править ]
Обратите внимание: для построения графика требуется внешний модуль Matplotlib или Pyglet .
- Координатные модели
- Построение геометрических объектов
- 2D и 3D
- Интерактивный интерфейс
- Цвета
- Анимации
Физика [ править ]
- Единицы
- Классическая механика
- Механика сплошных сред [13]
- Квантовая механика
- Гауссова оптика
- Линейное управление
Статистика [ править ]
Комбинаторика [ править ]
- Перестановки
- Комбинации
- Перегородки
- Подмножества
- Группа перестановок : Многогранник , Рубик, Симметричный и т.д.
- Последовательность Прюфера и коды Грея
Печать [ править ]
- Красивая печать : ASCII / Unicode , LaTeX. красивая печать
- Генерация кода : C, Fortran , Python
Связанные проекты [ править ]
- SageMath : альтернатива Mathematica , Maple , MATLAB и Magma с открытым исходным кодом (SymPy включен в Sage).
- SymEngine: переписывание ядра SymPy на C++ с целью повышения его производительности. В настоящее время работа ведется [ на момент? ] сделать SymEngine базовым движком Sage. [14]
- mpmath: библиотека Python для произвольной точности. арифметики с плавающей запятой [15]
- SympyCore: еще одна система компьютерной алгебры Python. [16]
- SfePy: Программное обеспечение для решения систем связанных уравнений в частных производных (ЧДУ) методом конечных элементов в 1D, 2D и 3D. [17]
- GAlgebra: модуль геометрической алгебры (ранее Sympy.galgebra). [18]
- Quameon: квантовый Монте-Карло в Python. [19]
- Lcapy: экспериментальный пакет Python для обучения анализу линейных цепей . [20]
- Проект LaTeX Expression: простая верстка LaTeX алгебраических выражений в символьной форме с автоматической заменой и вычислением результатов. [21]
- Символьное статистическое моделирование: добавление статистических операций к сложным физическим моделям. [22]
- Diofant: a fork of SymPy, started by Sergey B Kirpichev [23]
Зависимости [ править ]
Начиная с версии 1.0, SymPy имеет пакет mpmath в качестве зависимости.
Существует несколько дополнительных зависимостей, которые могут расширить его возможности:
- gmpy : если gmpy установлен, полиномиальный модуль SymPy автоматически будет использовать его для более быстрых типов грунта. Это может обеспечить увеличение производительности некоторых операций в несколько раз.
- matplotlib : если установлен matplotlib, SymPy может использовать его для построения графиков.
- Pyglet : Альтернативный пакет построения графиков.
Примеры использования [ править ]
Красивая полиграфия [ править ]
Sympy позволяет форматировать выходные данные в более привлекательный формат с помощью pprint
функция. Альтернативно, init_printing()
метод позволит красивую печать, поэтому pprint
не надо звонить. Pretty-printing будет использовать символы Юникода, если они доступны в текущей среде, в противном случае будет использоваться символы ASCII .
>>> from sympy import pprint, init_printing, Symbol, sin, cos, exp, sqrt, series, Integral, Function
>>>
>>> x = Symbol("x")
>>> y = Symbol("y")
>>> f = Function("f")
>>> # pprint will default to unicode if available
>>> pprint(x ** exp(x))
⎛ x⎞
⎝ℯ ⎠
x
>>> # An output without unicode
>>> pprint(Integral(f(x), x), use_unicode=False)
/
|
| f(x) dx
|
/
>>> # Compare with same expression but this time unicode is enabled
>>> pprint(Integral(f(x), x), use_unicode=True)
⌠
⎮ f(x) dx
⌡
>>> # Alternatively, you can call init_printing() once and pretty-print without the pprint function.
>>> init_printing()
>>> sqrt(sqrt(exp(x)))
____
4 ╱ x
╲╱ ℯ
>>> (1/cos(x)).series(x, 0, 10)
2 4 6 8
x 5⋅x 61⋅x 277⋅x ⎛ 10⎞
1 + ── + ──── + ───── + ────── + O⎝x ⎠
2 24 720 8064
Расширение [ править ]
>>> from sympy import init_printing, Symbol, expand
>>> init_printing()
>>>
>>> a = Symbol("a")
>>> b = Symbol("b")
>>> e = (a + b) ** 3
>>> e
(a + b)³
>>> e.expand()
a³ + 3⋅a²⋅b + 3⋅a⋅b² + b³
Пример произвольной точности [ править ]
>>> from sympy import Rational, pprint
>>> e = 2**50 / Rational(10) ** 50
>>> pprint(e)
1/88817841970012523233890533447265625
Дифференциация [ править ]
>>> from sympy import init_printing, symbols, ln, diff
>>> init_printing()
>>> x, y = symbols("x y")
>>> f = x**2 / y + 2 * x - ln(y)
>>> diff(f, x)
2⋅x
─── + 2
y
>>> diff(f, y)
2
x 1
- ── - ─
2 y
y
>>> diff(diff(f, x), y)
-2⋅x
────
2
y
График [ править ]

>>> from sympy import symbols, cos
>>> from sympy.plotting import plot3d
>>> x, y = symbols("x y")
>>> plot3d(cos(x * 3) * cos(y * 5) - y, (x, -1, 1), (y, -1, 1))
<sympy.plotting.plot.Plot object at 0x3b6d0d0>
Ограничения [ править ]
>>> from sympy import init_printing, Symbol, limit, sqrt, oo
>>> init_printing()
>>>
>>> x = Symbol("x")
>>> limit(sqrt(x**2 - 5 * x + 6) - x, x, oo)
-5/2
>>> limit(x * (sqrt(x**2 + 1) - x), x, oo)
1/2
>>> limit(1 / x**2, x, 0)
∞
>>> limit(((x - 1) / (x + 1)) ** x, x, oo)
-2
ℯ
Дифференциальные уравнения [ править ]
>>> from sympy import init_printing, Symbol, Function, Eq, dsolve, sin, diff
>>> init_printing()
>>>
>>> x = Symbol("x")
>>> f = Function("f")
>>>
>>> eq = Eq(f(x).diff(x), f(x))
>>> eq
d
──(f(x)) = f(x)
dx
>>>
>>> dsolve(eq, f(x))
x
f(x) = C₁⋅ℯ
>>>
>>> eq = Eq(x**2 * f(x).diff(x), -3 * x * f(x) + sin(x) / x)
>>> eq
2 d sin(x)
x ⋅──(f(x)) = -3⋅x⋅f(x) + ──────
dx x
>>>
>>> dsolve(eq, f(x))
C₁ - cos(x)
f(x) = ───────────
x³
Интеграция [ править ]
>>> from sympy import init_printing, integrate, Symbol, exp, cos, erf
>>> init_printing()
>>> x = Symbol("x")
>>> # Polynomial Function
>>> f = x**2 + x + 1
>>> f
2
x + x + 1
>>> integrate(f, x)
3 2
x x
── + ── + x
3 2
>>> # Rational Function
>>> f = x / (x**2 + 2 * x + 1)
>>> f
x
────────────
2
x + 2⋅x + 1
>>> integrate(f, x)
1
log(x + 1) + ─────
x + 1
>>> # Exponential-polynomial functions
>>> f = x**2 * exp(x) * cos(x)
>>> f
2 x
x ⋅ℯ ⋅cos(x)
>>> integrate(f, x)
2 x 2 x x x
x ⋅ℯ ⋅sin(x) x ⋅ℯ ⋅cos(x) x ℯ ⋅sin(x) ℯ ⋅cos(x)
──────────── + ──────────── - x⋅ℯ ⋅sin(x) + ───────── - ─────────
2 2 2 2
>>> # A non-elementary integral
>>> f = exp(-(x**2)) * erf(x)
>>> f
2
-x
ℯ ⋅erf(x)
>>> integrate(f, x)
___ 2
╲╱ π ⋅erf (x)
─────────────
4
Серия [ править ]
>>> from sympy import Symbol, cos, sin, pprint
>>> x = Symbol("x")
>>> e = 1 / cos(x)
>>> pprint(e)
1
──────
cos(x)
>>> pprint(e.series(x, 0, 10))
2 4 6 8
x 5⋅x 61⋅x 277⋅x ⎛ 10⎞
1 + ── + ──── + ───── + ────── + O⎝x ⎠
2 24 720 8064
>>> e = 1/sin(x)
>>> pprint(e)
1
──────
sin(x)
>>> pprint(e.series(x, 0, 4))
3
1 x 7⋅x ⎛ 4⎞
─ + ─ + ──── + O⎝x ⎠
x 6 360
Логическое рассуждение [ править ]
Пример 1 [ править ]
>>> from sympy import *
>>> x = Symbol("x")
>>> y = Symbol("y")
>>> facts = Q.positive(x), Q.positive(y)
>>> with assuming(*facts):
... print(ask(Q.positive(2 * x + y)))
True
Пример 2 [ править ]
>>> from sympy import *
>>> x = Symbol("x")
>>> # Assumption about x
>>> fact = [Q.prime(x)]
>>> with assuming(*fact):
... print(ask(Q.rational(1 / x)))
True
См. также [ править ]
Ссылки [ править ]
- ^ "Релизы - симпы/симпы" . Проверено 6 сентября 2022 г. - через GitHub .
- ^ «СимПи Лайв» . live.sympy.org . Проверено 25 августа 2021 г.
- ^ «СимПи Гамма» . www.sympygamma.com . Проверено 25 августа 2021 г.
- ↑ Перейти обратно: Перейти обратно: а б с «Домашняя страница SymPy» . Проверено 13 октября 2014 г.
- ↑ Перейти обратно: Перейти обратно: а б с Джойнер, Дэвид; Чертик, Ондржей; Мёрер, Аарон; Грейнджер, Брайан Э. (2012). «Системы компьютерной алгебры с открытым исходным кодом: SymPy». ACM-коммуникации в компьютерной алгебре . 45 (3/4): 225–234. дои : 10.1145/2110170.2110185 . S2CID 44862851 .
- ^ Мёрер, Аарон; Смит, Кристофер П.; Папроцкий, Матеуш; Чертик, Ондржей; Кирпичев Сергей Борисович; Роклин, Мэтью; Кумар, АМиТ; Иванов, Сергей; Мур, Джейсон К. (2 января 2017 г.). «SymPy: символьные вычисления в Python» (PDF) . PeerJ Информатика . 3 : е103. doi : 10.7717/peerj-cs.103 . ISSN 2376-5992 .
- ^ «SymPy против Mathematica · Sympy/Sympy Wiki» . Гитхаб .
- ^ «Статистика проекта Sympy на Open HUB» . Проверено 13 октября 2014 г.
- ^ Геде, Гилберт; Петерсон, Дейл Л.; Нанджангуд, Ангад; Мур, Джейсон К.; Хаббард, Монт (2013). Динамика многотельных тел с ограничениями с помощью Python: от генерации символьных уравнений до публикации . ASME 2013 Международные технические конференции по проектированию и инженерному делу и Конференция по компьютерам и информации в инженерии. Американское общество инженеров-механиков. стр. V07BT10A051. дои : 10.1115/DETC2013-13470 . ISBN 978-0-7918-5597-3 .
- ^ Роклин, Мэтью; Террел, Энди (2012). «Символическая статистика с SymPy». Вычисления в науке и технике . 14 (3): 88–93. Бибкод : 2012CSE....14c..88R . дои : 10.1109/MCSE.2012.56 . S2CID 18307629 .
- ^ Асиф, Муштак; Олауссен, Коре (2014). «Автоматический генератор кода для интеграторов высшего порядка». Компьютерная физика. Коммуникации . 185 (5): 1461–1472. arXiv : 1310.2111 . Бибкод : 2014CoPhC.185.1461M . дои : 10.1016/j.cpc.2014.01.012 . S2CID 42041635 .
- ^ «Модуль предположений — документация SymPy 1.4» . docs.sympy.org . Проверено 5 июля 2019 г.
- ^ «Механика сплошной среды — документация SymPy 1.4» . docs.sympy.org . Проверено 5 июля 2019 г.
- ^ «GitHub — symengine/symengine: SymEngine — это быстрая библиотека символьных манипуляций, написанная на C++» . Гитхаб . Проверено 25 августа 2021 г.
- ^ «mpmath — библиотека Python для арифметических операций с плавающей запятой произвольной точности» . mpmath.org . Проверено 25 августа 2021 г.
- ^ «GitHub — pearu/sympycore: автоматически экспортируется из code.google.com/p/sympycore» . Гитхаб . Январь 2021 года . Проверено 25 августа 2021 г.
- ^ Разработчики, SfePy. «SfePy: простые конечные элементы в Python — версия SfePy: документация 2021.2+git.13ca95f1» . sfepy.org . Проверено 25 августа 2021 г.
- ^ «GitHub — pygae/galgebra: пакет символьной геометрической алгебры/исчисления для SymPy» . Гитхаб . Проверено 25 августа 2021 г.
- ^ «Quameon — квантовый метод Монте-Карло на Python» . Quameon.sourceforge.net . Проверено 25 августа 2021 г.
- ^ «Добро пожаловать в документацию Lcapy! — Документация Lcapy 0.76» . 16 января 2021 г. Архивировано из оригинала 16 января 2021 г. Проверено 25 августа 2021 г.
- ^ «Документация проекта LaTeX Expression — документация LaTeX Expression 0.3.dev» . mech.fsv.cvut.cz. Проверено 25 августа 2021 г.
- ^ «Символическая статистика с SymPy» . Исследовательские ворота . Проверено 25 августа 2021 г.
- ^ «Документация Диофанта — Документация Диофанта 0.13.0a4.dev13+g8c5685115» . diofant.readthedocs.io . Проверено 25 августа 2021 г.
Внешние ссылки [ править ]
- Программное обеспечение системы компьютерной алгебры для Linux
- Программное обеспечение системы компьютерной алгебры для macOS
- Программное обеспечение системы компьютерной алгебры для Windows
- Бесплатные системы компьютерной алгебры
- Бесплатное математическое программное обеспечение
- Бесплатное программное обеспечение, написанное на Python.
- Научные библиотеки Python (язык программирования)