Jump to content

СимПи

СимПи
Разработчик(и) Команда разработчиков SymPy
Первоначальный выпуск 2007 г .; 17 лет назад ( 2007 )
Стабильная версия
1.12 [1] / 10 мая 2023 г .; 13 месяцев назад ( 10.05.2023 )
Репозиторий
Написано в Питон
Операционная система Кросс-платформенный
Тип Система компьютерной алгебры
Лицензия Новая лицензия BSD
Веб-сайт www .sympy .org  Edit this on Wikidata

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]

Основные возможности [ править ]

Полиномы [ править ]

Исчисление [ править ]

Решение уравнений [ править ]

Дискретная математика [ править ]

Матрицы [ править ]

Геометрия [ править ]

График [ править ]

Обратите внимание: для построения графика требуется внешний модуль Matplotlib или Pyglet .

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

Физика [ править ]

Статистика [ править ]

Комбинаторика [ править ]

Печать [ править ]

Связанные проекты [ править ]

Зависимости [ править ]

Начиная с версии 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) = ───────────   

Интеграция [ править ]

>>> 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

См. также [ править ]

Ссылки [ править ]

  1. ^ "Релизы - симпы/симпы" . Проверено 6 сентября 2022 г. - через GitHub .
  2. ^ «СимПи Лайв» . live.sympy.org . Проверено 25 августа 2021 г.
  3. ^ «СимПи Гамма» . www.sympygamma.com . Проверено 25 августа 2021 г.
  4. Перейти обратно: Перейти обратно: а б с «Домашняя страница SymPy» . Проверено 13 октября 2014 г.
  5. Перейти обратно: Перейти обратно: а б с Джойнер, Дэвид; Чертик, Ондржей; Мёрер, Аарон; Грейнджер, Брайан Э. (2012). «Системы компьютерной алгебры с открытым исходным кодом: SymPy». ACM-коммуникации в компьютерной алгебре . 45 (3/4): 225–234. дои : 10.1145/2110170.2110185 . S2CID   44862851 .
  6. ^ Мёрер, Аарон; Смит, Кристофер П.; Папроцкий, Матеуш; Чертик, Ондржей; Кирпичев Сергей Борисович; Роклин, Мэтью; Кумар, АМиТ; Иванов, Сергей; Мур, Джейсон К. (2 января 2017 г.). «SymPy: символьные вычисления в Python» (PDF) . PeerJ Информатика . 3 : е103. doi : 10.7717/peerj-cs.103 . ISSN   2376-5992 .
  7. ^ «SymPy против Mathematica · Sympy/Sympy Wiki» . Гитхаб .
  8. ^ «Статистика проекта Sympy на Open HUB» . Проверено 13 октября 2014 г.
  9. ^ Геде, Гилберт; Петерсон, Дейл Л.; Нанджангуд, Ангад; Мур, Джейсон К.; Хаббард, Монт (2013). Динамика многотельных тел с ограничениями с помощью Python: от генерации символьных уравнений до публикации . ASME 2013 Международные технические конференции по проектированию и инженерному делу и Конференция по компьютерам и информации в инженерии. Американское общество инженеров-механиков. стр. V07BT10A051. дои : 10.1115/DETC2013-13470 . ISBN  978-0-7918-5597-3 .
  10. ^ Роклин, Мэтью; Террел, Энди (2012). «Символическая статистика с SymPy». Вычисления в науке и технике . 14 (3): 88–93. Бибкод : 2012CSE....14c..88R . дои : 10.1109/MCSE.2012.56 . S2CID   18307629 .
  11. ^ Асиф, Муштак; Олауссен, Коре (2014). «Автоматический генератор кода для интеграторов высшего порядка». Компьютерная физика. Коммуникации . 185 (5): 1461–1472. arXiv : 1310.2111 . Бибкод : 2014CoPhC.185.1461M . дои : 10.1016/j.cpc.2014.01.012 . S2CID   42041635 .
  12. ^ «Модуль предположений — документация SymPy 1.4» . docs.sympy.org . Проверено 5 июля 2019 г.
  13. ^ «Механика сплошной среды — документация SymPy 1.4» . docs.sympy.org . Проверено 5 июля 2019 г.
  14. ^ «GitHub — symengine/symengine: SymEngine — это быстрая библиотека символьных манипуляций, написанная на C++» . Гитхаб . Проверено 25 августа 2021 г.
  15. ^ «mpmath — библиотека Python для арифметических операций с плавающей запятой произвольной точности» . mpmath.org . Проверено 25 августа 2021 г.
  16. ^ «GitHub — pearu/sympycore: автоматически экспортируется из code.google.com/p/sympycore» . Гитхаб . Январь 2021 года . Проверено 25 августа 2021 г.
  17. ^ Разработчики, SfePy. «SfePy: простые конечные элементы в Python — версия SfePy: документация 2021.2+git.13ca95f1» . sfepy.org . Проверено 25 августа 2021 г.
  18. ^ «GitHub — pygae/galgebra: пакет символьной геометрической алгебры/исчисления для SymPy» . Гитхаб . Проверено 25 августа 2021 г.
  19. ^ «Quameon — квантовый метод Монте-Карло на Python» . Quameon.sourceforge.net . Проверено 25 августа 2021 г.
  20. ^ «Добро пожаловать в документацию Lcapy! — Документация Lcapy 0.76» . 16 января 2021 г. Архивировано из оригинала 16 января 2021 г. Проверено 25 августа 2021 г.
  21. ^ «Документация проекта LaTeX Expression — документация LaTeX Expression 0.3.dev» . mech.fsv.cvut.cz. ​Проверено 25 августа 2021 г.
  22. ^ «Символическая статистика с SymPy» . Исследовательские ворота . Проверено 25 августа 2021 г.
  23. ^ «Документация Диофанта — Документация Диофанта 0.13.0a4.dev13+g8c5685115» . diofant.readthedocs.io . Проверено 25 августа 2021 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 70e70dd83b13ded3a62371c449a205db__1707144120
URL1:https://arc.ask3.ru/arc/aa/70/db/70e70dd83b13ded3a62371c449a205db.html
Заголовок, (Title) документа по адресу, URL1:
SymPy - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)