On peut différentier (dériver) toute expression, par diff(fonction, variable) :
>>> from sympy import *
>>> x = Symbol('x')
>>> diff(sin(x), x)
cos(x)
>>> diff(sin(2*x), x)
2*cos(2*x)
>>> diff(tan(x), x)
cos(x)**(-2)
On peut vérifier ces résultats en utilisant le taux d'accroissement :
>>> limit((tan(x+y)-tan(x))/y, y, 0) cos(x)**(-2)
On peut encore calculer des dérivées multiples par diff(fonc, var, n) :
>>> diff(sin(2*x), x, 1) 2*cos(2*x) >>> diff(sin(2*x), x, 2) -4*sin(2*x) >>> diff(sin(2*x), x, 3) -8*cos(2*x)
Pour calculer une primitive, procéder ainsi :
>>> from sympy import *
>>> x, y = symbols('xy')
>>> integrate(6*x**5, x)
x**6
>>> integrate(sin(x), x)
-cos(x)
>>> integrate(log(x), x)
x*log(x) - x
>>> integrate(2*x + sinh(x), x)
x**2 + cosh(x)
>>> integrate(exp(-x**2)*erf(x), x)
(1/4)*pi**(1/2)*erf(x)**2
On peut calculer des intégrales avec sympy :
>>> integrate(x**3, (x, -1, 1)) 0 >>> integrate(sin(x), (x, 0, pi/2)) 1 >>> integrate(cos(x), (x, -pi/2, pi/2)) 2
Les intégrales impropres sont aussi définies :
>>> integrate(exp(-x), (x, 0, oo)) 1 >>> integrate(log(x), (x, 0, 1)) -1
Pour faire un développement limité, on utilise la méthode .series(var, point, ordre) :
>>> from sympy import *
>>> x = Symbol('x')
>>> cos(x).series(x, 0, 10)
1 - 1/2*x**2 + (1/24)*x**4 - 1/720*x**6 + (1/40320)*x**8 + O(x**10)
>>> (1/cos(x)).series(x, 0, 10)
1 + (1/2)*x**2 + (5/24)*x**4 + (61/720)*x**6 + (277/8064)*x**8 + O(x**10)
Autre exemple simple, incluant un "bel" affichage :
>>> from sympy import Integral, Symbol, pprint
>>> x = Symbol("x")
>>> y = Symbol("y")
>>> e = 1/(x + y)
>>> s = e.series(x, 0, 5)
>>> print(s)
1/y + x**2*y**(-3) + x**4*y**(-5) - x*y**(-2) - x**3*y**(-4) + O(x**5)
>>> pprint(s)
2 4 3
1 x x x x
─ + ── + ── - ── - ── + O(x**5)
y 3 5 2 4
y y y y
On peut résoudre des équations différentielles avec sympy :
>>> from sympy import *
>>> f=Function('f')
>>> f(x).diff(x, x) + f(x)
D(f(x), x, x) + f(x)
>>> dsolve(f(x).diff(x, x) + f(x), f(x))
C1*sin(x) + C2*cos(x)