СимПи
![]() | |
Разработчики) | Команда разработчиков 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 , Символ , грех , cos , exp , sqrt , series , Интеграл , Функция
>>
>>> x = Символ ( «x» )
>>> y = Символ ( «y» )
>>> f = Функция ( "f" )
>>> # pprint по умолчанию будет использовать Юникод, если он доступен
>>> pprint ( x ** exp ( x ))
⎛ x⎞
⎝ℯ ⎠
x
>>> # Вывод без юникода
>>> pprint ( Integral ( f ( x ), x ), use_unicode = False )
/
|
| е(х) dx
|
/
>>> # Сравнить с тем же выражением, но на этот раз юникод включен
>>> pprint ( Integral ( f ( x ), x ), use_unicode = True )
⌠
⎮ f(x) dx
⌡
>>> # В качестве альтернативы вы можете вызовите init_printing() один раз и напечатайте без функции pprint.
>>> init_printing ()
>>> sqrt ( sqrt ( exp ( x )))
____
4 ╱ x
╲╱ ℯ
>>> ( 1 / cos ( x )) . серия ( x , 0 , 10 )
2 4 6 8
x 5⋅x 61⋅x 277⋅x ⎛ 10⎞
1 + ── + ──── + ───── + ────── + O⎝ х ⎠
2 24 720 8064
Расширение [ править ]
>>> from Sympy import init_printing , Символ , разверните
>>> init_printing ()
>>>
>>> a = Символ ( «a» )
>>> b = Символ ( «b» )
>>> e = ( a + б ) ** 3
>>> е
(а + б)³
>>> е . развернуть ()
a³ + 3⋅a²⋅b + 3⋅a⋅b² + b³
Пример произвольной точности [ править ]
>>> из Sympy import Rational , pprint
>>> e = 2 ** 50 / Rational ( 10 ) ** 50
>>> pprint ( e )
1/88817841970012523233890533447265625
Дифференциация [ править ]
>>> from Sympy import init_printing , символы , ln , diff
>>> init_printing ()
>>> x , y = символы ( "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
График [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Sympy_plot_screenshot.png/220px-Sympy_plot_screenshot.png)
>>> из Sympy импорта символов , cos
>>> из Sympy.plotting importplot3d plot3d
>>> x , y = символы ( «x y )
>>> ( cos cos ( x * 3 ) * ) ( y * 5 - » y , ( x , - 1 , 1 ), ( y , - 1 , 1 ))
<sympy.plotting.plot.Plot объект по адресу 0x3b6d0d0>
Ограничения [ править ]
>>> from Sympy import init_printing , Символ , предел , sqrt , оо
>>> init_printing ()
>>>
>>> x = Символ ( "x" )
>>> предел ( sqrt ( x ** 2 - 5 * x + 6 ) - x , x , оо )
-5/2
>>> предел ( x * ( sqrt ( x ** 2 + 1 ) - x ), x , оо )
1/2
>>> предел ( 1 / x ** 2 , x , 0 )
∞
>>> предел ((( x - 1 ) / ( x + 1 )) ** x , x , оо )
-2
ℯ
Дифференциальные уравнения [ править ]
>>> fromsympy sin import init_printing , Символ , Функция , Eq , dsolve , Символ , diff
>>> init_printing ()
>>>
>>> x = Функция ( «x» )
>>> f = ( » «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 , integration , Symbol , exp , cos , erf
>>> init_printing ()
>>> x = Символ ( "x" )
>>> # Полиномиальная функция
>>> f = x ** 2 + x + 1
>>> f
2
x + x + 1
>>> интегрировать ( f , x )
3 2
xx
── + ── + x
3 2
>>> # Рациональная функция
>>> f = x / ( x * * 2 + 2 * x + 1 )
>>> f
x
────────────
2
x + 2⋅x + 1
>>> интегрировать ( f , x )
1
log(x + 1) + ─────
x + 1
>>> # Экспоненциально-полиномиальные функции
>>> f = x ** 2 * exp ( x ) * cos ( x )
>>> f
2 x
x ⋅ℯ ⋅cos(x)
>>> интегрировать ( f , x )
2 x 2 xxx
x ⋅ℯ ⋅sin(x) x ⋅ℯ ⋅cos(x) x ℯ ⋅sin(x) ℯ ⋅cos(x)
──────── ──── + ──────────── - x⋅ℯ ⋅sin(x) + ───────── - ────────
2 2 2 2
>>> # Неэлементарный интеграл
>>> f = exp ( - ( x ** 2 )) * erf ( x )
>>> f
2
-x
ℯ ⋅erf(x)
>>> интегрировать ( f , x )
___ 2
╲╱ π ⋅erf (x)
─────────────
4
Серия [ править ]
>>> from Sympy import Символ , cos , sin , pprint
>>> x = Символ ( "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 [ править ]
>>> из Sympy import *
>>> x = Символ ( » )
>>> y = Символ ( «y» )
>>> факты = Q. « x положительный ( Икс ), Q . положительный ( y )
>>> при условии ( * факты ):
... распечатать ( спросить ( Q . положительный ( 2 * x + y )))
True
Пример 2 [ править ]
>>> from Sympy import *
>>> x = Символ ( "x" )
>>> # Предположение о x
>>> fact = [ Q . prime ( x )]
>>> с предположением ( * факт ):
... распечатать ( спросить ( Q . рациональное ( 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. дои : 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 (язык программирования)