# DMelt:Symbolic/5 SimPy

Limitted access. First login to DataMelt if you are a full DataMelt member. Then login to HandWiki as a user.

## Using SimPy engine

SimPy is a pure Python library and this means you might find it a bit slower than using the pure-Java calculations based on Jasymca. Let us show a simple SymPy example. Start DataMelt IDE and type:

```from sympy import *
var('x y')
Rational(3,2)*pi + exp(I*x) / (x**2 + y)```

The output of this code is

`(3/2)*pi + 1/(y + x**2)*exp(I*x)`

Look at other SymPy example in this wiki.

Check out a few other examples:

### Calculate an integral

```from sympy import *
var('x')
integrate(x**2 * cos(x), x)```

The output is:

`-2*sin(x) + x**2*sin(x) + 2*x*cos(x)`

### Solve an equation

```from sympy import *
var('x y')
solve([Eq(x + 5*y, 2), Eq(-3*x + 6*y, 15)], [x, y])```

The output is:

`{x: -3, y: 1}`

### Integration

DataMelt extends SimPy and integrates it into Java. Below we show an advanced example of how to plot a function and its differential on the same plot.

```from java.awt import Color
from jhplot  import *

c1 = HPlot("Canvas")
c1.setAutoRange()
c1.setGTitle("Differential", Color.red)
c1.setNameX("Xaxis")
c1.setNameY("Yaxis")
c1.setName("Canvas title")
c1.visible()
c1.setAutoRange()

func="2*exp(-x*x/50)+sin(pi*x)/x"
f1 = F1D(func, 1.0, 10.0)
c1.draw(f1)

from sympy import *
x = Symbol('x')
a=diff(S(func), x)
f2 = F1D(str(a), 1.0, 10.0)
f2.setTitle("Differential")
f2.setColor(Color.green)
c1.draw(f2)
c1.export("figure.pdf")```

The output figure is shown below: 