My favorites | Sign in
Logo
                
Show all Featured wiki pages:
Documentation

SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.

News

SymPy is participating in the Google Summer of Code 2009. More info here.

OlderNews

SymPy is easy to install and get started with. See the download instructions and tutorial for more information. It works everywhere, where Python 2.4 or newer is installed (Linux, Windows, Mac Os X, ...).

If you found a bug, please report it in Issues or the mailinglist.

Downloads

Use "Featured Downloads" on the right hand side. For more options and information, go to the Downloads tab.

git repository (you can track current progress in there): http://git.sympy.org/?p=sympy.git;a=summary

Documentation

All documentation is at: http://docs.sympy.org/

Features

Currently, SymPy core has around 6300 lines of code (including extensive comments and docstrings) and its capabilities include:

Then there are SymPy modules (18200 lines including documentation) for these tasks:

There are extensive tests (6148 lines in 58 files) for every single feature in SymPy. More...

Related projects

The community around all these tools is wonderful, feel free to join the respective lists of these projects and also share your code, so that we can build on each other's work.

Things we are working on

See our roadmap: http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0

But generally, we are trying to polish things, fix bugs, improve documentation, make SymPy reliable and faster. It's very important for us, that you grab the tarball and it just works (if it doesn't, it's a bug and please report it). Until we reach the 1.0 version, the internal structure of SymPy can change, as we are still investigating the most efficient ways of doing symbolic manipulation in Python, but from the user point of view, the API shouldn't change much, unless there is a very good reason for it.

Some ideas for future development

and more... Feel free to tell us your ideas in Issues or the mailinglist.

Motivation

Why another CAS? What is the SymPy's relationship to Sage?

Everything is explained in the Motivation.

Usage

Example in the python interpreter:

>>> from sympy import Symbol, cos
>>> x = Symbol('x')
>>> e = 1/cos(x)
>>> print e.series(x, 0, 10)
1 + (1/2)*x**2 + (5/24)*x**4 + (61/720)*x**6 + (277/8064)*x**8 + O(x**10)

There is a nice console isympy (in the bin directory, or if you installed the deb, it will be in /usr/bin/isympy) which just imports sympy and defines symbols x,y,z for you, so the above thing can be achieved by starting isympy and typing this one line:

In [1]: (1/cos(x)).series(x, 0, 10)
Out[1]: 
     2      4       6        8           
    x    5*x    61*x    277*x            
1 + ── + ──── + ───── + ────── + O(x**10)
    2     24     720     8064            

Read the tutorial for more examples.

Development

If you wrote anything interesting using SymPy, please donate your code back to the project, so that other people can easily use it and we can grow as the community. You are welcomed to join the development. If you find a bug or just want to say what you think, tell us on the mailinglist (or put your comment/bug report into the Issues). We are interested in your opinions if you think the SymPy's interface is not as you would expect or if you created some algorithm using SymPy and would like it to become part of SymPy (so that others can easily use your code as well).

More information can be found in SympyDevelopment.

See also the list of contributors.









Hosted by Google Code