# Symbolic computation with Python, SymPy

**
Shekhar Prasad Rajak (~Shekharrajak)
** |
** **

# 3

**Description:**

In this tutorial we will introduce attendees to SymPy, a computer aided algebra system (CAS) written in Python. We will show basics of constructing and manipulating mathematical expressions in SymPy, the most common issues and differences from other computer algebra systems, and how to deal with them. We will mostly show how to solve practical problems with SymPy and SymEngine. This will include showing how to interface SymPy with popular numeric libraries like NumPy.

Attendees will take home an introductory level understanding of SymPy. This knowledge should be enough for attendees to start using SymPy for solving mathematical problems and hacking SymPy's internals (though hacking core modules may require additional expertise).

SymPy is a pure 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. The tutorial will cover the following topics and more.

```
Introduction
What is Symbolic Computation?
A More Interesting Example
The Power of Symbolic Computation
Why SymPy?
Gotchas
Symbols
Equals signs
Two Final Notes: ^ and /
Basic Operations
Substitution
Converting Strings to SymPy Expressions
evalf
lambdify
Printing
Printers
Setting up Pretty Printing
Printing Functions
Simplification
simplify
Polynomial/Rational Function Simplification
Trigonometric Simplification
Powers
Exponentials and logarithms
Special Functions
Calculus
Derivatives
Integrals
Limits
Series Expansion
Finite differences
Solvers
A Note about Equations
Solving Equations Algebraically
Solving Differential Equations
Matrices
Basic Operations
Basic Methods
Matrix Constructors
Advanced Methods
Advanced Expression Manipulation
Understanding Expression Trees
Recursing through an Expression Tree
```

**Prerequisites:**

The tutorial will only assume a basic knowledge of Python. No prior knowledge of SymPy or other Python libraries is required, although it is suggested that attendees be familiar with the IPython notebook. A mathematical knowledge of calculus is recommended.

We recommend that the attendees install the Anaconda Python distribution which includes SymPy, NumPy, and IPython. Once Anaconda is installed simply type the following in a terminal to install the necessary packages:

`$ conda install numpy ipython-notebook sympy`

Other alternative installation instructions can be found here: http://docs.sympy.org/dev/install.html

**Content URLs:**

SymPy team has developed and delivered many talks and tutorials at SciPy and other conferences. We are constantly building on new content and improving the present at the same time. The website for the workshop at PyCon India 2015 is here. You can find the introduction slides here, the sphinx tutorial here and the exercises in form of IPython notebooks here. Note: that the notebooks are hosted statically, you can download from here and run locally to have an interactive session.

**Speaker Info:**

SymPy India developers will be conducting the workshop:

- Sartaj Singh : IIT-BHU Varanasi | Core Developer at SymPy, GSoC 2015 | Series
- Gaurav Dhingra : IIT Roorkee |Core Developer at SymPy, GSoC 2016 | Group Theory
- Nishant Nikhil : IIT Kharagpur | Core Developer at SymPy/SymEngine GSoC 2016 | Sets
- Sampad Kumar Saha : IIT Kharagpur | Core Developer at SymPy GSoC 2016 | Singularity Function and Beam Bending Module
- Kshitij Saraogi : IIT Kharagpur | Core Developer at SymPy GSoC 2016 | Solvers, Sets
- Shekhar Prasad Rajak : NIT Warangal | Core Developer at SymPy GSoC 2016 | Solvers, Sets

**Speaker Links:**

- Resource repository: https://github.com/Shekharrajak/PyCon-SymPy
- SymPy website: http://www.sympy.org/en/index.html
- SymPy live: http://live.sympy.org/
- GitHub repository: https://github.com/sympy/sympy