SymPy
Python library for symbolic computation From Wikipedia, the free encyclopedia
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.
![]() | |
Developer(s) | SymPy Development Team |
---|---|
Initial release | 2007 |
Stable release | 1.13.3[1]
/ 18 September 2024 |
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
Summarize
Perspective
The 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
- 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
Discrete math
- Binomial coefficients
- Summations
- Products
- Number theory: generating Prime numbers, primality testing, integer factorization, etc.
- Logic expressions[12]
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
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
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[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
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.
See also
References
External links
Wikiwand - on
Seamless Wikipedia browsing. On steroids.