stringtranslate.com

Sinopsis

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 .

Física

Estadística

Combinatoria

Impresión

Proyectos relacionados

Dependencias

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

Hay varias dependencias opcionales que pueden mejorar sus capacidades:

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 – a través de 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, Aaron; Smith, Christopher P.; Paprocki, Mateusz; Čertík, Ondřej; Kirpichev, Sergey B.; Rocklin, Matthew; Kumar, AMiT; Ivanov, Sergiu; Moore, Jason K. (2 de enero de 2017). "SymPy: computación simbólica en Python" (PDF) . PeerJ Computer Science . 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 .

Enlaces externos