SymPy - SymPy

SymPy
Логотип Sympy.
Разработчики)Команда разработчиков SymPy
изначальный выпуск2007; 13 лет назад (2007)
Стабильный выпуск
1.6.2[1] / 9 августа 2020; 3 месяца назад (2020-08-09)
Репозиторий Отредактируйте это в Викиданных
Написано вPython
Операционная системаКроссплатформенность
ТипСистема компьютерной алгебры
ЛицензияНовая лицензия BSD
Интернет сайтwww.sympy.org Отредактируйте это в Викиданных

SymPy является Открытый исходный код Python библиотека за символьное вычисление. Он предоставляет возможности компьютерной алгебры либо как отдельное приложение, как библиотека для других приложений, либо в Интернете как SymPy Live или же SymPy Gamma. SymPy прост в установке и проверке, поскольку он полностью написан на Python с небольшими зависимостями.[2][3][4] Эта простота доступа в сочетании с простой и расширяемой кодовой базой на хорошо известном языке делает SymPy системой компьютерной алгебры с относительно низким барьером для входа.

SymPy включает в себя функции от базовой символьной арифметики до исчисления, алгебры и т. Д. дискретная математика и квантовая физика. Он может форматировать результат вычислений как Латекс код.[2][3]

SymPy - это бесплатно программное обеспечение и под лицензией Новая лицензия BSD. Ведущие разработчики - Ондржей Чертик и Аарон Мерер. Его основал в 2005 году Ондржей Чертик.[5]

Функции

Библиотека SymPy разделена на ядро ​​с множеством дополнительных модулей.

В настоящее время ядро ​​SymPy содержит около 260000 строк кода.[6] (также включает исчерпывающий набор самотестирования: более 100 000 строк в 350 файлах, начиная с версии 0.7.5), и его возможности включают:[2][3][7][8][9]

Основные возможности

  • Базовая арифметика: *, /, +, -, **
  • Упрощение
  • Расширение
  • Функции: тригонометрические, гиперболические, экспоненциальные, корни, логарифмы, абсолютное значение, сферические гармоники, факториалы и гамма-функции, дзета-функции, полиномы, гипергеометрические, специальные функции, ...
  • Замена
  • Произвольная точность целые числа, рациональные числа и числа с плавающей запятой
  • Некоммутативные символы
  • Сопоставление с образцом

Полиномы

Исчисление

Решение уравнений

Дискретная математика

Матрицы

Геометрия

  • Точки, линии, лучи, сегменты, эллипсы, круги, многоугольники, ...
  • Перекрестки
  • Касательность
  • Сходство

Сюжет

Обратите внимание, что для построения графика требуется внешний matplotlib или же Пиглет модуль.

  • Координатные модели
  • Построение геометрических объектов
  • 2D и 3D
  • Интерактивный интерфейс
  • Цвета
  • Анимации

Физика

Статистика

Комбинаторика

Печать

Связанные проекты

  • SageMath: альтернатива с открытым исходным кодом Mathematica, Клен, MATLAB, и Магма (SymPy включен в Sage)
  • SymEngine: переписывание ядра SymPy на C ++ с целью повышения его производительности. В настоящее время ведется работа по превращению SymEngine в основной движок Sage.
  • mpmath: библиотека Python для арифметики с плавающей запятой произвольной точности
  • SympyCore: еще одна система компьютерной алгебры Python
  • SfePy: Программное обеспечение для решения систем связанных дифференциальных уравнений в частных производных (PDE) методом конечных элементов в 1D, 2D и 3D.
  • Gалгебра: Геометрическая алгебра модуль (ранее sympy.galgebra).
  • Квамеон: Квантовый Монте-Карло в Python.
  • Lcapy: Экспериментальный пакет Python для обучения анализ линейных цепей.
  • Проект LaTeX Expression: Easy LaTeX набор алгебраических выражений в символьной форме с автоматической подстановкой и вычислением результата.
  • Символьное статистическое моделирование: Добавление статистических операций к сложным физическим моделям.
  • Диофант: форк SymPy, начатый Сергеем Кирпичевым

Зависимости

Начиная с версии 1.0, SymPy имеет пакет mpmath в качестве зависимости.

Есть несколько дополнительных зависимостей, которые могут расширить его возможности:

  • gmpy: Если установлен gmpy, модуль полиномов SymPy автоматически будет использовать его для более быстрых типов заземления. Это может повысить производительность некоторых операций в несколько раз.
  • matplotlib: Если установлен matplotlib, SymPy может использовать его для построения графиков.
  • Пиглет: Альтернативный пакет для построения графиков.

Примеры использования

Довольно-полиграфический

Sympy позволяет форматировать выходные данные в более привлекательный формат с помощью pprint функция. В качестве альтернативы init_printing () метод включит красивую печать, поэтому pprint не нужно называть. Хорошая печать будет использовать символы Unicode, если они доступны в текущей среде, в противном случае он вернется к ASCII символы.

>>> из симпатичный импорт pprint, init_printing, Символ, грех, потому что, exp, sqrt, серии, интеграл, Функция>>>>>> Икс = Символ("Икс")>>> у = Символ("у")>>> ж = Функция('f')>>> # pprint по умолчанию будет использовать Unicode, если он доступен>>> pprint( Икс**exp(Икс) ) ⎛ x⎞ ⎝ℯ ⎠Икс >>> # Вывод без юникода>>> pprint(интеграл(ж(Икс), Икс), use_unicode=Ложь)  /        |         | f (x) dx |        /        >>> # Сравните с тем же выражением, но на этот раз включен юникод>>> pprint(интеграл(ж(Икс), Икс), use_unicode=Истинный)⎮ f (x) dx>>> # В качестве альтернативы, вы можете вызвать init_printing () один раз и красиво напечатать без функции pprint.>>> init_printing()>>> sqrt(sqrt(exp(Икс)))   ____4 ╱ х ╲╱ ℯ >>> (1/потому что(Икс)).серии(Икс, 0, 10)     2      4       6        8             x 5⋅x 61⋅x 277⋅x ⎛ 10⎞1 + ── + ──── + ───── + ────── + O⎝x ⎠    2     24     720     8064

Расширение

 1 >>> из симпатичный импорт init_printing, Символ, расширять 2 >>> init_printing() 3 >>> 4 >>> а = Символ('а') 5 >>> б = Символ('b') 6 >>> е = (а + б)**3 7 >>> е 8 (а + б) ³ 9 >>> е.расширять()10 a³ + 3⋅a²⋅b + 3⋅a⋅b² + b³

Пример произвольной точности

>>> из симпатичный импорт Рациональный, pprint>>> е = 2**50 / Рациональный(10)**50>>> pprint(е)1/88817841970012523233890533447265625

Дифференциация

>>> из симпатичный импорт init_printing, символы, пер, разница>>> init_printing()>>> Икс, у = символы('x y')>>> ж = Икс**2 / у + 2 * Икс - пер(у)>>> разница(ж, Икс) 2⋅x  ─── + 2  у >>> разница(ж, у)    2       х 1 - ── - ─    2 года   у>>> разница(разница(ж, Икс), у) -2⋅x ────   2   у

Сюжет

Вывод примера построения
>>> из симпатичный импорт символы, потому что>>> из sympy.plotting импорт plot3d>>> Икс, у = символы('x y')>>> plot3d(потому что(Икс*3)*потому что(у*5)-у, (Икс, -1, 1), (у, -1, 1))<sympy.plotting.plot.Plot object at 0x3b6d0d0>

Пределы

>>> из симпатичный импорт init_printing, Символ, предел, sqrt, оо>>> init_printing()>>> >>> Икс = Символ('Икс')>>> предел(sqrt(Икс**2 - 5*Икс + 6) - Икс, Икс, оо)-5/2>>> предел(Икс*(sqrt(Икс**2 + 1) - Икс), Икс, оо)1/2>>> предел(1/Икс**2, Икс, 0)>>> предел(((Икс - 1)/(Икс + 1))**Икс, Икс, оо) -2

Дифференциальные уравнения

>>> из симпатичный импорт init_printing, Символ, Функция, Уравнение, dsolve, грех, разница>>> init_printing()>>>>>> Икс = Символ("Икс")>>> ж = Функция("е")>>>>>> экв = Уравнение(ж(Икс).разница(Икс), ж(Икс))>>> эквd ── (е (х)) = е (х)dx >>>    >>> dsolve(экв, ж(Икс))           Иксf (x) = C₁⋅ℯ>>>>>> экв = Уравнение(Икс**2*ж(Икс).разница(Икс), -3*Икс*ж(Икс) + грех(Икс)/Икс)>>> экв 2 г грех (х)х ⋅── (f (x)) = -3⋅x⋅f (x) + ──────   dx x >>>>>> dsolve(экв, ж(Икс))       C₁ - cos (x)f (x) = ─────────── 

Интеграция

>>> из симпатичный импорт init_printing, интегрировать, Символ, exp, потому что, Эрф>>> init_printing()>>> Икс = Символ('Икс')>>> # Полиномиальная функция>>> ж = Икс**2 + Икс + 1>>> ж 2        х + х + 1>>> интегрировать(ж,Икс) 3    2    х х ── + ── + x3    2     >>> # Рациональная функция>>> ж = Икс/(Икс**2+2*Икс+1)>>> ж     Икс ──────────── 2          х + 2⋅x + 1>>> интегрировать(ж, Икс)               1  журнал (x + 1) + ─────             х + 1>>> # Экспоненциально-полиномиальные функции>>> ж = Икс**2 * exp(Икс) * потому что(Икс)>>> ж 2 х х ⋅ℯ ⋅cos (х)>>> интегрировать(ж, Икс) 2 х 2 х х х х ⋅ℯ ⋅sin (x) x ⋅ℯ ⋅cos (x) x ℯ ⋅sin (x) ℯ ⋅cos (x)───────────── + ───────────── - x⋅ℯ ⋅sin (x) + ───────── - ───── ────     2              2                           2           2    >>> # Неэлементарный интеграл>>> ж = exp(-Икс**2) * Эрф(Икс)>>> ж   2        -Икс ℯ ⋅erf (х)>>> интегрировать(ж, Икс)  ___    2   ╲╱ π erf (х)─────────────      4

Серии

>>> из симпатичный импорт Символ, потому что, грех, pprint>>> Икс = Символ('Икс')>>> е = 1/потому что(Икс)>>> pprint(е)  1   ──────cos (x)>>> pprint(е.серии(Икс, 0, 10))     2      4       6        8             x 5⋅x 61⋅x 277⋅x ⎛ 10⎞1 + ── + ──── + ───── + ────── + O⎝x ⎠    2     24     720     8064          >>> е = 1/грех(Икс)>>> pprint(е)  1   ──────грех (х)>>> pprint(е.серии(Икс, 0, 4))           3        1 х 7⋅x ⎛ 4⎞─ + ─ + ──── + O⎝x ⎠х 6 360

Логическое объяснение

Пример 1

>>> из симпатичный импорт *>>> Икс = Символ('Икс')>>> у = Символ('y')>>> факты = Q.положительный(Икс), Q.положительный(у)>>> с предполагая(*факты):...     Распечатать(просить(Q.положительный(2 * Икс + у)))Истинный

Пример 2

>>> из симпатичный импорт *>>> Икс = Символ('Икс')>>> # Предположение о x>>> факт = [Q.основной(Икс)]>>> с предполагая(*факт):...     Распечатать(просить(Q.рациональный(1 / Икс)))Истинный

Смотрите также

Рекомендации

  1. ^ «Релизы - симпи / симпы». Получено 10 августа 2020 - через GitHub.
  2. ^ а б c "Домашняя страница SymPy". Получено 2014-10-13.
  3. ^ а б c Джойнер, Дэвид; Чертик, Ондржей; Мерер, Аарон; Грейнджер, Брайан Э. (2012). «Системы компьютерной алгебры с открытым исходным кодом: SymPy». ACM-коммуникации в компьютерной алгебре. 45 (3/4): 225–234. Дои:10.1145/2110170.2110185.
  4. ^ Мерер, Аарон; Смит, Кристофер П .; Папроцкий, Матеуш; Чертик, Ондржей; Кирпичев, Сергей Б .; Роклин, Мэтью; Кумар, AMiT; Иванов, Серджиу; Мур, Джейсон К. (02.01.2017). «SymPy: символьные вычисления в Python» (PDF). PeerJ Компьютерные науки. 3: e103. Дои:10.7717 / peerj-cs.103. ISSN  2376-5992.
  5. ^ https://github.com/sympy/sympy/wiki/SymPy-vs.-Mathematica
  6. ^ «Статистика проекта Sympy на Open HUB». Получено 2014-10-13.
  7. ^ Геде, Гилберт; Peterson, Dale L .; Нанджангуд, Ангадх; Мур, Джейсон К .; Хаббард, Монт (2013). «Ограниченная многотельная динамика с Python: от генерации символьных уравнений до публикации». ASME 2013 Международные технические конференции по проектированию и проектированию, Конференция по компьютерам и информации в инженерии. Американское общество инженеров-механиков: V07BT10A051. Дои:10.1115 / DETC2013-13470. ISBN  978-0-7918-5597-3.
  8. ^ Роклин, Мэтью; Террел, Энди (2012). «Символьная статистика с помощью SymPy». Вычислительная техника в науке и технике. 14 (3): 88–93. Дои:10.1109 / MCSE.2012.56.
  9. ^ Асиф, Муштак; Олауссен, Кори (2014). «Автоматический генератор кода для интеграторов высшего порядка». Компьютерная физика Коммуникации. 185 (5): 1461–1472. arXiv:1310.2111. Bibcode:2014CoPhC.185.1461M. Дои:10.1016 / j.cpc.2014.01.012.
  10. ^ «Модуль предположений - документация SymPy 1.4». docs.sympy.org. Получено 2019-07-05.
  11. ^ «Механика сплошной среды - документация SymPy 1.4». docs.sympy.org. Получено 2019-07-05.

внешняя ссылка