Sinopsis

Biblioteca de Python para cálculo simbólico
Sinopsis
Desarrollador(es)Equipo de desarrollo de SymPy
Lanzamiento inicial2007 ; hace 17 años ( 2007 )
Versión estable
1.12 [1] / 10 de mayo de 2023 ; hace 16 meses ( 10/05/2023 )
Repositorio
  • github.com/sympy/sympy
Escrito enPitón
Sistema operativoMultiplataforma
TipoSistema de álgebra computacional
LicenciaNueva licencia BSD
Sitio webwww.sympy.org 

SymPy es una biblioteca de código abierto de Python para computación simbólica . Proporciona capacidades de álgebra computacional ya sea como una aplicación independiente, como una biblioteca para otras aplicaciones o en vivo en la web como SymPy Live [2] o SymPy Gamma. [3] SymPy es fácil de instalar e inspeccionar porque está escrito completamente en Python con pocas dependencias. [4] [5] [6] Esta facilidad de acceso combinada con una base de código simple y extensible en un lenguaje bien conocido hacen de SymPy un sistema de álgebra computacional con una barrera de entrada relativamente baja.

SymPy incluye funciones que van desde la aritmética simbólica básica hasta el cálculo , el álgebra , las matemáticas discretas y la física cuántica . Es capaz de formatear el resultado de los cálculos como código LaTeX . [4] [5]

SymPy es un software libre y está licenciado bajo la licencia New BSD . Los desarrolladores principales son Ondřej Čertík y Aaron Meurer. Fue iniciado en 2005 por Ondřej Čertík. [7]

Características

La biblioteca SymPy se divide en un núcleo con muchos módulos opcionales.

Actualmente, el núcleo de SymPy tiene alrededor de 260.000 líneas de código [8] (también incluye un conjunto completo de pruebas automáticas: más de 100.000 líneas en 350 archivos a partir de la versión 0.7.5), y sus capacidades incluyen: [4] [5] [9] [10] [11]

Capacidades básicas

Polinomios

Cálculo

Resolver ecuaciones

Matemáticas discretas

Matrices

Geometría

Trazando

Tenga en cuenta que para trazar gráficos se requiere el módulo externo Matplotlib o Pyglet .

  • Modelos de coordenadas
  • Trazado de entidades geométricas
  • 2D y 3D
  • Interfaz interactiva
  • Bandera
  • Animaciones

Física

Estadística

Combinatoria

Impresión

  • SageMath : una alternativa de código abierto a Mathematica , Maple , MATLAB y Magma (SymPy está incluido en Sage)
  • SymEngine: una reescritura del núcleo de SymPy en C++ , con el fin de aumentar su rendimiento. Actualmente se está trabajando para que SymEngine sea también el motor subyacente de Sage. [14]
  • mpmath: una biblioteca de Python para aritmética de punto flotante de precisión arbitraria [15]
  • SympyCore: otro sistema de álgebra computacional en Python [16]
  • SfePy: Software para la resolución de sistemas de ecuaciones diferenciales parciales (EDP) acopladas mediante el método de elementos finitos en 1D, 2D y 3D. [17]
  • GAlgebra: módulo de álgebra geométrica (anteriormente sympy.galgebra). [18]
  • Quameon: Monte Carlo cuántico en Python. [19]
  • Lcapy: Paquete experimental de Python para la enseñanza del análisis de circuitos lineales . [20]
  • Proyecto de expresión LaTeX: composición tipográfica sencilla en LaTeX de expresiones algebraicas en forma simbólica con sustitución automática y cálculo de resultados. [21]
  • Modelado estadístico simbólico: adición de operaciones estadísticas a modelos físicos complejos. [22]
  • Diofant: una bifurcación de SymPy, iniciada por Sergey B Kirpichev [23]

Dependencias

Desde la versión 1.0, SymPy tiene el paquete mpmath como dependencia.

Hay varias dependencias opcionales que pueden mejorar sus capacidades:

  • gmpy: si gmpy está instalado, el módulo polinomial de SymPy lo utilizará automáticamente para tipos de terreno más rápidos. Esto puede proporcionar un aumento de varias veces en el rendimiento de ciertas operaciones.
  • matplotlib : si matplotlib está instalado, SymPy puede usarlo para trazar gráficos.
  • Pyglet : paquete de gráficos alternativos.

Ejemplos de uso

Impresión bonita

Sympy permite formatear las salidas en un formato más atractivo a través de la pprintfunción. Alternativamente, el init_printing()método habilitará la impresión bonita, por lo que pprintno es necesario llamarlo. La impresión bonita utilizará símbolos Unicode cuando estén disponibles en el entorno actual; de lo contrario, recurrirá a caracteres ASCII .

>>> from  sympy  import  pprint ,  init_printing ,  Símbolo ,  sin ,  cos ,  exp ,  sqrt ,  serie ,  Integral ,  Función >>> >>> x  =  Símbolo ( "x" ) >>> y  =  Símbolo ( "y" ) >>> f  =  Función ( "f" ) >>> # pprint usará Unicode de manera predeterminada si está disponible >>> pprint ( x  **  exp ( x )) ⎛ x⎞ ⎝ℯ ⎠ x >>> # Una salida sin Unicode >>> pprint ( Integral ( f ( x ),  x ),  use_unicode = False )  / | | f(x) dx | / >>> # Comparar con la misma expresión pero esta vez Unicode está habilitado >>> pprint ( Integral ( f ( x ),  x ),  use_unicode = True ) ⎮ f(x) dx >>> # Alternativamente, puede llamar a init_printing() una vez y realizar una impresión bonita sin la función pprint. >>> init_printing () >>> sqrt ( sqrt ( exp ( x )))  ____ 4 ╱ x ╲╱ ℯ >>> ( 1 / cos ( x )) . serie ( x ,  0 ,  10 )  2 4 6 8  x 5⋅x 61⋅x 277⋅x ⎛ 10⎞ 1 + ── + ──── + ───── + ────── + O⎝x ⎠  2 24 720 8064

Expansión

>>> from  sympy  import  init_printing ,  Símbolo ,  expandir >>> init_printing () >>> >>> a  =  Símbolo ( "a" ) >>> b  =  Símbolo ( "b" ) >>> e  =  ( a  +  b )  **  3 >>> e (a + b)³ >>> e . expand () a³ + 3⋅a²⋅b + 3⋅a⋅b² + b³

Ejemplo de precisión arbitraria

>>> de  sympy  importar  Racional ,  pprint >>> e  =  2 ** 50  /  Racional ( 10 )  **  50 >>> pprint ( e ) 1/88817841970012523233890533447265625

Diferenciación

>>> from  sympy  import  init_printing ,  símbolos ,  ln ,  diff >>> init_printing () >>> x ,  y  =  símbolos ( "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

Trazando

Salida del ejemplo de trazado
>>> de  sympy  importar  símbolos ,  cos >>> de  sympy.plotting  importar  plot3d >>> x ,  y  =  símbolos ( "x y" ) >>> plot3d ( cos ( x  *  3 )  *  cos ( y  *  5 )  -  y ,  ( x ,  - 1 ,  1 ),  ( y ,  - 1 ,  1 )) <sympy.plotting.plot.Plot objeto en 0x3b6d0d0>

Límites

>>> from  sympy  import  init_printing ,  Símbolo ,  límite ,  raíz cuadrada ,  oo >>> init_printing () >>> >>> x  =  Símbolo ( "x" ) >>> límite ( raíz cuadrada ( x ** 2  -  5  *  x  +  6 )  -  x ,  x ,  oo ) -5/2 >>> límite ( x  *  ( raíz cuadrada ( x ** 2  +  1 )  -  x ),  x ,  oo ) 1/2 >>> límite ( 1  /  x ** 2 ,  x ,  0 ) >>> límite ((( x  -  1 )  /  ( x  +  1 ))  **  x ,  x ,  oo ) -2 

Ecuaciones diferenciales

>>> from  sympy  import  init_printing ,  Símbolo ,  Función ,  Eq ,  dsolve ,  sin ,  diff >>> init_printing () >>> >>> x  =  Símbolo ( "x" ) >>> f  =  Función ( "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 )  +  sen ( x )  /  x ) >>> eq 2 d sen(x) x ⋅──(f(x)) = -3⋅x⋅f(x) + ──────  dx x >>> >>> dsolve ( eq ,  f ( x ))  C₁ - cos(x) f(x) = ─────────── 

Integración

>>> from  sympy  import  init_printing ,  integrate ,  Symbol ,  exp ,  cos ,  erf >>> init_printing () >>> x  =  Symbol ( "x" ) >>> # Función polinómica >>> f  =  x ** 2  +  x  +  1 >>> f 2 x + x + 1 >>> integrate ( f ,  x ) 3 2 xx ── + ── + x 3 2 >>> # Función racional >>> f  =  x  /  ( x ** 2  +  2  *  x  +  1 ) >>> f  x ──────────── 2 x + 2⋅x + 1>>> integrar ( f ,  x )  1 log(x + 1) + ─────  x + 1 >>> # Funciones polinomiales exponenciales >>> f  =  x ** 2  *  exp ( x )  *  cos ( x ) >>> f 2 x x ⋅ℯ ⋅cos(x) >>> integrar ( f ,  x ) 2 x 2 xxx x ⋅ℯ ⋅sin(x) x ⋅ℯ ⋅cos(x) x ℯ ⋅sin(x) ℯ ⋅cos(x) ──────────── + ──────────── - x⋅ℯ ⋅sin(x) + ───────── - ─────────  2 2 2 2 >>> # Una integral no elemental >>> f  =  exp ( - ( x ** 2 ))  *  erf ( x ) >>> f  2 -x ℯ ⋅erf(x) >>> integrate ( f ,  x ) ___ 2 ╲╱ π ⋅erf (x) ─────────────  4

Serie

>>> de  sympy  import  Símbolo ,  cos ,  sin ,  pprint >>> x  =  Símbolo ( "x" ) >>> e  =  1  /  cos ( x ) >>> pprint ( e )  1 ────── cos (x) >>> pprint ( e . serie ( 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 . serie ( x ,  0 ,  4 ))  3 1 x 7⋅x ⎛ 4⎞ ─ + ─ + ──── + O⎝x ⎠ x6 360

Razonamiento lógico

Ejemplo 1

>>> from  sympy  import  * >>> x  =  Símbolo ( "x" ) >>> y  =  Símbolo ( "y" ) >>> hechos  =  Q . positivo ( x ),  Q . positivo ( y ) >>> con  suponiendo ( * hechos ): ...  print ( ask ( Q . positivo ( 2  *  x  +  y ))) Verdadero

Ejemplo 2

>>> from  sympy  import  * >>> x  =  Symbol ( "x" ) >>> # Suposición sobre x >>> fact  =  [ Q . prime ( x )] >>> con  suposición ( * fact ): ...  print ( ask ( Q . reasonal ( 1  /  x ))) Verdadero

Véase también

Referencias

  1. ^ "Lanzamientos - sympy/sympy" . Consultado el 6 de septiembre de 2022 – vía GitHub .
  2. ^ "SymPy Live". live.sympy.org . Consultado el 25 de agosto de 2021 .
  3. ^ "SymPy Gamma". www.sympygamma.com . Consultado el 25 de agosto de 2021 .
  4. ^ abc "Página de inicio de SymPy" . Consultado el 13 de octubre de 2014 .
  5. ^ abc Joyner, David; Čertík, Ondřej; Meurer, Aaron; Granger, Brian E. (2012). "Sistemas de álgebra computacional de código abierto: SymPy". ACM Communications in Computer Algebra . 45 (3/4): 225–234. doi :10.1145/2110170.2110185. S2CID  44862851.
  6. ^ Meurer, Aarón; Smith, Christopher P.; Paprocki, Mateusz; Čertík, Ondřej; Kirpichev, Sergey B.; Rocklin, Mateo; Kumar, AMiT; Ivanov, Sergio; Moore, Jason K. (2 de enero de 2017). "SymPy: computación simbólica en Python" (PDF) . PeerJ Ciencias de la Computación . 3 : e103. doi : 10.7717/peerj-cs.103 . ISSN  2376-5992.
  7. ^ "SymPy frente a Mathematica · sympy/Wiki de Sympy". GitHub .
  8. ^ "Estadísticas del proyecto Sympy en Open HUB" . Consultado el 13 de octubre de 2014 .
  9. ^ Gede, Gilbert; Peterson, Dale L.; Nanjangud, Angadh; Moore, Jason K.; Hubbard, Mont (2013). Dinámica multicuerpo restringida con Python: desde la generación de ecuaciones simbólicas hasta la publicación . Conferencias técnicas internacionales de ingeniería de diseño y computación e información en ingeniería de la ASME 2013. Sociedad Estadounidense de Ingenieros Mecánicos. pp. V07BT10A051. doi :10.1115/DETC2013-13470. ISBN . 978-0-7918-5597-3.
  10. ^ Rocklin, Matthew; Terrel, Andy (2012). "Estadísticas simbólicas con SymPy". Computing in Science & Engineering . 14 (3): 88–93. Bibcode :2012CSE....14c..88R. doi :10.1109/MCSE.2012.56. S2CID  18307629.
  11. ^ Asif, Mushtaq; Olaussen, Kåre (2014). "Generador automático de código para integradores de orden superior". Computer Physics Communications . 185 (5): 1461–1472. arXiv : 1310.2111 . Código Bibliográfico :2014CoPhC.185.1461M. doi :10.1016/j.cpc.2014.01.012. S2CID  42041635.
  12. ^ "Módulo de suposiciones — documentación de SymPy 1.4". docs.sympy.org . Consultado el 5 de julio de 2019 .
  13. ^ "Mecánica del continuo: documentación de SymPy 1.4" . docs.sympy.org . Consultado el 5 de julio de 2019 .
  14. ^ "GitHub - symengine/symengine: SymEngine es una biblioteca de manipulación simbólica rápida, escrita en C++". GitHub . Consultado el 25 de agosto de 2021 .
  15. ^ "mpmath - Biblioteca de Python para aritmética de punto flotante de precisión arbitraria". mpmath.org . Consultado el 25 de agosto de 2021 .
  16. ^ "GitHub - pearu/sympycore: Exportado automáticamente desde code.google.com/p/sympycore". GitHub . Enero de 2021 . Consultado el 25 de agosto de 2021 .
  17. ^ Desarrolladores, SfePy. «SfePy: Elementos finitos simples en Python — Versión de SfePy: documentación 2021.2+git.13ca95f1». sfepy.org . Consultado el 25 de agosto de 2021 .
  18. ^ "GitHub - pygae/galgebra: paquete de cálculo/álgebra geométrica simbólica para SymPy". GitHub . Consultado el 25 de agosto de 2021 .
  19. ^ "Quameon - Monte Carlo cuántico en Python". quameon.sourceforge.net . Consultado el 25 de agosto de 2021 .
  20. ^ "¡Bienvenido a la documentación de Lcapy! — Documentación de Lcapy 0.76". 2021-01-16. Archivado desde el original el 2021-01-16 . Consultado el 2021-08-25 .
  21. ^ "Documentación del proyecto LaTeX Expression — Documentación de LaTeX Expression 0.3.dev". mech.fsv.cvut.cz . Consultado el 25 de agosto de 2021 .
  22. ^ "Estadísticas simbólicas con SymPy". ResearchGate . Consultado el 25 de agosto de 2021 .
  23. ^ "Documentación de Diofant — Documentación de Diofant 0.13.0a4.dev13+g8c5685115". diofant.readthedocs.io . Consultado el 25 de agosto de 2021 .
  • Sitio web oficial
  • Planeta SymPy
  • Colección de tutoriales de SymPy
  • Repositorio de código en GitHub
  • Foro de soporte y desarrollo
  • Sala de chat de Gitter
Obtenido de "https://es.wikipedia.org/w/index.php?title=SymPy&oldid=1203824488"