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 or SymPy Gamma. SymPy is simple to install and to inspect because it is written entirely in Python with few dependencies. 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 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

SymPy is free software and is licensed under the New BSD license. The lead developers are Ondřej Čertík and Aaron Meurer. It was started in 2005 by Ondřej Čertík.

SymPy

Features

The SymPy library is split into a core with many optional modules.

SymPy

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

Pauli algebra

Linear control

Statistics

Normal distributions

Uniform distributions

Probability

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 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 ). 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: