# Getting started with sympy

## Contents

# Getting started with `sympy`

¶

The package `sympy`

adds symbolic mathematical manipulation to the python ecosystem. Like other computational
algebra packages, it allows you to write expressions, simplify them, differentiate them and make substitutions.
Sympy is relatively lightweight and is completely open source so it is quite an attractive starting point if you
need to do some straightforward manipulations.

It is possible to have `sympy`

automatically generate code that you can include in other programs and, if you
are very ambitious, you can build in `sympy`

as a library into your own code !

The documentation for `sympy`

does assume some familiarity with computational algebra packages, you can
find it here https://docs.sympy.org/latest/index.html.

This is a quick summary of some things that a symbolic algebra module can give you

```
import sympy
import math
import numpy as np
```

## Symbols¶

Symbols are the building blocks of expressions and are defined like this

```
from sympy.core.symbol import Symbol
X = Symbol('x')
Y = Symbol('y')
psi = Symbol('\psi')
X + Y + psi
```

## Mathematical Functions¶

Symbols can be built into expressions using a collection of (the usual) mathematical functions and operators

```
S = sympy.sqrt(X)
S
```

```
phi = sympy.cos(X)**2 + sympy.sin(X)**2
phi
```

```
# But not ...
np.sin(S)
```

```
# and not ...
math.sin(S)
```

## Simplification and Subsitution¶

Since we are working with abstract symbols, we can simplify expressions but we cannot, in general, evaluate them unless we subsitute values for the symbols:

```
phi.simplify()
```

```
S.subs(X, 8)
```

```
S.subs(X, -8)
```

```
np.sqrt(-8)
```