SymPy
Python library for symbolic computation
- 3 min read
- 3 chapters
Related on Lably
Through Open source, Python (programming language) and Library (computing)
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.
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.
Features
The SymPy library is split into a core with many optional modules.
Currently, the core of SymPy has around 260,000 lines of code (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:
Core capabilities
- 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
- Basic arithmetic: division, gcd, etc.
- Factorization
- Square-free factorization
- Gröbner bases
- Partial fraction decomposition
- Resultants
Calculus
- Limits
- Differentiation
- Integration: Implemented Risch–Norman heuristic
- Taylor series (Laurent series)
Solving equations
- Systems of linear equations
- Systems of algebraic equations that are solvable by radicals
- Differential equations
- Difference equations
Discrete math
- Binomial coefficients
- Summations
- Products
- Number theory: generating Prime numbers, primality testing, integer factorization, etc.
- Logic expressions
Matrices
- Basic arithmetic
- Eigenvalues and their eigenvectors when the characteristic polynomial is solvable by radicals
- Determinants
- Inversion
- Solving
Geometry
- Points, lines, rays, ellipses, circles, polygons, etc.
- Intersections
- Tangency
- Similarity
Plotting
Note, plotting requires the external Matplotlib or Pyglet module.
- Coordinate models
- Plotting Geometric Entities
- 2D and 3D
- Interactive interface
- Colors
- Animations
Physics
- Units
- Classical mechanics
- Continuum mechanics
- Quantum mechanics
- Gaussian optics
- Linear control
Statistics
Combinatorics
- Permutations
- Combinations
- Partitions
- Subsets
- Permutation group: Polyhedral, Rubik, Symmetric, etc.
- Prufer sequence and Gray codes
Printing
- Pretty-printing: ASCII/Unicode pretty-printing, LaTeX
- Code generation: C, Fortran, Python
Sign in to keep reading
2 more chapters are free with a Lably account.
Related projects
- 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 to make SymEngine the underlying engine of Sage too.
- mpmath: a Python library for arbitrary-precision floating-point arithmetic
- SympyCore: another Python computer algebra system
- SfePy: Software for solving systems of coupled partial differential equations (PDEs) by the finite element method in 1D, 2D and 3D.
- GAlgebra: Geometric algebra module (previously sympy.galgebra).
- Quameon: Quantum Monte Carlo in Python.
- Lcapy: Experimental Python package for teaching linear circuit analysis.
- LaTeX Expression project: Easy LaTeX typesetting of algebraic expressions in symbolic form with automatic substitution and result computation.
- Symbolic statistical modeling: Adding statistical operations to complex physical models.
- Diofant: a fork of SymPy, started by Sergey B Kirpichev
Dependencies
Since 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.

