SymPy is an open-source Python library for symbolic computation. It provides computer algebra capabilities either as a standalone application, as a library to other applications, or live on the web as SymPy Live[2] or SymPy Gamma.[3] SymPy is simple to install and to inspect because it is written entirely in Python with few dependencies.[4][5][6] This ease of access combined with a simple and extensible code base in a well known language make SymPy a computer algebra system with a relatively low barrier to entry.
SymPy | |
---|---|
![]() | |
Developer(s) | SymPy Development Team |
Initial release | 2007 |
Stable release | 1.14.0[1]
/ 27 April 2025 |
Repository | |
Written in | Python |
Operating system | Cross-platform |
Type | Computer algebra system |
License | 3-clause BSD |
Website | www![]() |
SymPy includes features ranging from basic symbolic arithmetic to calculus, algebra, discrete mathematics, and quantum physics. It is capable of formatting the result of the computations as LaTeX code.[4][5]
SymPy is free software and is licensed under the 3-clause BSD. The lead developers are Ondřej Čertík and Aaron Meurer. It was started in 2005 by Ondřej Čertík.[7]
Features
editThe SymPy library is split into a core with many optional modules.
Currently, the core of SymPy has around 260,000 lines of code[8] (it also includes a comprehensive set of self-tests: over 100,000 lines in 350 files as of version 0.7.5), and its capabilities include:[4][5][9][10][11]
Core capabilities
edit- Basic arithmetic: *, /, +, -, **
- Simplification
- Expansion
- Functions: trigonometric, hyperbolic, exponential, roots, logarithms, absolute value, spherical harmonics, factorials and gamma functions, zeta functions, polynomials, hypergeometric, special functions, etc.
- Substitution
- Arbitrary precision integers, rationals and floats
- Noncommutative symbols
- Pattern matching
Polynomials
edit- Basic arithmetic: division, gcd, etc.
- Factorization
- Square-free factorization
- Gröbner bases
- Partial fraction decomposition
- Resultants
Calculus
edit- Limits
- Differentiation
- Integration: Implemented Risch–Norman heuristic
- Taylor series (Laurent series)
Solving equations
edit- Systems of linear equations
- Systems of algebraic equations that are solvable by radicals
- Differential equations
- Difference equations
Discrete math
edit- Binomial coefficients
- Summations
- Products
- Number theory: generating Prime numbers, primality testing, integer factorization, etc.
- Logic expressions[12]
Matrices
edit- Basic arithmetic
- Eigenvalues and their eigenvectors when the characteristic polynomial is solvable by radicals
- Determinants
- Inversion
- Solving
Geometry
edit- Points, lines, rays, ellipses, circles, polygons, etc.
- Intersections
- Tangency
- Similarity
Plotting
editNote, plotting requires the external Matplotlib or Pyglet module.
- Coordinate models
- Plotting Geometric Entities
- 2D and 3D
- Interactive interface
- Colors
- Animations
Physics
editStatistics
editCombinatorics
edit- Permutations
- Combinations
- Partitions
- Subsets
- Permutation group: Polyhedral, Rubik, Symmetric, etc.
- Prufer sequence and Gray codes
Printing
edit- Pretty-printing: ASCII/Unicode pretty-printing, LaTeX
- Code generation: C, Fortran, Python
Related projects
edit- SageMath: an open source alternative to Mathematica, Maple, MATLAB, and Magma (SymPy is included in Sage)
- SymEngine: a rewriting of SymPy's core in C++, in order to increase its performance. Work is currently in progress[as of?] to make SymEngine the underlying engine of Sage too.[14]
- mpmath: a Python library for arbitrary-precision floating-point arithmetic[15]
- SympyCore: another Python computer algebra system[16]
- SfePy: Software for solving systems of coupled partial differential equations (PDEs) by the finite element method in 1D, 2D and 3D.[17]
- GAlgebra: Geometric algebra module (previously sympy.galgebra).[18]
- Quameon: Quantum Monte Carlo in Python.[19]
- Lcapy: Experimental Python package for teaching linear circuit analysis.[20]
- LaTeX Expression project: Easy LaTeX typesetting of algebraic expressions in symbolic form with automatic substitution and result computation.[21]
- Symbolic statistical modeling: Adding statistical operations to complex physical models.[22]
- Diofant: a fork of SymPy, started by Sergey B Kirpichev[23]
Dependencies
editSince version 1.0, SymPy has the mpmath package as a dependency.
There are several optional dependencies that can enhance its capabilities:
- gmpy: If gmpy is installed, SymPy's polynomial module will automatically use it for faster ground types. This can provide a several times boost in performance of certain operations.
- matplotlib: If matplotlib is installed, SymPy can use it for plotting.
- Pyglet: Alternative plotting package.
See also
editReferences
edit- ^ "Releases - sympy/sympy". Retrieved 14 May 2025 – via GitHub.
- ^ "SymPy Live". live.sympy.org. Retrieved 2021-08-25.
- ^ "SymPy Gamma". www.sympygamma.com. Retrieved 2021-08-25.
- ^ a b c "SymPy homepage". Retrieved 2014-10-13.
- ^ a b c Joyner, David; Čertík, Ondřej; Meurer, Aaron; Granger, Brian E. (2012). "Open source computer algebra systems: SymPy". ACM Communications in Computer Algebra. 45 (3/4): 225–234. doi:10.1145/2110170.2110185. S2CID 44862851.
- ^ Meurer, Aaron; Smith, Christopher P.; Paprocki, Mateusz; Čertík, Ondřej; Kirpichev, Sergey B.; Rocklin, Matthew; Kumar, AMiT; Ivanov, Sergiu; Moore, Jason K. (2017-01-02). "SymPy: symbolic computing in Python" (PDF). PeerJ Computer Science. 3: e103. doi:10.7717/peerj-cs.103. ISSN 2376-5992.
- ^ "SymPy vs. Mathematica · sympy/Sympy Wiki". GitHub.
- ^ "Sympy project statistics on Open HUB". Retrieved 2014-10-13.
- ^ Gede, Gilbert; Peterson, Dale L.; Nanjangud, Angadh; Moore, Jason K.; Hubbard, Mont (2013). Constrained multibody dynamics with Python: From symbolic equation generation to publication. ASME 2013 International Design Engineering Technical Conferences and Computers and Information in Engineering Conference. American Society of Mechanical Engineers. pp. V07BT10A051. doi:10.1115/DETC2013-13470. ISBN 978-0-7918-5597-3.
- ^ Rocklin, Matthew; Terrel, Andy (2012). "Symbolic Statistics with SymPy". Computing in Science & Engineering. 14 (3): 88–93. Bibcode:2012CSE....14c..88R. doi:10.1109/MCSE.2012.56. S2CID 18307629.
- ^ Asif, Mushtaq; Olaussen, Kåre (2014). "Automatic code generator for higher order integrators". Computer Physics Communications. 185 (5): 1461–1472. arXiv:1310.2111. Bibcode:2014CoPhC.185.1461M. doi:10.1016/j.cpc.2014.01.012. S2CID 42041635.
- ^ "Assumptions Module — SymPy 1.4 documentation". docs.sympy.org. Retrieved 2019-07-05.
- ^ "Continuum Mechanics — SymPy 1.4 documentation". docs.sympy.org. Retrieved 2019-07-05.
- ^ "GitHub - symengine/symengine: SymEngine is a fast symbolic manipulation library, written in C++". GitHub. Retrieved 2021-08-25.
- ^ "mpmath - Python library for arbitrary-precision floating-point arithmetic". mpmath.org. Retrieved 2021-08-25.
- ^ "GitHub - pearu/sympycore: Automatically exported from code.google.com/p/sympycore". GitHub. January 2021. Retrieved 2021-08-25.
- ^ Developers, SfePy. "SfePy: Simple Finite Elements in Python — SfePy version: 2021.2+git.13ca95f1 documentation". sfepy.org. Retrieved 2021-08-25.
- ^ "GitHub - pygae/galgebra: Symbolic Geometric Algebra/Calculus package for SymPy". GitHub. Retrieved 2021-08-25.
- ^ "Quameon - Quantum Monte Carlo in Python". quameon.sourceforge.net. Retrieved 2021-08-25.
- ^ "Welcome to Lcapy's documentation! — Lcapy 0.76 documentation". 2021-01-16. Archived from the original on 2021-01-16. Retrieved 2021-08-25.
- ^ "LaTeX Expression project documentation — LaTeX Expression 0.3.dev documentation". mech.fsv.cvut.cz. Retrieved 2021-08-25.
- ^ "Symbolic Statistics with SymPy". ResearchGate. Retrieved 2021-08-25.
- ^ "Diofant's documentation — Diofant 0.13.0a4.dev13+g8c5685115 documentation". diofant.readthedocs.io. Retrieved 2021-08-25.